commit 7f2811a1f7310467a380adce38c552ab97c4b431 Author: risadmin_prod Date: Tue Oct 8 11:00:15 2024 +0000 base_project diff --git a/pro103ab-back-b/authsec_springboot/.gitignore b/pro103ab-back-b/authsec_springboot/.gitignore new file mode 100644 index 0000000..ddfde45 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/.gitignore @@ -0,0 +1,3 @@ + +.DS_Store +backend/src/.DS_Store diff --git a/pro103ab-back-b/authsec_springboot/backend/.classpath b/pro103ab-back-b/authsec_springboot/backend/.classpath new file mode 100644 index 0000000..39abf1c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.classpath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/.factorypath b/pro103ab-back-b/authsec_springboot/backend/.factorypath new file mode 100644 index 0000000..fb0cfbd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.factorypath @@ -0,0 +1,314 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/.project b/pro103ab-back-b/authsec_springboot/backend/.project new file mode 100644 index 0000000..b02cd1e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.project @@ -0,0 +1,28 @@ + + + app + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.springframework.ide.eclipse.boot.validation.springbootbuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..abdea9a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +encoding//src/main/java=UTF-8 +encoding//src/main/resources=UTF-8 +encoding/=UTF-8 diff --git a/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..dfa4f3a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,4 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=true +org.eclipse.jdt.apt.genSrcDir=target/generated-sources/annotations +org.eclipse.jdt.apt.genTestSrcDir=target/generated-test-sources/test-annotations diff --git a/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..90b69d4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,10 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.methodParameters=generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.compliance=1.8 +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore +org.eclipse.jdt.core.compiler.processAnnotations=enabled +org.eclipse.jdt.core.compiler.release=disabled +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..b59238f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles=builder +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/pro103ab-back-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs b/pro103ab-back-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs new file mode 100644 index 0000000..a12794d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.settings/org.springframework.ide.eclipse.prefs @@ -0,0 +1,2 @@ +boot.validation.initialized=true +eclipse.preferences.version=1 diff --git a/pro103ab-back-b/authsec_springboot/backend/.swagger-codegen-ignore b/pro103ab-back-b/authsec_springboot/backend/.swagger-codegen-ignore new file mode 100644 index 0000000..19d3377 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/.swagger-codegen-ignore @@ -0,0 +1,23 @@ +# Swagger Codegen Ignore +# Generated by swagger-codegen https://github.com/swagger-api/swagger-codegen + +# Use this file to prevent files from being overwritten by the generator. +# The patterns follow closely to .gitignore or .dockerignore. + +# As an example, the C# client generator defines ApiClient.cs. +# You can make changes and tell Swagger Codgen to ignore just this file by uncommenting the following line: +#ApiClient.cs + +# You can match any string of characters against a directory, file or extension with a single asterisk (*): +#foo/*/qux +# The above matches foo/bar/qux and foo/baz/qux, but not foo/bar/baz/qux + +# You can recursively match patterns against a directory, file or extension with a double asterisk (**): +#foo/**/qux +# Thsi matches foo/bar/qux, foo/baz/qux, and foo/bar/baz/qux + +# You can also negate patterns with an exclamation (!). +# For example, you can ignore all files in a docs folder with the file extension .md: +#docs/*.md +# Then explicitly reverse the ignore rule for a single file: +#!docs/README.md diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/ConnectorController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/ConnectorController.java new file mode 100644 index 0000000..9f04c2b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/ConnectorController.java @@ -0,0 +1,79 @@ +package com.realnet.Connector.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Repository.Connectorrepository; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/connector") +public class ConnectorController { + + @Autowired + private Connectorrepository connectorrepository; + @Autowired + private AppUserServiceImpl userService; + + + //ADD DATA + @PostMapping("/Connectorjson") + public ResponseEntity save(@RequestBody Connector connector) { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + connector.setAccountId(account_id); + Connector save = connectorrepository.save(connector); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //UPDATE BY ID + @PutMapping("/Connectorjson/{id}") + public ResponseEntity update(@PathVariable Long id, @RequestBody Connector connector) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + con.setName(connector.getName()); + con.setConnector_json(connector.getConnector_json()); + + Connector save = connectorrepository.save(con); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET ALL + @GetMapping("/Connectorjson") + public ResponseEntity getall() { + List save = connectorrepository.findAll(); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET BY ID + @GetMapping("/Connectorjson/{id}") + public ResponseEntity getbyid(@PathVariable Long id) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + return new ResponseEntity<>(con, HttpStatus.OK); + + } + + //DELETE BY ID + @DeleteMapping("/Connectorjson/{id}") + public void delete(@PathVariable Long id){ + Connector con = connectorrepository.findById(id).orElseThrow(null); + connectorrepository.delete(con); + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/MappingController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/MappingController.java new file mode 100644 index 0000000..aec54be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Controller/MappingController.java @@ -0,0 +1,81 @@ +package com.realnet.Connector.Controller; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Entity.Mapping; +import com.realnet.Connector.Repository.Connectorrepository; + +@RestController +@RequestMapping("/token/connector/mapping") +public class MappingController { + + @Autowired + private Connectorrepository connectorrepository; + + @PostMapping("/mapping") + public Object connector(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str =mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + //get key from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String key = entry.getKey(); + String string = key.toString(); + list.add(string); + } + return list; + +} + @PostMapping("/mapping1") + public Object connector1(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str =mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + //get values from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String string2 = entry.getValue().getAsString(); + list.add(string2); + } + return list; + +} + //get api for call connector by name for job(by gk) + @GetMapping("/connectorname/{name}") + public ResponseEntity getconnector(@PathVariable String name) { + Connector save = connectorrepository.findconnectorbyname(name); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Connector.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Connector.java new file mode 100644 index 0000000..8de5289 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Connector.java @@ -0,0 +1,33 @@ +package com.realnet.Connector.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Column; + +import com.realnet.Dashboard1.Entity.dashbord_Who_collumn; + +import lombok.Data; + +@Entity +@Data +public class Connector extends dashbord_Who_collumn { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + @Column(length = 15000) + private String get_str; + @Lob + private String connector_json; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Mapping.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Mapping.java new file mode 100644 index 0000000..0e23d56 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Entity/Mapping.java @@ -0,0 +1,9 @@ +package com.realnet.Connector.Entity; + +import lombok.Data; + +@Data +public class Mapping { + + private String mappingString; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Repository/Connectorrepository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Repository/Connectorrepository.java new file mode 100644 index 0000000..1d83c69 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aa/Connector/Repository/Connectorrepository.java @@ -0,0 +1,15 @@ +package com.realnet.Connector.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Connector.Entity.Connector; +@Repository +public interface Connectorrepository extends JpaRepository{ + + + @Query(value = "select * from connector where name=?1", nativeQuery = true) + Connector findconnectorbyname(String name); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/404.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/404.html new file mode 100644 index 0000000..14f0af7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/404.html @@ -0,0 +1,61 @@ + + + + + + + Error || Final + + + + + + + + + + + + + +
+
+

404

+

page not found

+
+
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/about.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/about.html new file mode 100644 index 0000000..2e5af22 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/about.html @@ -0,0 +1,115 @@ + + + + + + + About || Final + + + + + + + + + + + + + +
+
+
+

I'm baby coloring book poke taxidermy

+

+ Taxidermy forage glossier letterpress heirloom before they sold out + you probably haven't heard of them banh mi biodiesel chia. +

+

+ Taiyaki tumblr flexitarian jean shorts brunch, aesthetic salvia + retro. +

+ contact +
+ + Person Pouring Salt in Bowl +
+ +
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/about.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/about.jpeg new file mode 100644 index 0000000..6539080 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/about.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/favicon.ico b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/favicon.ico new file mode 100644 index 0000000..b8fecd8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/favicon.ico differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/logo.svg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/logo.svg new file mode 100644 index 0000000..3daa6a4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/main.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/main.jpeg new file mode 100644 index 0000000..4420530 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/main.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-1.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-1.jpeg new file mode 100644 index 0000000..85b4ab6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-1.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-2.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-2.jpeg new file mode 100644 index 0000000..2a5109e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-2.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-3.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-3.jpeg new file mode 100644 index 0000000..02f0bee Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-3.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-4.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-4.jpeg new file mode 100644 index 0000000..63c2bb7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/assets/recipes/recipe-4.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/contact.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/contact.html new file mode 100644 index 0000000..b396f23 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/contact.html @@ -0,0 +1,129 @@ + + + + + + + Contact || Final + + + + + + + + + + + + + +
+
+
+

Want To Get In Touch?

+

+ Four dollar toast biodiesel plaid salvia actually pickled banjo + bespoke mlkshk intelligentsia edison bulb synth. +

+

Cardigan prism bicycle rights put a bird on it deep v.

+

+ Hashtag swag health goth air plant, raclette listicle fingerstache + cold-pressed fanny pack bicycle rights cardigan poke. +

+
+
+
+
+ + +
+
+ + +
+
+ + +
+ +
+
+
+ + +
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/main.css b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/main.css new file mode 100644 index 0000000..e7f936c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/main.css @@ -0,0 +1,746 @@ +*, +::after, +::before { + box-sizing: border-box; +} +/* fonts */ + +@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;600&family=Montserrat&display=swap'); +html { + font-size: 100%; +} /*16px*/ + +:root { + /* colors */ + --primary-100: #e2e0ff; + --primary-200: #c1beff; + --primary-300: #a29dff; + --primary-400: #837dff; + --primary-500: #645cff; + --primary-600: #504acc; + --primary-700: #3c3799; + --primary-800: #282566; + --primary-900: #141233; + + /* grey */ + --grey-50: #f8fafc; + --grey-100: #f1f5f9; + --grey-200: #e2e8f0; + --grey-300: #cbd5e1; + --grey-400: #94a3b8; + --grey-500: #64748b; + --grey-600: #475569; + --grey-700: #334155; + --grey-800: #1e293b; + --grey-900: #0f172a; + /* rest of the colors */ + --black: #222; + --white: #fff; + --red-light: #f8d7da; + --red-dark: #842029; + --green-light: #d1e7dd; + --green-dark: #0f5132; + + /* fonts */ + --headingFont: 'Roboto', sans-serif; + --bodyFont: 'Nunito', sans-serif; + --smallText: 0.7em; + /* rest of the vars */ + --backgroundColor: var(--grey-50); + --textColor: var(--grey-900); + --borderRadius: 0.25rem; + --letterSpacing: 1px; + --transition: 0.3s ease-in-out all; + --max-width: 1120px; + --fixed-width: 600px; + + /* box shadow*/ + --shadow-1: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + --shadow-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1), + 0 4px 6px -2px rgba(0, 0, 0, 0.05); + --shadow-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1), + 0 10px 10px -5px rgba(0, 0, 0, 0.04); +} + +body { + background: var(--backgroundColor); + font-family: var(--bodyFont); + font-weight: 400; + line-height: 1.75; + color: var(--textColor); +} + +p { + margin-top: 0; + margin-bottom: 1.5rem; + max-width: 40em; +} + +h1, +h2, +h3, +h4, +h5 { + margin: 0; + margin-bottom: 1.38rem; + font-family: var(--headingFont); + font-weight: 400; + line-height: 1.3; + text-transform: capitalize; + letter-spacing: var(--letterSpacing); +} + +h1 { + margin-top: 0; + font-size: 3.052rem; +} + +h2 { + font-size: 2.441rem; +} + +h3 { + font-size: 1.953rem; +} + +h4 { + font-size: 1.563rem; +} + +h5 { + font-size: 1.25rem; +} + +small, +.text-small { + font-size: var(--smallText); +} + +a { + text-decoration: none; +} +ul { + list-style-type: none; + padding: 0; +} + +.img { + width: 100%; + display: block; + object-fit: cover; +} +/* buttons */ + +.btn { + cursor: pointer; + color: var(--white); + background: var(--primary-500); + border: transparent; + border-radius: var(--borderRadius); + letter-spacing: var(--letterSpacing); + padding: 0.375rem 0.75rem; + box-shadow: var(--shadow-1); + transition: var(--transtion); + text-transform: capitalize; + display: inline-block; +} +.btn:hover { + background: var(--primary-700); + box-shadow: var(--shadow-3); +} +.btn-hipster { + color: var(--primary-500); + background: var(--primary-200); +} +.btn-hipster:hover { + color: var(--primary-200); + background: var(--primary-700); +} +.btn-block { + width: 100%; +} + +/* alerts */ +.alert { + padding: 0.375rem 0.75rem; + margin-bottom: 1rem; + border-color: transparent; + border-radius: var(--borderRadius); +} + +.alert-danger { + color: var(--red-dark); + background: var(--red-light); +} +.alert-success { + color: var(--green-dark); + background: var(--green-light); +} +/* form */ + +.form { + width: 90vw; + max-width: var(--fixed-width); + background: var(--white); + border-radius: var(--borderRadius); + box-shadow: var(--shadow-2); + padding: 2rem 2.5rem; + margin: 3rem auto; +} +.form-label { + display: block; + font-size: var(--smallText); + margin-bottom: 0.5rem; + text-transform: capitalize; + letter-spacing: var(--letterSpacing); +} +.form-input, +.form-textarea { + width: 100%; + padding: 0.375rem 0.75rem; + border-radius: var(--borderRadius); + background: var(--backgroundColor); + border: 1px solid var(--grey-200); +} + +.form-row { + margin-bottom: 1rem; +} + +.form-textarea { + height: 7rem; +} +::placeholder { + font-family: inherit; + color: var(--grey-400); +} +.form-alert { + color: var(--red-dark); + letter-spacing: var(--letterSpacing); + text-transform: capitalize; +} +/* alert */ + +@keyframes spinner { + to { + transform: rotate(360deg); + } +} + +.loading { + width: 6rem; + height: 6rem; + border: 5px solid var(--grey-400); + border-radius: 50%; + border-top-color: var(--primary-500); + animation: spinner 0.6s linear infinite; +} +.loading { + margin: 0 auto; +} +/* title */ + +.title { + text-align: center; +} + +.title-underline { + background: var(--primary-500); + width: 7rem; + height: 0.25rem; + margin: 0 auto; + margin-top: -1rem; +} + +/* +=============== +Navbar +=============== +*/ + +.navbar { + display: flex; + align-items: center; + justify-content: center; +} +.nav-center { + width: 90vw; + max-width: var(--max-width); +} +.nav-header { + height: 6rem; + display: flex; + justify-content: space-between; + align-items: center; +} +.nav-header img { + width: 200px; +} +.nav-logo { + display: flex; + align-items: flex-end; +} + +.nav-btn { + padding: 0.15rem 0.75rem; +} +.nav-btn i { + font-size: 1.25rem; +} +.nav-links { + height: 0; + overflow: hidden; + display: flex; + flex-direction: column; + transition: var(--transition); +} +.show-links { + height: 23.9375rem; +} + +.nav-link { + display: block; + text-align: center; + font-size: 1.25rem; + text-transform: capitalize; + color: var(--grey-900); + letter-spacing: var(--letterSpacing); + padding: 1rem 0; + border-top: 1px solid var(--grey-500); + transition: var(--transition); +} +.nav-link:hover { + color: var(--primary-500); +} + +.contact-link a { + padding: 0.15rem 1rem; +} + +@media screen and (min-width: 992px) { + .navbar { + height: 6rem; + } + .nav-center { + display: flex; + align-items: center; + } + .nav-header { + padding: 0; + margin-right: 2rem; + height: auto; + } + + .nav-btn { + display: none; + } + .nav-links { + height: auto !important; + flex-direction: row; + align-items: center; + width: 100%; + } + .nav-link { + padding: 0; + border-top: none; + margin-right: 1rem; + font-size: 1rem; + } + .contact-link { + margin-right: 0; + margin-left: auto; + } +} +/* +=============== +Page +=============== +*/ + +.page { + width: 90vw; + max-width: var(--max-width); + margin: 0 auto; +} +.page { + padding-top: 2rem; + min-height: calc(100vh - (6rem + 4rem)); +} +/* +=============== +Footer +=============== +*/ + +.page-footer { + text-align: center; + height: 4rem; + display: flex; + align-items: center; + justify-content: center; + background: var(--black); + color: var(--white); +} +.page-footer h5 { + margin-top: 0; + margin-bottom: 0; +} +.page-footer p { + margin-bottom: 0; +} +.page-footer .footer-logo, +.page-footer a { + color: var(--primary-500); +} +/* +=============== +Hero +=============== +*/ + +.hero { + height: 40vh; + position: relative; + margin-bottom: 2rem; + background: url('../assets/main.jpeg') center/cover no-repeat; + border-radius: var(--borderRadius); +} +.hero-container { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + background: rgba(0, 0, 0, 0.4); + border-radius: var(--borderRadius); +} +.hero-text { + color: var(--white); + text-align: center; +} + +@media only screen and (min-width: 768px) { + .hero-text h1 { + font-size: 4rem; + margin-bottom: 0; + } +} + +/* +=============== +Recipes +=============== +*/ + +.recipes-container { + display: grid; + gap: 2rem 1rem; +} + +.recipes-list { + display: grid; + gap: 2rem 1rem; + padding-bottom: 3rem; +} +.tags-container { + order: 1; + display: flex; + flex-direction: column; + padding-bottom: 3rem; + /* background: blue; */ +} +.tags-container h4 { + margin-bottom: 0.5rem; + font-weight: 500; +} +.tags-list { + display: grid; + grid-template-columns: 1fr 1fr 1fr; +} +.tags-list a { + text-transform: capitalize; + display: block; + color: var(--grey-500); + transition: var(--transition); +} +.tags-list a:hover { + color: var(--primary-500); +} +.recipe { + display: block; +} +.recipe-img { + height: 15rem; + border-radius: var(--borderRadius); + margin-bottom: 1rem; +} +.recipe h5 { + margin-bottom: 0; + margin-top: 0.25rem; + line-height: 1; + color: var(--grey-700); +} +.recipe p { + margin-bottom: 0; + line-height: 1; + color: var(--grey-500); + margin-top: 0.5rem; + letter-spacing: var(--letterSpacing); +} +@media screen and (min-width: 576px) { + .recipes-list { + grid-template-columns: 1fr 1fr; + } + .recipe-img { + height: 10rem; + } +} + +@media screen and (min-width: 992px) { + .recipes-container { + grid-template-columns: 200px 1fr; + gap: 1rem; + } + .recipes-list { + grid-template-columns: 1fr 1fr; + } + + .recipe p { + font-size: 0.85rem; + } + .tags-container { + order: 0; + /* background: blue; */ + } + .tags-list { + display: grid; + grid-template-columns: 1fr; + } +} + +@media screen and (min-width: 1200px) { + .recipe h5 { + font-size: 1.15rem; + } + .recipes-list { + grid-template-columns: 1fr 1fr 1fr; + } +} +/* +=============== +Error +=============== +*/ +.error-page { + text-align: center; + padding-top: 5rem; +} +.error-page h1 { + font-size: 9rem; +} +/* +=============== +About Page +=============== +*/ + +.about-page h2 { + text-transform: none; + font-weight: bold; +} +.about-page { + display: grid; + gap: 2rem 4rem; + padding-bottom: 3rem; +} +.about-img { + border-radius: var(--borderRadius); + height: 300px; +} + +@media screen and (min-width: 992px) { + .about-page { + grid-template-columns: 1fr 1fr; + grid-template-rows: 400px; + align-items: center; + } + .about-img { + height: 100%; + } +} + +.featured-title { + text-align: center; +} +/* +=============== +Contact Page +=============== +*/ +.contact-form { + width: 100%; + margin: 0; +} +.contact-container { + display: grid; + gap: 2rem 3rem; + padding-bottom: 3rem; +} +@media screen and (min-width: 992px) { + .contact-container { + grid-template-columns: 1fr 450px; + align-items: center; + } +} + +/* +=============== +Tags Page +=============== +*/ + +.tags-wrapper { + display: grid; + gap: 2rem; + padding-bottom: 3rem; +} +.tag { + background: var(--grey-500); + border-radius: var(--borderRadius); + text-align: center; + color: var(--white); + transition: var(--transition); + padding: 0.75rem 0; +} +.tag:hover { + background: var(--primary-500); +} +.tag h5, +.tag p { + margin-bottom: 0; +} +.tag h5 { + font-weight: 600; +} +@media screen and (min-width: 576px) { + .tags-wrapper { + grid-template-columns: 1fr 1fr; + } +} +@media screen and (min-width: 992px) { + .tags-wrapper { + grid-template-columns: 1fr 1fr 1fr; + } +} + +/* +=============== +Recipe Template +=============== +*/ + +.recipe-hero { + display: grid; + gap: 3rem; +} + +.recipe-hero-img { + height: 300px; + border-radius: var(--borderRadius); +} +.recipe-info p { + color: var(--grey-600); +} +.recipe-icons { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 1rem; + margin: 2rem 0; + text-align: center; +} +.recipe-icons i { + font-size: 1.5rem; + color: var(--primary-500); +} +.recipe-icons h5, +.recipe-icons p { + margin-bottom: 0; + font-size: 0.85em; +} + +.recipe-icons p { + color: var(--grey-600); +} +.recipe-tags { + display: flex; + align-items: center; + flex-wrap: wrap; + font-size: 0.7em; + font-weight: 600; +} +.recipe-tags a { + background: var(--primary-500); + border-radius: var(--borderRadius); + color: var(--white); + padding: 0.05rem 0.5rem; + margin: 0 0.25rem; + text-transform: capitalize; +} +@media screen and (min-width: 992px) { + .recipe-hero { + grid-template-columns: 4fr 5fr; + align-items: center; + } +} +.recipe-content { + padding: 3rem 0; + display: grid; + gap: 2rem 5rem; +} +@media screen and (min-width: 992px) { + .recipe-content { + grid-template-columns: 2fr 1fr; + } +} +.single-instruction header { + display: grid; + grid-template-columns: auto 1fr; + gap: 1.5rem; + align-items: center; +} +.single-instruction header p { + text-transform: uppercase; + font-weight: 600; + color: var(--primary-500); + margin-bottom: 0; +} +.single-instruction > p { + color: var(--grey-700); +} + +.single-instruction header div { + height: 2px; + background: var(--grey-300); +} + +.second-column { + display: grid; + row-gap: 2rem; +} + +.single-ingredient { + border-bottom: 2px solid var(--grey-300); + padding-bottom: 0.75rem; + color: var(--grey-700); +} +.single-tool { + border-bottom: 2px solid var(--grey-300); + padding-bottom: 0.75rem; + color: var(--primary-500); + text-transform: capitalize; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/normalize.css b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/normalize.css new file mode 100644 index 0000000..2768db4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/css/normalize.css @@ -0,0 +1,351 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type='button']:-moz-focusring, +[type='reset']:-moz-focusring, +[type='submit']:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type='checkbox'], +[type='radio'] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/index.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/index.html new file mode 100644 index 0000000..1c90443 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/index.html @@ -0,0 +1,130 @@ + + + + + + + Simply Recipes || Final + + + + + + + + + + + + + + +
+ +
+
+
+

simply recipes

+

no fluff, just recipes

+
+
+
+ +
+ +
+

recipes

+ +
+ + + + +
+
+ + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/js/app.js b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/js/app.js new file mode 100644 index 0000000..d20828d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/js/app.js @@ -0,0 +1,19 @@ +const getElement = (selector) => { + const element = document.querySelector(selector) + + if (element) return element + throw Error( + `Please double check your class names, there is no ${selector} class` + ) +} + +const links = getElement('.nav-links') +const navBtnDOM = getElement('.nav-btn') + +navBtnDOM.addEventListener('click', () => { + links.classList.toggle('show-links') +}) + +const date = getElement('#date') +const currentYear = new Date().getFullYear() +date.textContent = currentYear diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/recipes.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/recipes.html new file mode 100644 index 0000000..2b6f379 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/recipes.html @@ -0,0 +1,119 @@ + + + + + + + Recipes || Final + + + + + + + + + + + + + + +
+
+ +
+

recipes

+ +
+ + + +
+
+ + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/single-recipe.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/single-recipe.html new file mode 100644 index 0000000..32aa9e7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/single-recipe.html @@ -0,0 +1,159 @@ + + + + + + + Single Recipe || Final + + + + + + + + + + + + + +
+
+
+ +
+

Banana Pancakes

+

+ Shabby chic humblebrag banh mi bushwick, banjo kale chips + meggings. Cred selfies sartorial, cloud bread disrupt blue bottle + seitan. Dreamcatcher tousled bitters, health goth vegan venmo + whatever street art lyft shabby chic pitchfork beard. Drinking + vinegar poke tbh, iPhone coloring book polaroid truffaut tousled + ramps pug trust fund letterpress. Portland four loko austin + chicharrones bitters single-origin coffee. Leggings letterpress + occupy pour-over. +

+
+
+ +
prep time
+

30 min.

+
+
+ +
cook time
+

15 min.

+
+
+ +
serving
+

6 servings

+
+
+

+ Tags : beef + breakfast + pancakes + food +

+
+
+ +
+
+

instructions

+ +
+
+

step 1

+
+
+

+ I'm baby mustache man braid fingerstache small batch venmo + succulents shoreditch. +

+
+ + +
+
+

step 2

+
+
+

+ Pabst pitchfork you probably haven't heard of them, asymmetrical + seitan tousled succulents wolf banh mi man bun bespoke selfies + freegan ethical hexagon. +

+
+ + +
+
+

step 3

+
+
+

+ Polaroid iPhone bitters chambray. Cornhole swag kombucha + live-edge. +

+
+ +
+
+
+

ingredients

+

1 1/2 cups dry pancake mix

+

1/2 cup flax seed meal

+

1 cup skim milk

+
+
+

tools

+

Hand Blender

+

Large Heavy Pot With Lid

+

Measuring Spoons

+

Measuring Cups

+
+
+
+
+
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tag-template.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tag-template.html new file mode 100644 index 0000000..c07ce44 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tag-template.html @@ -0,0 +1,109 @@ + + + + + + + Recipe Template || Final + + + + + + + + + + + + + +
+ + +
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tags.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tags.html new file mode 100644 index 0000000..50caf75 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/final/tags.html @@ -0,0 +1,89 @@ + + + + + + + Tags || Final + + + + + + + + + + + + + +
+
+ + +
beef
+

1 recipe

+
+ + + +
breakfast
+

2 recipe

+
+ + + +
carrots
+

3 recipe

+
+ + + +
dinner
+

4 recipe

+
+ + + +
food
+

1 recipe

+
+ +
+
+ + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/404.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/404.html new file mode 100644 index 0000000..e470aa0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/404.html @@ -0,0 +1,24 @@ + + + + + + + Error || Starter + + + + + + + + + + +

Error Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/about.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/about.html new file mode 100644 index 0000000..6bee1a1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/about.html @@ -0,0 +1,24 @@ + + + + + + + About || Starter + + + + + + + + + + +

About Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/about.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/about.jpeg new file mode 100644 index 0000000..6539080 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/about.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/favicon.ico b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/favicon.ico new file mode 100644 index 0000000..b8fecd8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/favicon.ico differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/logo.svg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/logo.svg new file mode 100644 index 0000000..3daa6a4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/logo.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/main.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/main.jpeg new file mode 100644 index 0000000..4420530 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/main.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-1.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-1.jpeg new file mode 100644 index 0000000..85b4ab6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-1.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-2.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-2.jpeg new file mode 100644 index 0000000..2a5109e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-2.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-3.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-3.jpeg new file mode 100644 index 0000000..02f0bee Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-3.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-4.jpeg b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-4.jpeg new file mode 100644 index 0000000..63c2bb7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/assets/recipes/recipe-4.jpeg differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/contact.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/contact.html new file mode 100644 index 0000000..e1195d0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/contact.html @@ -0,0 +1,24 @@ + + + + + + + Contact || Starter + + + + + + + + + + +

Contact Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/main.css b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/main.css new file mode 100644 index 0000000..74d7489 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/main.css @@ -0,0 +1,262 @@ +*, +::after, +::before { + box-sizing: border-box; +} +/* fonts */ + +@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;600&family=Montserrat&display=swap'); +html { + font-size: 100%; +} /*16px*/ + +:root { + /* colors */ + --primary-100: #e2e0ff; + --primary-200: #c1beff; + --primary-300: #a29dff; + --primary-400: #837dff; + --primary-500: #645cff; + --primary-600: #504acc; + --primary-700: #3c3799; + --primary-800: #282566; + --primary-900: #141233; + + /* grey */ + --grey-50: #f8fafc; + --grey-100: #f1f5f9; + --grey-200: #e2e8f0; + --grey-300: #cbd5e1; + --grey-400: #94a3b8; + --grey-500: #64748b; + --grey-600: #475569; + --grey-700: #334155; + --grey-800: #1e293b; + --grey-900: #0f172a; + /* rest of the colors */ + --black: #222; + --white: #fff; + --red-light: #f8d7da; + --red-dark: #842029; + --green-light: #d1e7dd; + --green-dark: #0f5132; + + /* fonts */ + --headingFont: 'Roboto', sans-serif; + --bodyFont: 'Nunito', sans-serif; + --smallText: 0.7em; + /* rest of the vars */ + --backgroundColor: var(--grey-50); + --textColor: var(--grey-900); + --borderRadius: 0.25rem; + --letterSpacing: 1px; + --transition: 0.3s ease-in-out all; + --max-width: 1120px; + --fixed-width: 600px; + + /* box shadow*/ + --shadow-1: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06); + --shadow-2: 0 4px 6px -1px rgba(0, 0, 0, 0.1), + 0 2px 4px -1px rgba(0, 0, 0, 0.06); + --shadow-3: 0 10px 15px -3px rgba(0, 0, 0, 0.1), + 0 4px 6px -2px rgba(0, 0, 0, 0.05); + --shadow-4: 0 20px 25px -5px rgba(0, 0, 0, 0.1), + 0 10px 10px -5px rgba(0, 0, 0, 0.04); +} + +body { + background: var(--backgroundColor); + font-family: var(--bodyFont); + font-weight: 400; + line-height: 1.75; + color: var(--textColor); +} + +p { + margin-top: 0; + margin-bottom: 1.5rem; + max-width: 40em; +} + +h1, +h2, +h3, +h4, +h5 { + margin: 0; + margin-bottom: 1.38rem; + font-family: var(--headingFont); + font-weight: 400; + line-height: 1.3; + text-transform: capitalize; + letter-spacing: var(--letterSpacing); +} + +h1 { + margin-top: 0; + font-size: 3.052rem; +} + +h2 { + font-size: 2.441rem; +} + +h3 { + font-size: 1.953rem; +} + +h4 { + font-size: 1.563rem; +} + +h5 { + font-size: 1.25rem; +} + +small, +.text-small { + font-size: var(--smallText); +} + +a { + text-decoration: none; +} +ul { + list-style-type: none; + padding: 0; +} + +.img { + width: 100%; + display: block; + object-fit: cover; +} +/* buttons */ + +.btn { + cursor: pointer; + color: var(--white); + background: var(--primary-500); + border: transparent; + border-radius: var(--borderRadius); + letter-spacing: var(--letterSpacing); + padding: 0.375rem 0.75rem; + box-shadow: var(--shadow-1); + transition: var(--transtion); + text-transform: capitalize; + display: inline-block; +} +.btn:hover { + background: var(--primary-700); + box-shadow: var(--shadow-3); +} +.btn-hipster { + color: var(--primary-500); + background: var(--primary-200); +} +.btn-hipster:hover { + color: var(--primary-200); + background: var(--primary-700); +} +.btn-block { + width: 100%; +} + +/* alerts */ +.alert { + padding: 0.375rem 0.75rem; + margin-bottom: 1rem; + border-color: transparent; + border-radius: var(--borderRadius); +} + +.alert-danger { + color: var(--red-dark); + background: var(--red-light); +} +.alert-success { + color: var(--green-dark); + background: var(--green-light); +} +/* form */ + +.form { + width: 90vw; + max-width: var(--fixed-width); + background: var(--white); + border-radius: var(--borderRadius); + box-shadow: var(--shadow-2); + padding: 2rem 2.5rem; + margin: 3rem auto; +} +.form-label { + display: block; + font-size: var(--smallText); + margin-bottom: 0.5rem; + text-transform: capitalize; + letter-spacing: var(--letterSpacing); +} +.form-input, +.form-textarea { + width: 100%; + padding: 0.375rem 0.75rem; + border-radius: var(--borderRadius); + background: var(--backgroundColor); + border: 1px solid var(--grey-200); +} + +.form-row { + margin-bottom: 1rem; +} + +.form-textarea { + height: 7rem; +} +::placeholder { + font-family: inherit; + color: var(--grey-400); +} +.form-alert { + color: var(--red-dark); + letter-spacing: var(--letterSpacing); + text-transform: capitalize; +} +/* alert */ + +@keyframes spinner { + to { + transform: rotate(360deg); + } +} + +.loading { + width: 6rem; + height: 6rem; + border: 5px solid var(--grey-400); + border-radius: 50%; + border-top-color: var(--primary-500); + animation: spinner 0.6s linear infinite; +} +.loading { + margin: 0 auto; +} +/* title */ + +.title { + text-align: center; +} + +.title-underline { + background: var(--primary-500); + width: 7rem; + height: 0.25rem; + margin: 0 auto; + margin-top: -1rem; +} + +/* +=============== +Navbar +=============== +*/ + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/normalize.css b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/normalize.css new file mode 100644 index 0000000..2768db4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/css/normalize.css @@ -0,0 +1,351 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type='button'], +[type='reset'], +[type='submit'] { + -webkit-appearance: button; +} + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type='button']:-moz-focusring, +[type='reset']:-moz-focusring, +[type='submit']:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type='checkbox'], +[type='radio'] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +[type='search'] { + -webkit-appearance: textfield; /* 1 */ + outline-offset: -2px; /* 2 */ +} + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/index.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/index.html new file mode 100644 index 0000000..e89a673 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/index.html @@ -0,0 +1,24 @@ + + + + + + + Simply Recipes || Starter + + + + + + + + + + +

Home Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/js/app.js b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/js/app.js new file mode 100644 index 0000000..d20828d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/js/app.js @@ -0,0 +1,19 @@ +const getElement = (selector) => { + const element = document.querySelector(selector) + + if (element) return element + throw Error( + `Please double check your class names, there is no ${selector} class` + ) +} + +const links = getElement('.nav-links') +const navBtnDOM = getElement('.nav-btn') + +navBtnDOM.addEventListener('click', () => { + links.classList.toggle('show-links') +}) + +const date = getElement('#date') +const currentYear = new Date().getFullYear() +date.textContent = currentYear diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/recipes.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/recipes.html new file mode 100644 index 0000000..f352042 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/recipes.html @@ -0,0 +1,24 @@ + + + + + + + Recipes || Starter + + + + + + + + + + +

Recipes Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/single-recipe.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/single-recipe.html new file mode 100644 index 0000000..6cfc261 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/single-recipe.html @@ -0,0 +1,24 @@ + + + + + + + Single Recipe || Starter + + + + + + + + + + +

Single Recipe Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tag-template.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tag-template.html new file mode 100644 index 0000000..41cc413 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tag-template.html @@ -0,0 +1,24 @@ + + + + + + + Beef|| Starter + + + + + + + + + + +

Tag Template Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tags.html b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tags.html new file mode 100644 index 0000000..83422e6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/aha/html-css-simply-recipes-main/starter/tags.html @@ -0,0 +1,24 @@ + + + + + + + Tags || Starter + + + + + + + + + + +

Tags Page

+ + + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/ConnectorController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/ConnectorController.java new file mode 100644 index 0000000..9f04c2b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/ConnectorController.java @@ -0,0 +1,79 @@ +package com.realnet.Connector.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Repository.Connectorrepository; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/connector") +public class ConnectorController { + + @Autowired + private Connectorrepository connectorrepository; + @Autowired + private AppUserServiceImpl userService; + + + //ADD DATA + @PostMapping("/Connectorjson") + public ResponseEntity save(@RequestBody Connector connector) { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + connector.setAccountId(account_id); + Connector save = connectorrepository.save(connector); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //UPDATE BY ID + @PutMapping("/Connectorjson/{id}") + public ResponseEntity update(@PathVariable Long id, @RequestBody Connector connector) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + con.setName(connector.getName()); + con.setConnector_json(connector.getConnector_json()); + + Connector save = connectorrepository.save(con); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET ALL + @GetMapping("/Connectorjson") + public ResponseEntity getall() { + List save = connectorrepository.findAll(); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET BY ID + @GetMapping("/Connectorjson/{id}") + public ResponseEntity getbyid(@PathVariable Long id) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + return new ResponseEntity<>(con, HttpStatus.OK); + + } + + //DELETE BY ID + @DeleteMapping("/Connectorjson/{id}") + public void delete(@PathVariable Long id){ + Connector con = connectorrepository.findById(id).orElseThrow(null); + connectorrepository.delete(con); + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/MappingController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/MappingController.java new file mode 100644 index 0000000..aec54be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Controller/MappingController.java @@ -0,0 +1,81 @@ +package com.realnet.Connector.Controller; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Entity.Mapping; +import com.realnet.Connector.Repository.Connectorrepository; + +@RestController +@RequestMapping("/token/connector/mapping") +public class MappingController { + + @Autowired + private Connectorrepository connectorrepository; + + @PostMapping("/mapping") + public Object connector(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str =mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + //get key from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String key = entry.getKey(); + String string = key.toString(); + list.add(string); + } + return list; + +} + @PostMapping("/mapping1") + public Object connector1(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str =mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + //get values from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String string2 = entry.getValue().getAsString(); + list.add(string2); + } + return list; + +} + //get api for call connector by name for job(by gk) + @GetMapping("/connectorname/{name}") + public ResponseEntity getconnector(@PathVariable String name) { + Connector save = connectorrepository.findconnectorbyname(name); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Connector.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Connector.java new file mode 100644 index 0000000..8de5289 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Connector.java @@ -0,0 +1,33 @@ +package com.realnet.Connector.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Column; + +import com.realnet.Dashboard1.Entity.dashbord_Who_collumn; + +import lombok.Data; + +@Entity +@Data +public class Connector extends dashbord_Who_collumn { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + @Column(length = 15000) + private String get_str; + @Lob + private String connector_json; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Mapping.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Mapping.java new file mode 100644 index 0000000..0e23d56 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Entity/Mapping.java @@ -0,0 +1,9 @@ +package com.realnet.Connector.Entity; + +import lombok.Data; + +@Data +public class Mapping { + + private String mappingString; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Repository/Connectorrepository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Repository/Connectorrepository.java new file mode 100644 index 0000000..1d83c69 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/ashwini/Connector/Repository/Connectorrepository.java @@ -0,0 +1,15 @@ +package com.realnet.Connector.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Connector.Entity.Connector; +@Repository +public interface Connectorrepository extends JpaRepository{ + + + @Query(value = "select * from connector where name=?1", nativeQuery = true) + Connector findconnectorbyname(String name); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/projecttest/model/TestModel.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/projecttest/model/TestModel.java new file mode 100644 index 0000000..9dcd130 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/projecttest/model/TestModel.java @@ -0,0 +1,15 @@ +package com.realnet.model; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +public class TestModel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + private String name; + private String email; + private String mob_no; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back.zip b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back.zip new file mode 100644 index 0000000..e35579f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Controllers/AbcController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Controllers/AbcController.java new file mode 100644 index 0000000..4b90753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Controllers/AbcController.java @@ -0,0 +1,42 @@ +package com.realnet.Abc_1665647440047_back.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.Abc_1665647440047_back.Entity.Abc; +import com.realnet.Abc_1665647440047_back.Services.AbcService ; +@RequestMapping(value = "/_1665647440047_back") +@RestController +public class AbcController { + + @Autowired + private AbcService Service; + + @PostMapping("/Abc") + + public Abc Savedata(@RequestBody Abc data) { + Abc save = Service.Savedata(data) ; + return save; + } + + + @GetMapping("/Abc") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Abc/{id}") + public Abc getdetailsbyId(@PathVariable Long id ) { + Abc get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Abc/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } +@PutMapping("/Abc/{id}") + public Abc update(@RequestBody Abc data,@PathVariable Long id ) { + Abc update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Entity/Abc.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Entity/Abc.java new file mode 100644 index 0000000..5c33750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Entity/Abc.java @@ -0,0 +1,18 @@ +package com.realnet.Abc_1665647440047_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Abc{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int name_id; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Repository/AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Repository/AbcRepository.java new file mode 100644 index 0000000..2576449 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Repository/AbcRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Abc_1665647440047_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Abc_1665647440047_back.Entity.Abc; + +@Repository +public interface AbcRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Services/AbcService.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Services/AbcService.java new file mode 100644 index 0000000..a26061b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/Abc_1665647440047_back/Services/AbcService.java @@ -0,0 +1,37 @@ +package com.realnet.Abc_1665647440047_back.Services; +import com.realnet.Abc_1665647440047_back.Repository.AbcRepository; +import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class AbcService { +@Autowired +private AbcRepository Repository; +public Abc Savedata(Abc data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Abc getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Abc update(Abc data,Long id) { + Abc old = Repository.findById(id).get(); +old.setName(data.getName()); +old.setName_id(data.getName_id()); +final Abc test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model.zip b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model.zip new file mode 100644 index 0000000..ee66204 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model/TestModel.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model/TestModel.java new file mode 100644 index 0000000..9dcd130 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test3/Demo Code Extractor/model/TestModel.java @@ -0,0 +1,15 @@ +package com.realnet.model; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +public class TestModel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + private String name; + private String email; + private String mob_no; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/BuildMasterBuilderController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/BuildMasterBuilderController.java new file mode 100644 index 0000000..31e9747 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/BuildMasterBuilderController.java @@ -0,0 +1,537 @@ +//package com.realnet.codeextractor.controller; +// +//import java.io.BufferedWriter; +//import java.io.File; +//import java.io.FileNotFoundException; +//import java.io.FileWriter; +//import java.io.IOException; +//import java.nio.charset.StandardCharsets; +//import java.util.List; +// +//import org.apache.commons.io.FileUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestParam; +//import org.springframework.web.bind.annotation.RestController; +// +//import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +//import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +//import com.realnet.codeextractor.service.Rn_Bcf_Exception_Rule_Library_Service; +//import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Params_Service; +//import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +//import com.realnet.codeextractor.service.Rn_Bcf_Rule_Library_Service; +//import com.realnet.flf.service.FieldTypeService; +//import com.realnet.fnd.entity.Error; +//import com.realnet.fnd.entity.ErrorPojo; +//import com.realnet.fnd.entity.Success; +//import com.realnet.fnd.entity.SuccessPojo; +//import com.realnet.fnd.service.Rn_ModuleSetup_Service; +//import com.realnet.utils.Constant; +// +//import io.swagger.annotations.Api; +// +//@RestController +//@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +//@Api(tags = { "Build Master Builder" }) +//public class BuildMasterBuilderController { +// +// @Value("${projectPath}") +// private String projectPath; +// +// @Value("${angularProjectPath}") +// private String angularProjectPath; +// +// @Autowired +// private Rn_ModuleSetup_Service rn_module_setup_service; +// +// @Autowired +// private Rn_Bcf_Extractor_Service rn_bcf_extractor_service; +// +// @Autowired +// private Rn_Bcf_Extractor_Params_Service rn_bcf_extractor_params_service; +// +// @Autowired +// private Rn_Bcf_Rule_Library_Service rn_bcf_rule_library_service; +// +// @Autowired +// private Rn_Bcf_Exception_Rule_Library_Service rn_bcf_rule_exception_library_service; +// +// @Autowired +// private FieldTypeService fieldTypeService; +// //private static final Logger logger = Logger.getLogger(BuildMasterBuilderController.class); +// +// @GetMapping("/build_master_builder") +// public ResponseEntity masterControllerBuilder(@RequestParam(value = "id") Integer id) throws IOException, FileNotFoundException { +// StringBuilder variablesDynamicCode = new StringBuilder(); +// StringBuilder stringBuilderDynamicCode = new StringBuilder(); +// StringBuilder moduleCode = new StringBuilder(); +// +// +// // RN_BCF_CODE_EXTRACTOR_T ID +// //int eid = Integer.parseInt(id); +// +// Rn_Bcf_Extractor extractor = rn_bcf_extractor_service.getById(id); +// String technology_stack = extractor.getTech_stack(); +// String object_type = extractor.getObject_type(); +// String sub_object_type = extractor.getSub_object_type(); +// +// // RN_BCF_CODE_EXTRACTOR_PARAMS_T VALUES +// //List params = rn_bcf_extractor_params_service.getByHeaderId(eid); +// List params = extractor.getRn_bcf_extractor_Params(); +// +// // PARAMETERS TABLE VALUE +// int i = 0; +// int j=0; +// for (Rn_Bcf_Extractor_Params param : params) +// { +// boolean is_creation_enabled = param.isIs_creation_enabled(); +// boolean is_extraction_enabled = param.isIs_extraction_enabled(); +// String path = param.getMoved_address_string(); +// File file = new File(path); +// String parentPath = file.getParent(); +// +// String name = file.getName(); +// String convertedFileName = "SE_" + name; +// +// // STATIC CODE DIRECTORY +// String staticFileParentDir = parentPath + File.separator + "static_code"; +// File staticFile = new File(staticFileParentDir + File.separator + convertedFileName); +// String fileToString = FileUtils.readFileToString(staticFile, StandardCharsets.UTF_8); +// +// // ex. controller_file (FROM PARAMS TABLE) +// String file_name_var = param.getFile_name_var(); +// +// // ex. ui_name + "controller" +// String file_name_dynamic_string = param.getFile_name_dynamic_string(); +// +// // ex. String controller_file = ui_name + "controller"; +// variablesDynamicCode.append("String " + file_name_var + " = " + file_name_dynamic_string + ";\r\n"); +// +// System.out.println("file name dynamic str "+file_name_dynamic_string); +// //change file name entity +//// String mainstr1=file_name_dynamic_string; +//// String saleesent1=mainstr1.replace(".java", " "); +//// System.out.println("updated filename"+saleesent1); +//// System.out.println(file_name_dynamic_string.contains(".java")); +//// System.out.println(file_name_dynamic_string.contains(".ts")); +//// System.out.println(file_name_dynamic_string.contains(".scss")); +//// System.out.println(file_name_dynamic_string.contains(".html")); +// +// if(file_name_dynamic_string.contains(".java")) { +// variablesDynamicCode.append("String mainstr"+j+" = " + file_name_var + ";\r\n"+ +// "String "+file_name_var+""+1+"=mainstr"+j+".replace(\".java\", \"\");\r\n"+ +// "" + "\r\n"+"\n" ); +// }else if(file_name_dynamic_string.contains(".ts")) { +// variablesDynamicCode.append("String mainstr"+j+" = " + file_name_var + ";\r\n"+ +// "String "+file_name_var+""+1+"=mainstr"+j+".replace(\".ts\", \"\");\r\n"+ +// "" + "\r\n"+ +// "String "+file_name_var+""+2+"=mainstr"+j+".replace(\".component.ts\", \"\");\r\n"+ +// "" + "\r\n"+"\n" +// ); +// +// }else if(file_name_dynamic_string.contains(".html")) { +// variablesDynamicCode.append("String mainstr"+j+" = " + file_name_var + ";\r\n"+ +// "String "+file_name_var+""+1+"=mainstr"+j+".replace(\".html\", \"\");\r\n"+ +// "" + "\r\n"+"\n" ); +// }else if(file_name_dynamic_string.contains(".scss")) { +// variablesDynamicCode.append("String mainstr"+j+" = " + file_name_var + ";\r\n"+ +// "String "+file_name_var+""+1+"=mainstr"+j+".replace(\".scss\", \"\");\r\n"+ +// "" + "\r\n"+"\n" ); +// }else {System.out.println("not found");} +// +// +// +// // ======= MODULE NAME SHOULD COME FROM THE SESSION ======== +// //String moduleName = "\" + module_name + \"/\""; +// String moduleName = "\" + module_name + \"/"; +// +// String modulePath = param.getTotal_project_path_dynamic_string(); +// //System.out.println("MODULE PATH = " + modulePath); +// if(modulePath.endsWith(".java")) { +// String parent = modulePath.substring(0, modulePath.lastIndexOf("/")); // 1 +// String lvl2Parent = parent.substring(0, parent.lastIndexOf("/")+1); // 2 +// String tail0 = modulePath.substring(parent.lastIndexOf("/") +1); // 3 +// tail0 = tail0.substring(0, tail0.lastIndexOf("/")+1); // remove the .java file name +// modulePath = lvl2Parent + moduleName + tail0; +// } else { +// // add module name in spring project +// modulePath = modulePath.substring(0, modulePath.lastIndexOf("/")+1); +// String data0 = modulePath.substring(0, modulePath.lastIndexOf("/") + 1); +// String tail0 = modulePath.substring(modulePath.lastIndexOf("/") + 1); +// data0 += moduleName + tail0; +// modulePath = data0; +// } +//// System.out.println("MANUPULATED module PATH = " + modulePath); +// +//// String ref_address_string = param.getReference_address_string(); +//// ref_address_string = ref_address_string.substring(0, ref_address_string.lastIndexOf("/")+1); +// +// String total_address_path = param.getTotal_project_path_dynamic_string(); +// total_address_path = total_address_path.substring(0, total_address_path.lastIndexOf("/")+1); +// System.out.println("total path : "+total_address_path +"\n"); +// String module_dest_path = ""; +// String finalDir = ""; +// +// +//// module_dest_path = "angularProjectPath + \"" + modulePath; +//// // CREATE MODULE FOLDER STRUCTURE [DYNAMIC PATH] +//// moduleCode.append("File file" + (++i) + " = new File(" + module_dest_path +"\");\n" +//// + "if(!file" + (i) +".exists()) {\n" +//// + " file" + (i) + ".mkdirs();\n" +//// + "}\n"); +// +// /* +// * MAKE {{test1}} dynamic +// * INPUT : /frontend/src/app/admin/test1/details/rn_header_test1-details.component.html +// * OUTPUT : /frontend/src/app/admin/{{test1}}/details/ +// * +// * */ +// // DYNAMIC FOLDER NAME LOGIC FOR ANGULAR +// // start +//// final String ng_prj_struct = "/frontend/src/app/admin/"; +//// if (ref_address_string.contains(ng_prj_struct)) { +//// int len = ng_prj_struct.length(); +//// String data = ref_address_string.substring(0,len) + "\" + ng_folder_name + \""; +//// int tail = ref_address_string.indexOf("/", len + 1); +//// String temp = ref_address_string.substring(tail); +//// data += temp; +//// ref_address_string = data; +//// } +//// +// // end +// String dest_path = "projectPath + \"" + "/Projects/\" + project_name + \"" + total_address_path; +// System.out.println("dest path : "+dest_path); +// // String finalDir = dirString + "/" + "\" + " + file_name_var; +// finalDir = dest_path + "\" + " + file_name_var; +// System.out.println(finalDir); +// +// +// //module_dest_path = "projectPath + \"" + "/Projects/\" + project_name + " + modulePath; +//// String dest_path = "projectPath + \"" + "/Projects/\" + project_name + \"" + modulePath; +// +// +// // String finalDir = dirString + "/" + "\" + " + file_name_var; +// finalDir = dest_path + "\" + " + file_name_var; +// System.out.println("NIL FINAL DIR = " + finalDir+"\n"); +// +// if(is_creation_enabled) { +// StringBuilder fileCode = new StringBuilder(); +// // EMPTY FILE CODE WILL NOT GO IN THIS LOOP +// if(fileToString.isEmpty()) { +// fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\");\r\n"); +// } else { +// fileCode.append(" " + file_name_var + "Code.append(" + fileToString + ");\r\n"); +// } +// stringBuilderDynamicCode.append(" StringBuilder " + file_name_var + "Code = new StringBuilder();\r\n" +// //+ " " + file_name_var + "Code.append(" + fileToString + ");\r\n" +// + fileCode +// + "\r\n" +// + " File " + file_name_var + "File = new File(" + finalDir + ");\r\n" +// + " System.out.println(\"Directory name = \" + " + file_name_var + "File);\r\n" +// //== CREATE PARENT DIR IF NOT EXIST=== +// + " File " + file_name_var + "FileParentDir = new File(" + file_name_var + "File.getParent());\r\n" +// + " if(!" + file_name_var +"FileParentDir.exists()) {\r\n" +// + " " + file_name_var + "FileParentDir.mkdirs();\r\n" +// + " }\r\n" +// //== +// + " if (!" + file_name_var + "File.exists()) {\r\n" +// + " " + file_name_var + "File.createNewFile();\r\n" +// + " }\r\n" +// + " fw = new FileWriter(" + file_name_var + "File.getAbsoluteFile());\r\n" +// + " bw = new BufferedWriter(fw);\r\n" +// + " bw.write(" + file_name_var + "Code.toString());\r\n" +// + " bw.close();\r\n" +// + "\r\n"); +// +// } +// j++; +// } +// +// +// +// // CHILD MASTER BUILDER NAME DEPENDS ON (TECH_STACK, OBJ_TYPE, SUB_OBJ_TYPE) +// String childMasterBuilderName = technology_stack + "_" + object_type + "_" + sub_object_type + "_Builder"; +// childMasterBuilderName = childMasterBuilderName.replace(" ", "_"); +// childMasterBuilderName = childMasterBuilderName.replaceAll("[-]+", "_"); +// +// StringBuilder childMasterBuilderCode = new StringBuilder(); +// childMasterBuilderCode.append( +// "package com.realnet.builders;\r\n" +// + "\r\n" +// + "import java.io.BufferedReader;\r\n" +// + "import java.io.BufferedWriter;\r\n" +// + "import java.io.File;\r\n" +// + "import java.io.FileNotFoundException;\r\n" +// + "import java.io.FileReader;\r\n" +// + "import java.io.FileWriter;\r\n" +// + "import java.io.IOException;\r\n" +// + "import java.util.List;\r\n" +// + "import java.util.stream.Collectors;\r\n" +// + "\r\n" +// + "import org.modelmapper.ModelMapper;\r\n" +// + "import org.springframework.beans.factory.annotation.Autowired;\r\n" +// + "import org.springframework.beans.factory.annotation.Value;\r\n" +// + "import org.springframework.http.HttpStatus;\r\n" +// + "import org.springframework.http.MediaType;\r\n" +// + "import org.springframework.http.ResponseEntity;\r\n" +// + "import org.springframework.web.bind.annotation.GetMapping;\r\n" +// + "import org.springframework.web.bind.annotation.RequestMapping;\r\n" +// + "import org.springframework.web.bind.annotation.RequestParam;\r\n" +// + "import org.springframework.web.bind.annotation.RestController;\r\n" +// + "\r\n" +// + "import com.realnet.actionbuilder.entity.Rn_cff_ActionBuilder_Header;\r\n" +// + "import com.realnet.actionbuilder.entity.Rn_cff_ActionBuilder_Header;\r\n" +// + "import com.realnet.actionbuilder.service.Rn_Cff_ActionBuilder_Service;\r\n" +// + "import com.realnet.flf.service.FieldTypeService;\r\n" +// + "import com.realnet.fnd.entity.Error;\r\n" +// + "import com.realnet.fnd.entity.ErrorPojo;\r\n" +// + "import com.realnet.fnd.entity.Rn_Lookup_Values;\r\n" +// + "import com.realnet.fnd.entity.Rn_Module_Setup;\r\n" +// + "import com.realnet.fnd.entity.Rn_Project_Setup;\r\n" +// + "import com.realnet.fnd.entity.Success;\r\n" +// + "import com.realnet.fnd.entity.SuccessPojo;\r\n" +// + "import com.realnet.fnd.service.Rn_LookUp_Service;\r\n" +// + "import com.realnet.utils.Constant;\r\n" +// + "import com.realnet.utils.RealNetUtils;\r\n" +// + "import com.realnet.wfb.entity.Rn_Fb_Header;\r\n" +// + "import com.realnet.wfb.entity.Rn_Fb_Line;\r\n" +// + "import com.realnet.wfb.entity.Rn_Fb_Line_DTO;\r\n" +// + "import com.realnet.wfb.service.Rn_WireFrame_Service;\r\n" +// + "\r\n" +// + "import io.swagger.annotations.Api;\r\n" +// + "\r\n" +// + "@RestController\r\n" +// // CONTROLLER NAME SHOULD CHANGE +// // DEPENDS ON TECH_STACK/OBJECT_tYPE/SUB_OBJECT_TYPE +// + "@RequestMapping(value = \"/api\", produces = MediaType.APPLICATION_JSON_VALUE)\r\n" +// + "@Api(tags = { \"Master Builder\" })\r\n" +// + "public class " + childMasterBuilderName + " {\r\n" + "\r\n" + "\r\n" +// + " @Value(\"${angularProjectPath}\")\r\n" +// + " private String angularProjectPath;" +// + " @Value(\"${projectPath}\")\r\n" +// + " private String projectPath;" +// +// // DEPENDENCIES FOR WIREFRAME +// + " @Autowired\r\n" +// + " private Rn_WireFrame_Service wireFrameService;\r\n" + +// "\r\n" + +// " @Autowired\r\n" +// + " private Rn_LookUp_Service lookUpService;\r\n" +// + "\r\n" +// + " @Autowired\r\n" +// + " private Rn_Cff_ActionBuilder_Service actionBuilderService;\r\n" +// + "\r\n" +// + " @Autowired\r\n" +// + " private ModelMapper modelMapper;\r\n" +// + "\r\n" +// + " @Autowired\r\n" +// + " private FieldTypeService fieldTypeService;\r\n" +// +// + " @GetMapping(value = \"/" + childMasterBuilderName + "\")\r\n" +// + " public ResponseEntity build_wireframe(@RequestParam(\"header_id\") Integer id) throws IOException {\r\n" + "\r\n" +// + " System.out.println(\"id ::\"+id);" +// + "\n lookUpService.createTable(id);" +// + " \n // extra button \n List extraButton = wireFrameService.getExtraButton(id);" +// + " \n // HEADER VALUE\r\n" +// + " Rn_Fb_Header rn_fb_header = wireFrameService.getById(id);\r\n" +// + " \r\n" +// + " // LINE VALUES\r\n" +// + " List rn_fb_lines = rn_fb_header.getRn_fb_lines();\r\n" +// + " \r\n" +// + " // MODULE DETAILS\r\n" +// + " Rn_Module_Setup module = rn_fb_header.getModule();\r\n" +// + " \r\n" +// + " // PROJECT DETAILS\r\n" +// + " Rn_Project_Setup project = module.getProject();\r\n" +// + " \r\n" +// // ATTRIBUTE FLEX +// + " // ATTRIBUTE FLEX VALUES\r\n" +// + " List attribute_flex_values = lookUpService.getExtensions();\r\n" +// + " String project_name = project.getProjectName();\r\n" +// + " String module_name = module.getModuleName();" +// +// // header table values +// + " /*\r\n" +// + " * Header Table Values\r\n" +// + " * @GET UI_NAME\r\n" +// + " * @SET controller, model, repository, service name.\r\n" +// + " */\r\n" +// + " String technology_stack = rn_fb_header.getTechStack();\r\n" +// + " String ui_name = RealNetUtils.toFirstUpperCase(rn_fb_header.getUiName());\r\n" +// + " String form_code = rn_fb_header.getFormCode(); // value will come from db\r\n" +// +// + " String controller_name = ui_name.concat(\"_Controller\");\r\n" +// + " String dao_name = ui_name.concat(\"_Dao\");\r\n" +// + " String dao_name_lower = dao_name.toLowerCase();" +// + " String dao_impl_name = ui_name.concat(\"_DaoImpl\");\r\n" +// + " String repository_name = ui_name.concat(\"_Repository\");\r\n" +// + " String service_name = ui_name.concat(\"_Service\");\r\n" +// + " String service_impl_name = ui_name.concat(\"_ServiceImpl\");\r\n" + "\r\n" +// + " String table_name = ui_name.concat(\"_t\"); // For @Column(table=\"table_name\") && Model class name\r\n" +// + "\r\n" +// //+ " String line_table_name = ui_name.concat(\"_line_t\");\r\n" + "\r\n" +// + " /*----First Upper names (back-end)----------*/\r\n" +// + " String controller_name_first_upper = RealNetUtils.toFirstUpperCase(controller_name);\r\n" +// + " String repository_name_first_upper = RealNetUtils.toFirstUpperCase(repository_name);\r\n" +// + " String dao_name_first_upper = RealNetUtils.toFirstUpperCase(dao_name);\r\n" +// + " String dao_impl_name_first_upper = RealNetUtils.toFirstUpperCase(dao_impl_name);\r\n" +// + " String service_name_first_upper = RealNetUtils.toFirstUpperCase(service_name);\r\n" +// + " String service_impl_name_first_upper = RealNetUtils.toFirstUpperCase(service_impl_name);\r\n" +// + " String table_name_first_upper = RealNetUtils.toFirstUpperCase(table_name);\r\n" +// + " String table_name_upper = table_name.toUpperCase(); // For Model class\r\n" + "\r\n" +// //+ " String line_table_name_first_upper = RealNetUtils.toFirstUpperCase(line_table_name);\r\n" +// + " /*-------------lower names (back-end)----------*/\r\n" +// + " String table_name_lower = table_name.toLowerCase();\r\n" +// + " String repository_name_lower = repository_name.toLowerCase();\r\n" +// + " String service_name_lower = service_name.toLowerCase();\r\n" +// + "\r\n" +// +// //DTO APPROACH FOR CALLING A SERVICE +// + " List lineListDto = rn_fb_lines.stream().map(line -> modelMapper.map(line, Rn_Fb_Line_DTO.class))\r\n" +// + " .collect(Collectors.toList());\r\n" +// + " \r\n" +// + " // set table name in the dto class\r\n" +// + " for(Rn_Fb_Line_DTO dto : lineListDto) {\r\n" +// + " dto.setTable_name(table_name_lower);\r\n" +// + " }\r\n" +// +// // ======= NEED TO IMPLEMENT LOGIC FOR DIFFERENT TECHNOLOGY TYPE ==== +// ); // +// +// +// // =========== FRONT-END OBJECT NAMES ============== +// childMasterBuilderCode.append("// ===========FRONT END FILE NAMES DEPENDS ON UI NAME===============\r\n" +// + " String ng_ui_name = RealNetUtils.toFirstUpperCase(ui_name);\r\n" +// + " String ng_model_ts_name = ng_ui_name.concat(\"_t\");\r\n" +// + " String ng_component_ts_name = ng_ui_name.concat(\"Component\");\r\n" +// + " String ng_module_ts_name = ng_ui_name.concat(\"Module\");\r\n" +// + " String ng_service_ts_name = ng_ui_name.concat(\"Service\");\r\n" +// + " String ng_routing_module_ts_name = ng_ui_name.concat(\"RoutingModule\");\r\n" + "\r\n" +// + " String ng_service_ts_name_lower = ui_name.toLowerCase().concat(\"Service\");\r\n" +// + " String ng_model_ts_name_lower = ng_model_ts_name.toLowerCase();\r\n" +// + " // Routing Path names\r\n" +// + " String ng_path_name = ui_name.toLowerCase();\r\n" +// + " // CRUD Components name\r\n" +// + " String ng_all_grid_view_component_name = \"All\" + ng_ui_name.concat(\"Component\");\r\n" +// + " String ng_add_form_component_name = \"Add\" + ng_ui_name.concat(\"Component\");\r\n" +// + " String ng_edit_component_name = \"Edit\" + ng_ui_name.concat(\"Component\");\r\n" +// + " String ng_read_only_component_name = ng_ui_name + \"DetailsComponent\";\r\n" +// + " // Extension Components name\r\n" +// + " String ng_extension_add_component_name = \"AddExt\" + ng_ui_name.concat(\"Component\");\r\n" +// + " // File Folder name\r\n" +// + " String ng_folder_name = ui_name.toLowerCase();\r\n" +// + " String ng_file_name = ui_name.toLowerCase();\r\n" +// + "\r\n"); +// +// String action_builder_code = fieldTypeService.angular_action_builder_code(); +// +// // DYNAMIC VARIABLE FOR FILE-NAME DEPENDS ON UI NAME +// childMasterBuilderCode.append( +// variablesDynamicCode // this is the file name with extension(from params table) +// + "\r\n" +// // MASTER CONTROLLER CODE START +// + " FileWriter fw = null;\r\n" +// + " BufferedWriter bw = null;\r\n" +// + " try { \r\n" +// // ACTION BUILDER CODE +// + action_builder_code +// + // =========== VARIABLE CODE WILL BE APPEND HERE ===============// +// stringBuilderDynamicCode +// + "\r\n"); +// +// // UPDATE MENU +// // String angular_update_sidenav = ""; +// childMasterBuilderCode.append(moduleCode +"\r\n" + +// // 22:30 UPDATE SIDE BAR START +// "/*-----------------------UPDATE ADMIN ROUTING TS FILE --------------------*/\r\n" +// + " // String frontEndDir = angularProjectPath.concat(\"/frontend/\");\n" +// + " File adminRoutingModule = new File(projectPath+\"/Projects/\"+project_name+ \"/webui/src/app/app-routing.module.ts\");\r\n" +// + " File tempRoutingModule = new File(projectPath+\"/Projects/\"+project_name+\"/webui/src/app/temp-routing.module.ts\");\r\n" +// + "\r\n" + +// " BufferedReader reader = new BufferedReader(new FileReader(adminRoutingModule));\r\n" + +// " BufferedWriter writer = new BufferedWriter(new FileWriter(tempRoutingModule));\r\n" + +// " String removeStr = \"]}];@NgModule({imports: [RouterModule.forChild(routes)],exports: [RouterModule]})export class AdminRoutingModule{}\";\r\n" + +// " String currentLine;\r\n" + +// " System.out.println(adminRoutingModule.getName());\r\n" + +// " while ((currentLine = reader.readLine()) != null) {\r\n" + +// " String trimmedLine = currentLine.trim();\r\n" + +// " if (trimmedLine.equals(removeStr)) {\r\n" + +// " currentLine = \"\";\r\n" + +// " }\r\n" + +// " writer.write(currentLine + System.getProperty(\"line.separator\"));\r\n" + +// "\r\n" + +// " }\r\n" + +// " writer.close();\r\n" + +// " reader.close();\r\n" + +// " boolean delete = adminRoutingModule.delete();\r\n" + +// " boolean b22 = tempRoutingModule.renameTo(adminRoutingModule);\r\n" + +// "\r\n" + +// " StringBuilder admin_routing_module_string = new StringBuilder();\r\n" + +// " admin_routing_module_string.append(\" \");\r\n" + +// " String adminRoutingModuleName = projectPath+\"/Projects/\"+project_name+ \"/webui/src/app/app-routing.module.ts\";\r\n" + +// "\r\n" + +// " fw = new FileWriter(adminRoutingModuleName, true);\r\n" + +// " fw.write(admin_routing_module_string.toString());\r\n" + +// " fw.close();\r\n" + +// "\r\n" +// +// ); +// +// // MODULE CREATE CODE +// childMasterBuilderCode.append(" } catch (FileNotFoundException e) {\r\n" +// + " e.printStackTrace();\r\n" +// + " ErrorPojo errorPojo = new ErrorPojo();\r\n" +// + " Error error = new Error();\r\n" +// + " error.setTitle(Constant.FORM_BUILDER_API_TITLE);\r\n" +// + " error.setMessage(Constant.FORM_BUILD_FAILURE);\r\n" +// + " errorPojo.setError(error);\r\n" +// + " return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED);\r\n" +// + " }\r\n" +// + " SuccessPojo successPojo = new SuccessPojo();\r\n" +// + " Success success = new Success();\r\n" +// + " success.setTitle(Constant.FORM_BUILDER_API_TITLE);\r\n" +// + " success.setMessage(Constant.FORM_BUILD_SUCCESS);\r\n" +// + " successPojo.setSuccess(success);\r\n" +// + " return new ResponseEntity(successPojo, HttpStatus.OK);\r\n" +// + "\r\n" +// +"\n}" +// +"}"); +// +// // System.out.println(masterBuilderCode.toString()); +// +// FileWriter fw = null; +// BufferedWriter bw = null; +// try { +// // FILE NAME SHOULD CHANGE DEPENDS ON TECH_STACK/OBJECT_tYPE/SUB_OBJECT_TYPE +// File masterBuilderFile = new File( +// projectPath + "/src/main/java/com/realnet/builders/" + childMasterBuilderName + ".java"); +// if (!masterBuilderFile.exists()) { +// masterBuilderFile.createNewFile(); +// } +// fw = new FileWriter(masterBuilderFile.getAbsoluteFile()); +// bw = new BufferedWriter(fw); +// bw.write(childMasterBuilderCode.toString()); +// bw.close(); +// } catch (FileNotFoundException e) { +// e.printStackTrace(); +// ErrorPojo errorPojo = new ErrorPojo(); +// Error error = new Error(); +// error.setTitle(Constant.MASTER_BUILDER_API_TITLE); +// error.setMessage(Constant.MASTER_BUILDER_FAILURE); +// errorPojo.setError(error); +// return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); +// } +// +// SuccessPojo successPojo = new SuccessPojo(); +// Success success = new Success(); +// success.setTitle(Constant.MASTER_BUILDER_API_TITLE); +// success.setMessage(Constant.MASTER_BUILDER_SUCCESS); +// successPojo.setSuccess(success); +// return new ResponseEntity(successPojo, HttpStatus.CREATED); +// } +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/CodeExtractorController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/CodeExtractorController.java new file mode 100644 index 0000000..69f2f4e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/CodeExtractorController.java @@ -0,0 +1,778 @@ +package com.realnet.codeextractor.controller; + +import java.io.BufferedOutputStream; +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import org.springframework.web.servlet.support.ServletUriComponentsBuilder; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.codeextractor.entity.FileDetails; +import com.realnet.codeextractor.entity.FileListDto; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.response.CodeExtractorParamsResponse; +import com.realnet.codeextractor.response.CodeExtractorResponse; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Params_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.fnd.service.FileStorageService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Constant; +import com.realnet.utils.RealNetUtils; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import net.lingala.zip4j.ZipFile; +import net.lingala.zip4j.exception.ZipException; + +@Slf4j +@JsonAutoDetect(fieldVisibility = Visibility.ANY) +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Code Extractor" }) +public class CodeExtractorController { + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private FileStorageService fileStorageService; + + @Autowired + private Rn_Bcf_Extractor_Service extractorService; + + @Autowired + private Rn_Bcf_Extractor_Params_Service extractorParamsService; + + @Value("${projectPath}") + private String projectPath; + + // GET ALL SORTED AND PAGINATED DATA + @ApiOperation(value = "List of of Bcf Extractor", response = Rn_Bcf_Extractor.class) + @GetMapping("/bcf-extractor") + public CodeExtractorResponse getExtractors( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + Page result = extractorService.getAll(paging); + + CodeExtractorResponse resp = new CodeExtractorResponse(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); +// //Map> extractorMap = Collections.singletonMap("extractior", result.getContent()); +// return new ResponseEntity>>(extractorMap, HttpStatus.OK); + return resp; + + } + +// // GET ALL +// @ApiOperation(value = "List of Bcf Extractor") +// @GetMapping("/bcf-extractor") +// public ResponseEntity getExtractors() { +// List result = extractorService.getAll(); +// Map> extractorMap = Collections.singletonMap("extractior", result); +// System.out.println(extractorMap); +// return ResponseEntity.ok().body(result); +// } + + // GET BY ID + @ApiOperation(value = "Get an Bcf Extractor", response = Rn_Bcf_Extractor.class) + @GetMapping("/bcf-extractor/{id}") + public ResponseEntity getExtractorById(@PathVariable(value = "id") int id) { + Rn_Bcf_Extractor bcf_extractor = extractorService.getById(id); + + // Map extractorMap = + // Collections.singletonMap("extractior", bcf_extractor); + // return new ResponseEntity>(extractorMap, + // HttpStatus.OK); + // return ResponseEntity.ok().body(bcf_extractor); + return new ResponseEntity(bcf_extractor, HttpStatus.OK); + + } + + // ========= SAVE AND UNZIP FILE AND MOVE TO A SPECIFIC PATH ======== + @ApiOperation(value = "Add new Bcf Extractor") + @PostMapping(value = "/bcf-extractor") + public ResponseEntity saveExtractor(// @Valid @RequestBody Rn_Bcf_Extractor bcf_extractor, + @RequestParam(value = "bcf_extractor", required = true) String extractorReq, + @RequestParam(value = "file", required = true) MultipartFile file) + throws IOException, JsonParseException, JsonMappingException { + + System.out.println("extractorReq = " + extractorReq); + System.out.println("file = " + file.getOriginalFilename()); + + log.debug("extractorReq => {} ", extractorReq); + log.debug("file => {} ", file.getOriginalFilename()); + ObjectMapper mapper = new ObjectMapper(); + Rn_Bcf_Extractor bcf_extractor = mapper.readValue(extractorReq, Rn_Bcf_Extractor.class); + log.debug("bcf_extractor => {}", bcf_extractor); + AppUser loggedInUser = userService.getLoggedInUser(); + bcf_extractor.setAccountId(loggedInUser.getAccount().getAccount_id()); + bcf_extractor.setCreatedBy(loggedInUser.getUserId()); + + String techStackKey = RealNetUtils.getTechnologyStackKey(bcf_extractor.getTech_stack()); + System.out.println("TECHNOLOGY STACK KEY = " + techStackKey); + bcf_extractor.setTech_stack_key(techStackKey); + + // upload to directory + String uploadPath = projectPath.concat("/src/main/resources/zip-uploads/"); + fileStorageService.uploadFile(file, uploadPath); + + String fileName = file.getOriginalFilename(); + System.out.println( + "UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileName + "\nFile Size = " + file.getSize()); + + // SAVE ZIP FILE NAME INTO DATABASE + bcf_extractor.setSample_file_name(fileName); + extractorService.save(bcf_extractor); + + // ZIP TO UNZIP + String zipFilePath = uploadPath + fileName; + String fileNameWithOutExt = FilenameUtils.removeExtension(fileName); + Date d = new Date(); + String destFolderName = fileNameWithOutExt + "_" + d.getTime(); + String destPath = projectPath.concat("/src/main/resources/extracted-files/" + destFolderName); + System.out.println("ZIP FILE PATH = " + zipFilePath + "\nDESTINATION PATH = " + destPath); + try { + ZipFile zipFile = new ZipFile(zipFilePath); + /* + * // Get the list of file headers from the zip file List fileHeaderList = + * zipFile.getFileHeaders(); // Loop through the file headers for (int i = 0; i< + * fileHeaderList.size(); i++) { FileHeader fileHeader = (FileHeader) + * fileHeaderList.get(i); String name = fileHeader.getFileName(); + * if(name.contains(".html") || name.contains(".css") || name.contains(".java") + * || name.contains(".jsp") || name.contains(".ts") ) { + * zipFile.extractFile(fileHeader, destPath); } } + */ + zipFile.extractAll(destPath); + } catch (ZipException e) { + e.printStackTrace(); + } + + int headerId = bcf_extractor.getId(); + System.out.println("Code Extractor Parameter Header Id = " + headerId); + String tech_stack = bcf_extractor.getTech_stack(); + String obj_type = bcf_extractor.getObject_type(); + String sub_obj_type = bcf_extractor.getSub_object_type(); + + // MOVE FILES TO PARENT DIRECTORY & DELETE EMPTY FILES & SAVE PATHS INTO PARAMS + // TABLE + extractorService.saveListOFiles(headerId, tech_stack, obj_type, sub_obj_type, destPath); + + // SAVE MOVED PATHS INTO DB + extractorService.moveFiles(headerId, destPath); + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + log.debug("Response {} ", successPojo); + return new ResponseEntity(successPojo, HttpStatus.CREATED); +// Map response = new HashMap<>(); +// response.put("SUCCESS", Boolean.TRUE); +// return ResponseEntity.status(HttpStatus.CREATED).body(response); + } + + // UPDATE bcf extractor + @ApiOperation(value = "Update an Extension", response = Rn_Bcf_Extractor.class) + @PutMapping("/bcf-extractor/{id}") + public ResponseEntity updateExtractor( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @Valid @RequestBody Rn_Bcf_Extractor bcf_extractor) { + AppUser loggedInUser = userService.getLoggedInUser(); + bcf_extractor.setUpdatedBy(loggedInUser.getUserId()); + + Rn_Bcf_Extractor updatedExtractor = extractorService.updateById(id, bcf_extractor); + + if (bcf_extractor.getId() != updatedExtractor.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_DELETED); + errorPojo.setError(error); + // return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + + // return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Ext_Field); + } + + // DELETE bcf extractor + @DeleteMapping("/bcf-extractor/{id}") + public ResponseEntity deleteExtractor(@PathVariable(value = "id") int id) { + boolean deleted = extractorService.deleteById(id); + // Map response = new HashMap<>(); + if (deleted) { + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_DELETED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + // response.put("deleted", Boolean.TRUE); + // return ResponseEntity.status(HttpStatus.OK).body(response); + } + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_DELETED); + errorPojo.setError(error); + // return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + // =============== BCF CODE EXTRACTOR PARAMS ================ + + // GET ALL SORTED AND PAGINATED DATA BY HEADER ID + @ApiOperation(value = "List of of Bcf Extractor Parameters", response = Rn_Bcf_Extractor.class) + @GetMapping("/bcf-extractor-params") + public CodeExtractorParamsResponse codeExtractorParameters( + @RequestParam(value = "header_id", required = true) Integer headerId, // use param id to get data + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + // Pageable paging = PageRequest.of(page, size, + // Sort.by("createdAt").descending()); + List result = extractorParamsService.getByHeaderIdOrderByDate(headerId); + // log.debug("extractor params sorted data : {}", result.toString()); + CodeExtractorParamsResponse resp = new CodeExtractorParamsResponse(); + // resp.setPageStats(result, true); + resp.setItems(result); + return resp; +// Map> extractorMap = Collections.singletonMap("extractorParams", result); +// return new ResponseEntity>>(extractorMap, HttpStatus.OK); + } + + // GET BY ID + @ApiOperation(value = "Get an Bcf Extractor Parameter", response = Rn_Bcf_Extractor_Params.class) + @GetMapping("/bcf-extractor-params/{id}") + public ResponseEntity codeExtractorParamsById(@PathVariable(value = "id") int id) { + Rn_Bcf_Extractor_Params bcf_extractor_params = extractorParamsService.getById(id); + + // Map extractorMap = + // Collections.singletonMap("extractorParams",bcf_extractor_params); + // return new ResponseEntity>(extractorMap, + // HttpStatus.OK); + return new ResponseEntity(bcf_extractor_params, HttpStatus.OK); + + } + + @ApiOperation(value = "Add new Extractor Parameter", response = Rn_Bcf_Extractor_Params.class) + @PostMapping(value = "/bcf-extractor-params") // use param id to update data + public ResponseEntity addNewExtractorParam(@RequestParam(value = "header_id", required = true) Integer headerId, + @Valid @RequestBody Rn_Bcf_Extractor_Params bcf_extractor_param) { + Rn_Bcf_Extractor extractor = extractorService.getById(headerId); + bcf_extractor_param.setRn_bcf_extractor(extractor); // set header id + Rn_Bcf_Extractor_Params savedParam = extractorParamsService.save(bcf_extractor_param); + if (savedParam == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_CREATED); + errorPojo.setError(error); + // return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // UPDATE bcf extractor param + @ApiOperation(value = "Update an Extension Parameter", response = Rn_Bcf_Extractor_Params.class) + @PutMapping("/bcf-extractor-params/{id}") + public ResponseEntity updatecodeExtractorParam( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @RequestParam(value = "header_id", required = false) Integer headerId, @PathVariable(value = "id") int id, + @Valid @RequestBody Rn_Bcf_Extractor_Params bcf_extractor_param) { + AppUser loggedInUser = userService.getLoggedInUser(); + bcf_extractor_param.setUpdatedBy(loggedInUser.getUserId()); + + Rn_Bcf_Extractor_Params updatedExtractorParam = extractorParamsService.updateById(id, bcf_extractor_param); + + if (bcf_extractor_param.getId() != updatedExtractorParam.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_UPDATED); + errorPojo.setError(error); + // return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + // return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Ext_Field); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // ========= TOGGLE BUTTON SERVICE FOR EXTRACTION AND CREATION ENABLE DISABLE + // BUTTON // + + // EXTRACTION STATUS CHANGE + @GetMapping(value = "/bcf-extractor-params/extraction-status-change") + public ResponseEntity extractionStatusChange(@RequestParam(value = "id") int id) throws IOException { + AppUser loggedInUser = userService.getLoggedInUser(); + Rn_Bcf_Extractor_Params param = extractorParamsService.getById(id); + log.debug("Extractor Param : {} ", param); + param.setIs_extraction_enabled(!param.isIs_extraction_enabled()); + param.setUpdatedBy(loggedInUser.getUserId()); + + Rn_Bcf_Extractor_Params updatedParam = extractorParamsService.save(param); + log.debug("UPDATED Extractor Param : {} ", updatedParam); + if (param.getId() != updatedParam.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_UPDATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // CREATION STATUS CHANGE + @GetMapping(value = "/bcf-extractor-params/creation-status-change") + public ResponseEntity creationStatusChange(@RequestParam(value = "id") int id) throws IOException { + AppUser loggedInUser = userService.getLoggedInUser(); + + Rn_Bcf_Extractor_Params param = extractorParamsService.getById(id); + log.debug("Extractor Param : {} ", param); + param.setIs_creation_enabled(!param.isIs_creation_enabled()); + + param.setUpdatedBy(loggedInUser.getUserId()); + Rn_Bcf_Extractor_Params updatedParam = extractorParamsService.save(param); + log.debug("UPDATED Extractor Param : {} ", updatedParam); + if (param.getId() != updatedParam.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_UPDATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // ========== FILE CODE EDITOR PART ============// + + /* + * File list(from code extractor params table) for dropDown in file editor + */ + @ApiOperation(value = "Get Extracted File List", response = FileDetails.class) + @GetMapping("/bcf-extractor-file-list/{id}") + public ResponseEntity getFileListBy(@PathVariable(value = "id") int headerId) { + + List params = extractorParamsService.getByHeaderId(headerId); + ArrayList response = new ArrayList<>(); + for (Rn_Bcf_Extractor_Params param : params) { + int id = param.getId(); + String fileName = param.getName_string(); + FileListDto fileList = new FileListDto(); + fileList.setId(id); + fileList.setFileName(fileName); + response.add(fileList); + } + + if (response.isEmpty()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_LIST_API_TITLE); + error.setMessage(Constant.FILE_LIST_IS_EMPTY); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } else { + return new ResponseEntity>(response, HttpStatus.OK); + } + } + + // =====read files and get file contents =========// + @ApiOperation(value = "Get an Bcf Extractor Parameter", response = FileDetails.class) + @GetMapping("/file-code-read/{id}") + public ResponseEntity readFilesById(@PathVariable(value = "id") int id) { + Rn_Bcf_Extractor_Params params = extractorParamsService.getById(id); + String address_string = params.getAddress_string(); // uploaded path + String moved_address_string = params.getMoved_address_string(); // in a same folder + // String reference_address_string = params.getReference_address_string(); + + String filePath = moved_address_string.replace(projectPath, ""); + filePath = projectPath.concat(filePath); + StringBuilder code = new StringBuilder(); + File file = null; + try { + file = new File(filePath); + String fileName = file.getName(); + // String fileType = FilenameUtils.getExtension(fileName); + log.info("File Name : {}", fileName); + // log.info("File Type : {} ", fileType); + // BufferedReader br = new BufferedReader(new FileReader(file)); + // String fileString = FileUtils.readFileToString(file, StandardCharsets.UTF_8); + + FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr); + String line; + while ((line = br.readLine()) != null) { + code.append(line + "\n"); + } + fr.close(); + br.close(); + } catch (IOException e) { + log.debug("IO Exception Handled..."); + log.error(e.getMessage()); + e.getMessage(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_NOT_FOUND_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + FileDetails fileDetails = new FileDetails(); + fileDetails.setId(id); + fileDetails.setText(code.toString()); + + return new ResponseEntity(fileDetails, HttpStatus.OK); + } + + // ============= code editor (save data into file) ========= + @ApiOperation(value = "Save File Data") + @PostMapping(value = "/file-code-save") + public ResponseEntity codeSaveInFile(@Valid @RequestBody FileDetails fileDetails) { + + int paramsId = fileDetails.getId(); + String code = fileDetails.getText(); + log.debug("updated code : {}", code); + + Rn_Bcf_Extractor_Params params = extractorParamsService.getById(paramsId); + // String address_string = params.getAddress_string(); + String moved_address_string = params.getMoved_address_string(); + // String reference_address_string = params.getReference_address_string(); + + // projectPath + // String filePath = projectPath.concat(reference_address_string); + + String filePath = moved_address_string.replace(projectPath, ""); + filePath = projectPath.concat(filePath); + + File file = null; + try { + file = new File(filePath); + String fileName = file.getName(); + String fileType = FilenameUtils.getExtension(fileName); + log.info("File Name : {}", fileName); + log.info("File Type : {} ", fileType); +// if(fileType.equalsIgnoreCase("java") || fileType.equalsIgnoreCase("ts")|| fileType.equalsIgnoreCase("txt")) { +// code = Jsoup.parse(code).text(); +// } + BufferedWriter bw = new BufferedWriter(new FileWriter(file, false)); // OVER WRITE FILE + bw.write(code); + bw.close(); + } catch (FileNotFoundException e) { + log.debug("File Not Found Exception Handled..."); + log.error(e.getMessage()); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_NOT_FOUND_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } catch (IOException e) { + log.error(e.getMessage()); + log.debug("IOException Handled..."); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_CODE_SAVE_FAILURE); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.FILE_OPERATION_API_TITLE); + success.setMessage(Constant.FILE_CODE_SAVE_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // ======= STATIC CODE READ ========= + @ApiOperation(value = "Read Static File and Return Code", response = FileDetails.class) + @GetMapping("/static-file-code-read/{id}") + public ResponseEntity readStaticFilesById(@PathVariable(value = "id") int id) { + Rn_Bcf_Extractor_Params param = extractorParamsService.getById(id); + String name_string = param.getName_string(); + + + String moved_address_string = param.getMoved_address_string(); // in a same folder + + + String staticFileName = "SE_".concat(name_string); + String staticPath = moved_address_string.replace(projectPath, ""); + staticPath = staticPath.substring(0, staticPath.lastIndexOf("/")); + staticPath = staticPath.concat("/static_code/"); // static code folder + staticPath = staticPath.concat(staticFileName); // static filde name + + // projectPath + String filePath = projectPath.concat(staticPath); + +// String filePath = staticPath; //by gk + + StringBuilder code = new StringBuilder(); + File file = null; + try { + file = new File(filePath); + String fileName = file.getName(); + // String fileType = FilenameUtils.getExtension(fileName); + log.info("Static File Name : {}", fileName); + // BufferedReader br = new BufferedReader(new FileReader(file)); + // String fileString = FileUtils.readFileToString(file, StandardCharsets.UTF_8); + + FileReader fr = new FileReader(file); + BufferedReader br = new BufferedReader(fr); + String line; + while ((line = br.readLine()) != null) { + code.append(line + "\n"); + } + fr.close(); + br.close(); + } catch (IOException e) { + log.debug("IO Exception Handled..."); + log.error(e.getMessage()); + e.getMessage(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_NOT_FOUND_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + String codee = code.substring(0, code.lastIndexOf("\n")); // remove last line break + FileDetails fileDetails = new FileDetails(); + fileDetails.setId(id); + fileDetails.setText(codee); + return new ResponseEntity(fileDetails, HttpStatus.OK); + } + + // ======= STATIC CODE SAVE INTO FILE ========= + @ApiOperation(value = "Save File Data") + @PostMapping(value = "/static-file-code-save") + public ResponseEntity staticCodeSaveInFile(@Valid @RequestBody FileDetails fileDetails) { + + int paramsId = fileDetails.getId(); + String code = fileDetails.getText(); + // log.debug("updated code : {}", code); + + Rn_Bcf_Extractor_Params param = extractorParamsService.getById(paramsId); + // String address_string = param.getAddress_string(); + String name_string = param.getName_string(); + String moved_address_string = param.getMoved_address_string(); // in a same folder + + String staticFileName = "SE_".concat(name_string); + String staticPath = moved_address_string.replace(projectPath, ""); + staticPath = staticPath.substring(0, staticPath.lastIndexOf("/")); + staticPath = staticPath.concat("/static_code/"); // static code folder + staticPath = staticPath.concat(staticFileName); // static file name + + // projectPath + String filePath = projectPath.concat(staticPath); + + File file = null; + try { + file = new File(filePath); + String fileName = file.getName(); + log.info("Static File Name : {}", fileName); + + BufferedWriter bw = new BufferedWriter(new FileWriter(file, false)); // OVER WRITE FILE + bw.write(code); + bw.close(); + } catch (FileNotFoundException e) { + log.debug("File Not Found Exception Handled..."); + e.printStackTrace(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_NOT_FOUND_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } catch (IOException e) { + e.printStackTrace(); + log.debug("IOException Handled..."); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.FILE_OPERATION_API_TITLE); + error.setMessage(Constant.FILE_CODE_SAVE_FAILURE); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.FILE_OPERATION_API_TITLE); + success.setMessage(Constant.FILE_CODE_SAVE_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // @PostMapping("/upload") + @PostMapping(value = "/upload-file", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public ResponseEntity uploadToLocalFileSystem(@RequestParam("file") MultipartFile file) { + + System.out.println("calling upload controller"); + String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + Path path = Paths.get(projectPath + fileName); + try { + Files.copy(file.getInputStream(), path, StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + e.printStackTrace(); + } + String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath().path("/files/download/") + .path(fileName).toUriString(); + return ResponseEntity.ok(fileDownloadUri); + } + + @RequestMapping(value = "/redirect", produces = { MediaType.APPLICATION_JSON_VALUE }, method = RequestMethod.POST) + public ResponseEntity registerBatchUser(@RequestParam("file") MultipartFile file) { + if (!file.isEmpty()) { + try { + byte[] bytes = file.getBytes(); + BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(new File(projectPath))); + stream.write(bytes); + stream.close(); + + } catch (Exception e) { + Map FeedBackStatus = new HashMap(); + return ResponseEntity.ok(FeedBackStatus); + } + + } + return ResponseEntity.ok(null); + } + + @PostMapping(value = "/uploadFile", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) + public String uploadFile(@RequestParam("file") MultipartFile file) throws IOException { + String fileName = file.getOriginalFilename(); + return fileName; + } + + @RequestMapping(value = "/upload-file-2", method = RequestMethod.POST) + public @ResponseBody ResponseEntity> handleFileUpload( + @RequestParam("file") MultipartFile file) { + String name = file.getName(); + System.out.println(name); + + Map FeedBackStatus = new HashMap(); + FeedBackStatus.put("status", "success"); + + return ResponseEntity.ok(FeedBackStatus); + + } + + /* + * @PostMapping(value = "/uploadFile", consumes = + * MediaType.MULTIPART_FORM_DATA_VALUE) public String + * uploadFile2(@RequestParam("file") MultipartFile file)throws IOException { + * Path tempFile = Files.createTempFile(null, null); + * + * Files.write(tempFile, MultipartFile.getBytes()); File fileToSend = + * tempFile.toFile(); + * + * MultiValueMap parameters = new LinkedMultiValueMap<>(); + * + * parameters.add("file", new FileSystemResource(fileToSend)); + * + * HttpHeaders headers = new HttpHeaders(); headers.set("Content-Type", + * "multipart/form-data"); + * + * HttpEntity httpEntity = new HttpEntity<>(parameters, headers); + * + * try { restTemplate.exchange(apiUrl, HttpMethod.POST, httpEntity, + * MyClazz.class); } finally { fileAEnviar.delete(); } + * + * } + */ + + @PostMapping("/upload-gb") + public ResponseEntity uploadFileGb(@RequestParam("file") MultipartFile file) { + return ResponseEntity.ok("working"); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/DynamicCodeExtractionController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/DynamicCodeExtractionController.java new file mode 100644 index 0000000..e5f7dce --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/DynamicCodeExtractionController.java @@ -0,0 +1,352 @@ +package com.realnet.codeextractor.controller; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletRequest; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; +import org.hibernate.boot.model.source.spi.CascadeStyleSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.servlet.ModelAndView; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; +import com.realnet.codeextractor.service.Rn_Bcf_Exception_Rule_Library_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Params_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Rule_Library_Service; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.logging.LogExecutionTime; +import com.realnet.utils.Constant; +import com.realnet.utils.RealNetUtils; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Code Extractor" }) +public class DynamicCodeExtractionController { + @Value("${projectPath}") + private String projectPath; + + @Autowired + private Rn_Bcf_Extractor_Service rn_bcf_extractor_service; + + @Autowired + private Rn_Bcf_Extractor_Params_Service rn_bcf_extractor_params_service; + + @Autowired + private Rn_Bcf_Rule_Library_Service bcfRuleLibraryService; + +// @Autowired +// private RealNetUtils utils; + + @Autowired + Rn_Bcf_Exception_Rule_Library_Service rn_bcf_rule_exception_library_service; + + @LogExecutionTime + @ApiOperation(value = "Dynamic Code Extraction") + @GetMapping(value = "/dynamic_code_extraction") + public ResponseEntity dynamicCodeExtraction(@RequestParam(value = "header_id") Integer headerId) + throws IOException + { + + Rn_Bcf_Extractor extractor = rn_bcf_extractor_service.getById(headerId); + String technology_stack = extractor.getTech_stack(); + String object_type = extractor.getObject_type(); + String sub_object_type = extractor.getSub_object_type(); + + System.out.println("FROM Rn_Bcf_Extractor = " + technology_stack + " || " + object_type + " || " + sub_object_type+"||"+headerId); + + // PARAMS + List params = extractor.getRn_bcf_extractor_Params(); +// +// // FILE NAME VARIABLE NAMES IN BUILDER CODE +// Map map = new HashMap(); +// map.put("controller_name_first_upper", "Nil_final_controller"); +// map.put("table_name_first_upper", "Rn_nil_final"); +// map.put("table_name_lower", "rn_nil_final"); +// map.put("table_name_upper", "RN_NIL_FINAL"); +// map.put("service_name_first_upper", "Nil_final_service"); +// map.put("service_name_lower", "nil_final_service"); +// map.put("service_impl_name_first_upper", "Nil_final_serviceimpl"); +// map.put("repository_name_first_upper", "Rn_header_test1_repository"); +// map.put("repository_name_lower", "rn_header_test1_repository"); +// map.put("ng_add_form_component_name", "AddRn_header_test1Component"); +// map.put("ng_all_grid_view_component_name", "AllRn_header_test1Component"); +// map.put("ng_read_only_component_name", "Rn_header_test1DetailsComponent"); +// map.put("ng_edit_component_name", "EditRn_header_test1Component"); +// map.put("ng_extension_add_component_name", "AddExtRn_header_test1Component"); +// map.put("ng_routing_module_ts_name", "Rn_header_test1RoutingModule"); +// map.put("ng_component_ts_name", "Rn_header_test1Component"); +// map.put("ng_module_ts_name", "Rn_header_test1Module"); +// map.put("ng_service_ts_name", "Rn_header_test1Service"); +// map.put("ng_model_ts_name ", "Rn_header_test1_t"); + + // STATIC FILES ( SE_FILE_NAME.EXT) + ArrayList staticFiles = new ArrayList(); + + + + try { + + // PARAMETERS TABLE VALUE + for (Rn_Bcf_Extractor_Params param : params) + { +// System.out.println("---Exception rule for loop--"); + boolean is_extraction_enabled = param.isIs_extraction_enabled(); + boolean is_creation_enabled = param.isIs_creation_enabled(); + String path = param.getMoved_address_string(); + + + File file = new File(path); + String parentPath = file.getParent(); + + String name = file.getName(); + String ConvertedFileName = "SE_" + name; + + // STATIC FILES DIRECTORY + String staticFileParentDir = parentPath + File.separator + "static_code"; + File staticFile = new File(staticFileParentDir + File.separator + ConvertedFileName); + + // STATIC FILE PATH + String staticFileDir = staticFile.getAbsolutePath().replace("\\", "/"); + // ADD STATIC FILE PATH TO ARRAYLIST + if (is_extraction_enabled && is_creation_enabled) { + // System.out.println("STATIC FILE DIR ADDED TO ARRAYLIST = " + staticFileDir); + staticFiles.add(staticFileDir); + + } + } + + // package part MODULE_NAME ADD + + + for (String staticDir : staticFiles) + { + + File file = new File(staticDir); + Path path = Paths.get(staticDir); + StringBuilder code = new StringBuilder(); + List lines = Files.readAllLines(path, StandardCharsets.UTF_8); + + + for (String line : lines) + { + + if (line.startsWith("\"package")) + { + int i = line.lastIndexOf("."); + String head = line.substring(0, i + 1); + String tail = line.substring(i); + String moduleName = "\" + module_name + \""; + line = head + moduleName + tail; + } + code.append(line + "\n"); + + } + + //System.out.println(code); + BufferedWriter br = new BufferedWriter(new FileWriter(file)); // replaced string + br.write(code.toString()); + br.close(); + + } + + + + int count=0; + for (String staticDir : staticFiles) + { + File file1 = new File(staticDir); + Path path1 = Paths.get(staticDir); + StringBuilder code = new StringBuilder(); + StringBuilder code2 = new StringBuilder(); + List lines = Files.readAllLines(path1, StandardCharsets.UTF_8); + for (String line : lines) + { + if (line.startsWith("\"public class")) + { +// + String file_name_var=params.get(count).getFile_name_var(); + +// System.out.println("file namevar "+file_name_var); + + + line = "\"public class \" + "+file_name_var+""+1+" + \"{\"+"; + } + + + + if (line.startsWith("\"public interface")) + { +// + String file_name_var=params.get(count).getFile_name_var(); + +// System.out.println("file namevar "+file_name_var); + + + line = "\"public interface \" + "+file_name_var+""+1+" + \"{\"+"; + } + + + if (line.startsWith("\" templateUrl")) + { +// " templateUrl: './readonly.component.html'," + "\r\n" + + String file_name_var=params.get(count).getFile_name_var(); + +// System.out.println("file namevar "+file_name_var); + + + line = " \" templateUrl: './\"+"+file_name_var+""+1+"+\".html',\"" + "\r\n \n" +"+" ; + } + + if (line.startsWith("\" styleUrls")) + { +// " styleUrls: ['./readonly.component.scss']" + "\r\n" + + String file_name_var=params.get(count).getFile_name_var(); + +// System.out.println("file namevar "+file_name_var); + + + line = " \" styleUrls: ['./\"+"+file_name_var+""+1+"+\".scss']\"" + "\r\n \n"+"+" ; + } + + if (line.startsWith("\"export class")) + { +// "export class ReadonlyComponent implements OnInit {" + "\r\n" + + String file_name_var=params.get(count).getFile_name_var(); + +// System.out.println("file namevar "+file_name_var); + + + line = "\"export class \"+"+file_name_var+""+2+"+\"Component implements OnInit {\"" + "\r\n"+"+" ; + } + + + + code.append(line + "\n"); + + } + count++; + BufferedWriter br = new BufferedWriter(new FileWriter(file1)); // replaced string + br.write(code.toString()); + br.close(); + } + + + + + + + + + // APPLY ALL RULES PRESENT HERE + List rules = bcfRuleLibraryService.getAll(); + + int rulesOuterCount = 0; + for (Rn_Bcf_Rules rule : rules) + { + rulesOuterCount++; + // System.out.println("RULES FOR COUNT = " + ++rulesOuterCount); + String start = rule.getIdentifier_start_string(); + String end = rule.getIdentifier_end_string(); + String replaceWith = rule.getReplacement_string(); + + String tech_stack = rule.getTech_stack(); + String sub_object_type2 = rule.getSub_object_type(); + String object_type2 = rule.getObject_type(); + replaceWith = replaceWith.concat(""); + + if(technology_stack.equals(tech_stack) && sub_object_type.equals(sub_object_type2) && object_type.equals(object_type2)) + { +// System.out.println("main tech stack"+technology_stack+" new "+tech_stack); +// System.out.println("main subobject "+sub_object_type+" new "+sub_object_type2); +// System.out.println("main object "+object_type+" new "+object_type2); + + + int dirCount = 0; + for (String staticDir : staticFiles) + { + dirCount++; + + File staticFile = new File(staticDir); + String staticFileName = staticFile.getName(); + + // System.out.println("========" + staticFileName + "============="); + String fileString = FileUtils.readFileToString(staticFile, StandardCharsets.UTF_8); + String fileType = FilenameUtils.getExtension(staticFileName); + + // don't check empty file for replacement.. + if (!fileString.isEmpty()) { + + // RULE APPLY + String finalString = RealNetUtils.stringReplace(fileString, start, end, replaceWith, + fileType); + + BufferedWriter bw = new BufferedWriter(new FileWriter(staticFile, false)); // replaced + // string + bw.write(finalString); + bw.close(); + + } + } + } + + +// System.out.println("loop count::"+dirCount); + + } + System.out.println("rules outer countt::"+rulesOuterCount); + } catch (FileNotFoundException e) { + e.printStackTrace(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.DYNAMIC_EXTRACTION_FAILED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.DYNAMIC_EXTRACTION_SUCCESS); + successPojo.setSuccess(success); + log.debug("Response {} ", successPojo); + return new ResponseEntity(successPojo, HttpStatus.OK); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/FileUploadController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/FileUploadController.java new file mode 100644 index 0000000..48df5f9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/FileUploadController.java @@ -0,0 +1,39 @@ +package com.realnet.codeextractor.controller; + +import org.codehaus.jackson.annotate.JsonIgnoreProperties; +import org.codehaus.jackson.map.annotate.JsonSerialize; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.databind.SerializationFeature; + + + +//@JsonIgnoreProperties(ignoreUnknown=true) +@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) +//@JacksonFeatures(serializationDisable = {SerializationFeature.FAIL_ON_EMPTY_BEANS}) +@JsonSerialize +@RestController +public class FileUploadController { + + @PostMapping("/upload-gb") + public ResponseEntity uploadFileGb(@RequestParam("file") MultipartFile file[]){ + + for(MultipartFile files:file) { + System.out.println("File name::"+files.getOriginalFilename()); + + } + return new ResponseEntity(HttpStatus.OK); + + } + + @PostMapping("/upload-string") + public ResponseEntity uploadFileString(){ + return ResponseEntity.ok("working"); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/MasterCodeBuild_gk.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/MasterCodeBuild_gk.java new file mode 100644 index 0000000..0ee1159 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/MasterCodeBuild_gk.java @@ -0,0 +1,684 @@ +package com.realnet.codeextractor.controller; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.flf.service.FieldTypeService; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.utils.Constant; + +import io.swagger.annotations.Api; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Build Master Builder" }) +public class MasterCodeBuild_gk { + @Value("${projectPath}") + private String projectPath; + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Autowired + private Rn_Bcf_Extractor_Service rn_bcf_extractor_service; + + @Autowired + private FieldTypeService fieldTypeService; + // private static final Logger logger = + // Logger.getLogger(BuildMasterBuilderController.class); + + @GetMapping("/build_master_builder") + public ResponseEntity masterControllerBuilder(@RequestParam(value = "id") Integer id) + throws IOException, FileNotFoundException { + StringBuilder variablesDynamicCode = new StringBuilder(); + StringBuilder stringBuilderDynamicCode = new StringBuilder(); +// StringBuilder stringBuilder = new StringBuilder(); + + // RN_BCF_CODE_EXTRACTOR_T ID + // int eid = Integer.parseInt(id); + + Rn_Bcf_Extractor extractor = rn_bcf_extractor_service.getById(id); + String technology_stack = extractor.getTech_stack(); + String object_type = extractor.getObject_type(); + String sub_object_type = extractor.getSub_object_type(); + + // RN_BCF_CODE_EXTRACTOR_PARAMS_T VALUES + // List params = + // rn_bcf_extractor_params_service.getByHeaderId(eid); + List params = extractor.getRn_bcf_extractor_Params(); + + int j = 0; + for (Rn_Bcf_Extractor_Params param : params) { + boolean is_creation_enabled = param.isIs_creation_enabled(); +// param.isIs_extraction_enabled(); + String path = param.getMoved_address_string(); + File file = new File(path); + String parentPath = file.getParent(); + + String name = file.getName(); + String convertedFileName = "SE_" + name; + + // STATIC CODE DIRECTORY + String staticFileParentDir = parentPath + File.separator + "static_code"; + File staticFile = new File(staticFileParentDir + File.separator + convertedFileName); + + // HERE WE GET FILE INSIDE DATA + String fileToString = FileUtils.readFileToString(staticFile, StandardCharsets.UTF_8); + + // ex. controller_file (FROM PARAMS TABLE) + String file_name_var = param.getFile_name_var() + j; + + // ex. ui_name + "controller" + String file_name_dynamic_string = param.getFile_name_dynamic_string(); + + // ex. String controller_file = ui_name + "controller"; + variablesDynamicCode + .append("String " + file_name_var + " = " + "\"" + file_name_dynamic_string + "\"" + ";\r\n"); + + System.out.println("file name dynamic str " + file_name_dynamic_string); + // change file name entity +// String mainstr1=file_name_dynamic_string; +// String saleesent1=mainstr1.replace(".java", " "); +// System.out.println("updated filename"+saleesent1); +// System.out.println(file_name_dynamic_string.contains(".java")); +// System.out.println(file_name_dynamic_string.contains(".ts")); +// System.out.println(file_name_dynamic_string.contains(".scss")); +// System.out.println(file_name_dynamic_string.contains(".html")); + + // HERE WE CHECK AND APPEND FILE NAME + if (file_name_dynamic_string.contains(".java")) { + variablesDynamicCode + .append("String mainstr" + j + " = " + file_name_var + ";\r\n" + "String " + file_name_var + "" + + 1 + "=mainstr" + j + ".replace(\".java\", \"\");\r\n" + "" + "\r\n" + "\n"); + } else if (file_name_dynamic_string.contains(".ts")) { + variablesDynamicCode.append("String mainstr" + j + " = " + file_name_var + ";\r\n" + "String " + + file_name_var + "" + 1 + "=mainstr" + j + ".replace(\".ts\", \"\");\r\n" + "" + "\r\n" + + "String " + file_name_var + "" + 2 + "=mainstr" + j + ".replace(\".component.ts\", \"\");\r\n" + + "" + "\r\n" + "\n"); + + } else if (file_name_dynamic_string.contains(".html")) { + variablesDynamicCode + .append("String mainstr" + j + " = " + file_name_var + ";\r\n" + "String " + file_name_var + "" + + 1 + "=mainstr" + j + ".replace(\".html\", \"\");\r\n" + "" + "\r\n" + "\n"); + } else if (file_name_dynamic_string.contains(".scss")) { + variablesDynamicCode + .append("String mainstr" + j + " = " + file_name_var + ";\r\n" + "String " + file_name_var + "" + + 1 + "=mainstr" + j + ".replace(\".scss\", \"\");\r\n" + "" + "\r\n" + "\n"); + } else { + System.out.println("not found"); + } + + // ======= MODULE NAME SHOULD COME FROM THE SESSION ======== + // String moduleName = "\" + module_name + \"/\""; + String moduleName = "\" + module_name + \"/"; + + String modulePath = param.getTotal_project_path_dynamic_string(); + // System.out.println("MODULE PATH = " + modulePath); + if (modulePath.endsWith(".java")) { + String parent = modulePath.substring(0, modulePath.lastIndexOf("/")); // 1 + String lvl2Parent = parent.substring(0, parent.lastIndexOf("/") + 1); // 2 + String tail0 = modulePath.substring(parent.lastIndexOf("/") + 1); // 3 + tail0 = tail0.substring(0, tail0.lastIndexOf("/") + 1); // remove the .java file name + modulePath = lvl2Parent + moduleName + tail0; + } else { + // add module name in spring project + modulePath = modulePath.substring(0, modulePath.lastIndexOf("/") + 1); + String data0 = modulePath.substring(0, modulePath.lastIndexOf("/") + 1); + String tail0 = modulePath.substring(modulePath.lastIndexOf("/") + 1); + data0 += moduleName + tail0; + modulePath = data0; + } +// System.out.println("MANUPULATED module PATH = " + modulePath); + +// String ref_address_string = param.getReference_address_string(); +// ref_address_string = ref_address_string.substring(0, ref_address_string.lastIndexOf("/")+1); + + String total_address_path = param.getTotal_project_path_dynamic_string(); + total_address_path = total_address_path.substring(0, total_address_path.lastIndexOf("/") + 1); + System.out.println("total path : " + total_address_path + "\n"); + String finalDir = ""; + +// + // here we set file path + String dest_path = "projectPath + \"" + "/Projects/\" + project_name + \"" + total_address_path; + System.out.println("dest path : " + dest_path); + // String finalDir = dirString + "/" + "\" + " + file_name_var; + finalDir = dest_path + "\" + " + file_name_var; + System.out.println(finalDir); + + // module_dest_path = "projectPath + \"" + "/Projects/\" + project_name + " + + // modulePath; +// String dest_path = "projectPath + \"" + "/Projects/\" + project_name + \"" + modulePath; + + // String finalDir = dirString + "/" + "\" + " + file_name_var; + finalDir = dest_path + "\" + " + file_name_var; + System.out.println("NIL FINAL DIR = " + finalDir + "\n"); + + if (is_creation_enabled) { + StringBuilder fileCode = new StringBuilder(); + + if (file_name_dynamic_string.contains("entity")) { +// String entity = entity(path, "test"); + if (fileToString.isEmpty()) { + fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\");\r\n"); + } else { + fileCode.append(" " + file_name_var + "Code.append(" + fileToString + ");\r\n"); + } + + } else if (file_name_dynamic_string.contains("repository") + || file_name_dynamic_string.contains("repo")) { +// String repo = repo(path, "test"); + if (fileToString.isEmpty()) { + fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\");\r\n"); + } else { + fileCode.append(" " + file_name_var + "Code.append(" + fileToString + ");\r\n"); + } + + } else if (file_name_dynamic_string.contains("service")) { +// String service = service(path, "test"); + if (fileToString.isEmpty()) { + fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\");\r\n"); + } else { + fileCode.append(" " + file_name_var + "Code.append(" + fileToString + ");\r\n"); + } + + } else if (file_name_dynamic_string.contains("controller")) { +// String controller = controller(path, "test"); + if (fileToString.isEmpty()) { + fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\");\r\n"); + } else { + fileCode.append(" " + file_name_var + "Code.append(" + fileToString + ");\r\n"); + } + + } else { +// String other = other(path, "test"); + + if (file_name_dynamic_string.isEmpty()) { + fileCode.append(" " + file_name_var + "Code.append(\"" + fileToString + "\"\r\n"); + } else { + fileCode.append(" " + file_name_var + "Code.append(" + fileToString + "\r\n"); + } + + } + // EMPTY FILE CODE WILL NOT GO IN THIS LOOP + + stringBuilderDynamicCode.append(" StringBuilder " + file_name_var + "Code = new StringBuilder();\r\n" + // + " " + file_name_var + "Code.append(" + fileToString + ");\r\n" + + fileCode + "\r\n" + + + " File " + file_name_var + "File = new File(" + finalDir + ");\r\n" + + " System.out.println(\"Directory name = \" + " + file_name_var + "File);\r\n" + // == CREATE PARENT DIR IF NOT EXIST=== + + " File " + file_name_var + "FileParentDir = new File(" + file_name_var + + "File.getParent());\r\n" + " if(!" + file_name_var + "FileParentDir.exists()) {\r\n" + " " + + file_name_var + "FileParentDir.mkdirs();\r\n" + " }\r\n" + // == + + " if (!" + file_name_var + "File.exists()) {\r\n" + " " + file_name_var + + "File.createNewFile();\r\n" + " }\r\n" + " " + "fw = new FileWriter(" + + file_name_var + "File.getAbsoluteFile());\r\n" + " bw = new BufferedWriter(fw);\r\n" + + " " + " bw.write(" + file_name_var + "Code.toString());\r\n" + " bw.close();\r\n" + + "\r\n"); + + } + j++; + } + + // CHILD MASTER BUILDER NAME DEPENDS ON (TECH_STACK, OBJ_TYPE, SUB_OBJ_TYPE) + String childMasterBuilderName = technology_stack + "_" + object_type + "_" + sub_object_type + "_Builder"; + childMasterBuilderName = childMasterBuilderName.replace(" ", "_"); + childMasterBuilderName = childMasterBuilderName.replaceAll("[-]+", "_"); + + StringBuilder childMasterBuilderCode = new StringBuilder(); +// String action_builder_code = fieldTypeService.angular_action_builder_code(); + + childMasterBuilderCode.append("package com.realnet.builders;\r\n" + "\r\n" + + "import java.io.BufferedWriter;\r\n" + "import java.io.File;\r\n" + "import java.io.FileWriter;\r\n" + + "import java.io.IOException;\r\n" + "import java.util.ArrayList;\r\n" + "import java.util.Date;\r\n" + + "import java.util.List;\r\n" + "import java.util.Optional;\r\n" + "\r\n" + + "import org.modelmapper.ModelMapper;\r\n" + + "import org.springframework.beans.factory.annotation.Autowired;\r\n" + + "import org.springframework.beans.factory.annotation.Value;\r\n" + + "import org.springframework.http.HttpStatus;\r\n" + "import org.springframework.http.MediaType;\r\n" + + "import org.springframework.http.ResponseEntity;\r\n" + + "import org.springframework.web.bind.annotation.GetMapping;\r\n" + + "import org.springframework.web.bind.annotation.PathVariable;\r\n" + + "import org.springframework.web.bind.annotation.RequestMapping;\r\n" + + "import org.springframework.web.bind.annotation.RestController;\r\n" + "\r\n" + + "import com.google.gson.JsonElement;\r\n" + "import com.google.gson.JsonObject;\r\n" + + "import com.google.gson.JsonParser;\r\n" + "import com.google.gson.JsonArray;\r\n" + "\r\n" + + "import com.realnet.actionbuilder.service.Rn_Cff_ActionBuilder_Service;\r\n" + + "import com.realnet.flf.service.FieldTypeService;\r\n" + + "import com.realnet.fnd.service.Rn_LookUp_Service;\r\n" + + "import com.realnet.formdrag.repository.Rn_wf_lines_3Repository;\r\n" + + "import com.realnet.formdrag.entity.Rn_wf_lines_3;\r\n" + "" + + "import com.realnet.wfb.service.Rn_WireFrame_Service;\r\n" + "\r\n" + + "import io.swagger.annotations.Api;" + + + "\r\n" + "@RestController\r\n" + // CONTROLLER NAME SHOULD CHANGE + // DEPENDS ON TECH_STACK/OBJECT_tYPE/SUB_OBJECT_TYPE + + "@RequestMapping(value = \"/api\", produces = MediaType.APPLICATION_JSON_VALUE)\r\n" + + "@Api(tags = { \"Master Builder\" })\r\n" + "public class " + childMasterBuilderName + " {\r\n" + + "\r\n" + "\r\n" + " @Value(\"${angularProjectPath}\")\r\n" + " private String angularProjectPath;" + + " @Value(\"${projectPath}\")\r\n" + " private String projectPath;" + + // DEPENDENCIES FOR WIREFRAME + + " @Autowired\r\n" + " private Rn_WireFrame_Service wireFrameService;\r\n" + "\r\n" + + + " @Autowired\r\n" + " private Rn_LookUp_Service lookUpService;\r\n" + "@Autowired\r\n" + + " private Rn_wf_lines_3Repository repo;\n" + + + "\r\n" + " @Autowired\r\n" + " private Rn_Cff_ActionBuilder_Service actionBuilderService;\r\n" + + "\r\n" + " @Autowired\r\n" + " private ModelMapper modelMapper;\r\n" + "\r\n" + " @Autowired\r\n" + + " private FieldTypeService fieldTypeService;\r\n\n\n" + "@GetMapping(value = \"/" + + childMasterBuilderName + "/{header_id}\")\r\n" + + " public ResponseEntity createbyjson(@PathVariable Integer header_id) throws IOException {\r\n" + + " Optional wireframe = repo.findheader(header_id);\r\n" + "\r\n" + + " List tablename = new ArrayList<>();\r\n" + + " List entityname = new ArrayList<>();\r\n" + "\r\n" + + " JsonParser parser = new JsonParser();\r\n" + + " JsonElement element = parser.parse(wireframe.get().getModel());\r\n" + + " JsonObject jsonObject = element.getAsJsonObject();\r\n" + "\r\n" + + " JsonElement name = jsonObject.get(\"name\");\r\n" + " System.out.println(name);\r\n" + + " tablename.add(name.getAsString());\r\n" + "\r\n" + + " JsonElement desc = jsonObject.get(\"description\");\r\n" + + " System.out.println(desc);\r\n" + "// keys.add(\"desc :\"+desc.getAsString());\r\n" + + "\r\n" + " JsonElement element2 = jsonObject.get(\"attributes\");\r\n" + + " System.out.println(element2);\r\n" + "\r\n" + + " JsonArray jsonArray = element2.getAsJsonArray();\r\n" + + " System.out.println(jsonArray);\r\n" + "\r\n" + " for (JsonElement ar : jsonArray) {\r\n" + + "\r\n" + " JsonObject obj = ar.getAsJsonObject();\r\n" + "\r\n" + + " JsonElement type = obj.get(\"type\");\r\n" + " System.out.println(type);\r\n" + + "// keys.add(\"type :\"+type.getAsString());\r\n" + "\r\n" + + " JsonElement description = obj.get(\"description\");\r\n" + + " System.out.println(description);\r\n" + + "// keys.add(\"description :\"+description.getAsString());\r\n" + "\r\n" + + " JsonElement placeholder = obj.get(\"placeholder\");\r\n" + + "// System.out.println(placeholder);\r\n" + + "// keys.add(\"placeholder :\"+placeholder.getAsString());\r\n" + "\r\n" + + " JsonElement label = obj.get(\"label\");\r\n" + " System.out.println(label);\r\n" + + " entityname.add(label.getAsString());\r\n" + "\r\n" + " }\r\n" + "\r\n" + + " Date d = new Date();\r\n" + " String addString = \"_\";\r\n" + "\r\n" + + " // CALL BACKEND\r\n" +// + " backendservice.buildbackend(tablename, entityname, addString);\r\n" + "\r\n" +// + " // CALL FRONTEND\r\n" +// + " frontendservice.buildFrontend(tablename, entityname, addString);\r\n" +// + "" + +// + "\r\n" + " System.out.println(\"id ::\"+id);" +// + "\n lookUpService.createTable(id);" +// + " \n // extra button \n List extraButton = wireFrameService.getExtraButton(id);" +// + " \n // HEADER VALUE\r\n" + " Rn_Fb_Header rn_fb_header = wireFrameService.getById(id);\r\n" +// + " \r\n" + " // LINE VALUES\r\n" +// + " List rn_fb_lines = rn_fb_header.getRn_fb_lines();\r\n" + " \r\n" +// + " // MODULE DETAILS\r\n" + " Rn_Module_Setup module = rn_fb_header.getModule();\r\n" +// + " \r\n" + " // PROJECT DETAILS\r\n" +// + " Rn_Project_Setup project = module.getProject();\r\n" + " \r\n" +// // ATTRIBUTE FLEX +// + " // ATTRIBUTE FLEX VALUES\r\n" +// + " List attribute_flex_values = lookUpService.getExtensions();\r\n" +// + " String project_name = project.getProjectName();\r\n" + + " String project_name =" + "\"" + "test" + j + "\"" + ";\r\n" + +// + " String module_name = module.getModuleName();\r\n\n" + + "\r\r\rFileWriter fw = null;\r\n" + "BufferedWriter bw = null;\r\n" + variablesDynamicCode); + childMasterBuilderCode.append("" + + // ACTION BUILDER CODE + + + // =========== VARIABLE CODE WILL BE APPEND HERE ===============// + "\n" + stringBuilderDynamicCode.toString() + "\r\n" + + " return new ResponseEntity<>(\"created\", HttpStatus.CREATED);\r\n" + "}\r\n }"); + +// + FileWriter fw = null; + BufferedWriter bw = null; + try { + // FILE NAME SHOULD CHANGE DEPENDS ON TECH_STACK/OBJECT_tYPE/SUB_OBJECT_TYPE + File masterBuilderFile = new File( + projectPath + "/src/main/java/com/realnet/builders/" + childMasterBuilderName + ".java"); + if (!masterBuilderFile.exists()) { + masterBuilderFile.createNewFile(); + } + fw = new FileWriter(masterBuilderFile.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(childMasterBuilderCode.toString()); + bw.close(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.MASTER_BUILDER_API_TITLE); + error.setMessage(Constant.MASTER_BUILDER_FAILURE); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.MASTER_BUILDER_API_TITLE); + success.setMessage(Constant.MASTER_BUILDER_SUCCESS); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + public String entity(String path, String classname) throws IOException { + + return UpdateEntity(path, classname); + + } + + public String repo(String path, String classname) throws IOException { + return UpdateRepo(path, classname); + + } + + public String service(String path, String classname) throws IOException { + return UpdateService(path, classname); + + } + + public String controller(String path, String classname) throws IOException { + return UpdateController(path, classname); + + } + + public String other(String path, String classname) throws IOException { + + return UpdateRepo(path, classname); + + } + + public String UpdateEntity(String path, String classname) throws IOException { + +// String path = "C:\\Users\\Aniket\\Documents\\Entity.txt"; +// String classname = "gk"; + String addition = "for (int i = 0; i < entityname.size(); i++) {\r\n" + + " String string = entityname.get(i);\r\n" + + " String lowerCase = string.replaceAll(\" \", \"_\").toLowerCase();\r\n" + + " String add = \"\\n private \" + \"String\" + \" \" + lowerCase + \";\";\r\n" + + " intialize.append(add);\r\n" + + " }"; + /* + * RandomAccessFile writer=new + * RandomAccessFile("C:/Users/lenovo/Documents/demo.txt","rw"); + * + * writer.seek(position); writer.writeBytes(addition); writer.close(); + */ + String line = ""; + StringBuilder intialize = new StringBuilder(); + StringBuilder class_name = new StringBuilder(); + StringBuilder middle = new StringBuilder(); + StringBuilder end = new StringBuilder(); + BufferedReader br = new BufferedReader(new FileReader(path)); + while ((line = br.readLine()) != null) { + String[] data = line.split(","); + for (String d : data) { + if (d.contains("import") || d.contains("@Data") || d.contains("@Entity")) { + intialize.append("\""); + intialize.append(d); + intialize.append("\"+\n"); + } else if (d.contains("public")) { + + class_name.append("\"public class "+classname +" {\"+ \n"); +// intialize.append("\"+\n"); + } else if (d.contains("}")) { + intialize.append("\""); + end.append(d); + intialize.append("\"+\n"); + } + + } + } + br.close(); + + middle.append(addition); + StringBuilder finalstring = new StringBuilder(); + finalstring.append("\"StringBuilder intialize = new StringBuilder();\"+\r\n" + + "\" intialize.append(\"+"); + finalstring.append(intialize.toString()); + finalstring.append(class_name.toString()); + finalstring.append("\t\"@Id\"+\r\n" + + "\" @GeneratedValue(strategy = GenerationType.IDENTITY)\"+\r\n" + + "\" private int id;\");\n"); + finalstring.append(middle.toString()); + + + + return finalstring.toString(); + } + + public String UpdateRepo(String path, String classname) throws IOException { + + String line = ""; + StringBuilder intialize = new StringBuilder(); + StringBuilder class_name = new StringBuilder(); + StringBuilder middle = new StringBuilder(); + StringBuilder end = new StringBuilder(); + BufferedReader br = new BufferedReader(new FileReader(path)); + intialize.append("\""); + + + while ((line = br.readLine()) != null) { + String[] data = line.split(","); + for (String d : data) { + if (d.contains("import") || d.contains("@Repository") ) { + intialize.append("\""+d); + intialize.append("\"+\n"); + } else if (d.contains("public")) { + class_name.append("\""+"public class "+classname +" extends JpaRepository<"+classname + ", Long> " +"{"+"\"+"); + class_name.append("\n"); + } + + } + } + br.close(); + + StringBuilder finalstring = new StringBuilder(); + finalstring.append(" \""+" StringBuilder repo = new StringBuilder();"+"\"+\n" + +" \""+"" + +" "+ "repo.append("); + finalstring.append(intialize.toString()); + finalstring.append(class_name.toString()); + finalstring.append("\"+}\""); + finalstring.append("\");"+"\""); + + return finalstring.toString(); + } + + public String UpdateService(String path, String classname) throws IOException { + + String line = ""; + String apiName ="Api"; + + StringBuilder intialize = new StringBuilder(); + StringBuilder class_name = new StringBuilder(); + StringBuilder middle = new StringBuilder(); + StringBuilder end = new StringBuilder(); + BufferedReader br = new BufferedReader(new FileReader(path)); + + intialize.append("\"import java.util.List;\"+\r\n" + + "\r\n" + "\"import org.springframework.beans.factory.annotation.Autowired;\"+\r\n" + + "\" import org.springframework.stereotype.Service;\"+\n"); + + intialize.append("\n\"@Service\"+\n"); + + intialize.append("\"@RequestMapping(value = " +"\"/"+ apiName+ "\")\"+\n" + + "\"@RestController\"+\r\n"); + + + + class_name.append("\"public class "+ classname +"Service {\"+\r\n" + + + "\" @Autowired\"+\r\n" + + "\" private " + classname+ "Service Service;\"+\n"); + + + middle.append( + "\" @Autowired\r\n" + "private " + classname + "Repository " + "Repository;\"+\n"); + + middle.append("\"public "+ classname +" Savedata("+classname+ " data) {\"+\r\n" + + " \" return Repository.save(data);\"+ \r\n" + " \" }\"+\r\n" + "\r\n" + + " \" \r\n" + "public List<" + classname + "> getdetails() {\"+\r\n" + + " \" return (List<" + classname + ">) Repository.findAll();\"+\r\n" + " }\r\n" + + "\r\n" + "\r\n" + "\"public "+ classname +" getdetailsbyId(Long id) {\"+\r\n" + + "\" return Repository.findById(id).get();\"+\r\n" + "\" }\"+\r\n" + "\r\n" + "\r\n" + + "\" public void delete_by_id(Long id) {\"+\r\n" + + "\" Repository.deleteById(id);\"+\r\n" + "}\"+\r\n" + "\r\n" + "\r\n"); + + middle.append("\"public "+ classname +" update("+ classname +" data,Long id) {\"+\n" + + " \""+ classname +" old = Repository.findById(id).get();\"+\n"); +// middle.append(" for (EntityBuild en : ent) { +// String name = en.getName(); +// +// String string = name.substring(0,1).toUpperCase()+name.substring(1); +// middle.append("old.set"+string+ "(data.get"+string+"());\r\n"); +// } + middle.append("\"final "+ classname +" test = Repository.save(old);\"+\r\n" + + " \" return test;\"+" + + "\"}\"+" + + "\"}\"+"); + + + + + br.close(); + + StringBuilder finalstring = new StringBuilder(); + finalstring.append("\" StringBuilder service = new StringBuilder();\"+\r\n" + + "\" service.append(\"+"); + finalstring.append(intialize.toString()); + finalstring.append(class_name.toString()); + finalstring.append(middle.toString()); + finalstring.append("\");"); + + // +// FileWriter fw = null; +// BufferedWriter bw = null; +// File masterBuilderFile = new File(newpath + "test" + ".java"); +// if (!masterBuilderFile.exists()) { +// masterBuilderFile.createNewFile(); +// } +// fw = new FileWriter(masterBuilderFile.getAbsoluteFile()); +// bw = new BufferedWriter(fw); +// bw.write(finalstring.toString()); +// bw.close(); + + + return finalstring.toString(); + } + + public String UpdateController(String path, String classname) throws IOException { + + String line = ""; + String apiName ="Api"; + + StringBuilder intialize = new StringBuilder(); + StringBuilder class_name = new StringBuilder(); + StringBuilder middle = new StringBuilder(); + StringBuilder end = new StringBuilder(); + BufferedReader br = new BufferedReader(new FileReader(path)); + + + intialize.append("import org.springframework.beans.factory.annotation.Autowired;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.DeleteMapping;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.GetMapping;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.PathVariable;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.PostMapping;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.PutMapping;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.RequestBody;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.RequestParam;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.RestController;\"+\r\n" + + "\" import org.springframework.web.bind.annotation.*;\"+\r\n"); + + intialize.append("\" @RequestMapping(value = " +"\"/"+ apiName+ "\")\"+\n" + + "\" @RestController \"+\r\n "); + class_name.append("\" public class "+ classname +"Controller {\"+\r\n" + + + "\" @Autowired \"+ \r\n" + + "\" private " + classname+ "Service Service; \"+\n"); + + middle.append( "\" @PostMapping("+"\"/" + classname+")\"+\r\n" + + " \r\n" + + " \" public " + classname+ " Savedata(@RequestBody " + classname+ " data) { \"+ \r\n" + + " \" " + classname+ " save = Service.Savedata(data) ;\"+\r\n" + + " \" return save;\"+\r\n" + + " \"+ }\"+\r\n" +// + " \" \r\n \"+" +// + " \" \r\n \"+" + + " \" @GetMapping(\"/" + classname+ "\")\"+\r\n" + + " \" public List<" + classname+ "> getdetails() { \"+ \r\n" + + " \" List<" + classname+ "> get = Service.getdetails(); \"+ \r\n" + + " \" return get;\"+\r\n\" } \"+\n" + + "\" @GetMapping(\"/" + classname+ "/{id}\")\"+\r\n" + + " \" public " + classname+ " getdetailsbyId(@PathVariable Long id ) {\"+\r\n" + + " \" " + classname+ " get = Service.getdetailsbyId(id);\"+\r\n" + + "\" return get;\"+\r\n" + + " \" }\"+\n" + + "\" @DeleteMapping(\"/" + classname+ "/{id}\")\"+\r\n" + + " \" public void delete_by_id(@PathVariable Long id ) {\"+\r\n" + + " \" Service.delete_by_id(id);\"+\r\n" +// + " \" \"+ \r\n" + + " \"\"+ }\n" + + "\" @PutMapping(\"/" + classname+"/{id}\")\"+\r\n" + + "\" public " + classname+ " update(@RequestBody " + classname+ " data,@PathVariable Long id ) {\"+\r\n" + + " \" " + classname+ " update = Service.update(data,id);\"+\r\n" + + "\" return update;\"+\r\n" + + "\" }\"+\n\"}\"+"); + + + + + br.close(); + + StringBuilder finalstring = new StringBuilder(); + finalstring.append("\" StringBuilder controller = new StringBuilder();\"+\r\n" + + "\"controller.append("); + finalstring.append(intialize.toString()); + finalstring.append(class_name.toString()); + finalstring.append(middle.toString()); +// finalstring.append("}"); + finalstring.append("\");"); + + // +// FileWriter fw = null; +// BufferedWriter bw = null; +// File masterBuilderFile = new File(newpath + "test" + ".java"); +// if (!masterBuilderFile.exists()) { +// masterBuilderFile.createNewFile(); +// } +// fw = new FileWriter(masterBuilderFile.getAbsoluteFile()); +// bw = new BufferedWriter(fw); +// bw.write(finalstring.toString()); +// bw.close(); + + + return finalstring.toString(); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/NamingConvensionController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/NamingConvensionController.java new file mode 100644 index 0000000..b0b99be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/NamingConvensionController.java @@ -0,0 +1,69 @@ +package com.realnet.codeextractor.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.codeextractor.entity.NamingConvension; +import com.realnet.codeextractor.repository.NamingConvension_Repository; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Naming Convension" }) +public class NamingConvensionController { + + @Autowired + private NamingConvension_Repository namingConvensionRepository; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Naming", response = NamingConvension.class) + @GetMapping("/naming-convension") + public ResponseEntity getAll() { + List namingConvension = namingConvensionRepository.findAll(); + return ResponseEntity.status(HttpStatus.OK).body(namingConvension); + } + +// // GET BY ID +// @ApiOperation(value = "Get a Form", response = NamingConvension.class) +// @GetMapping("/form_setup/{id}") +// public ResponseEntity getFormsById(@PathVariable(value = "id") int id) { +// NamingConvension NamingConvension = NamingConvension_service.getById(id); +// return ResponseEntity.ok().body(NamingConvension); +// } + +// // SAVE +// @ApiOperation(value = "naming-convension", response = NamingConvension.class) +// @PostMapping("/naming-convension") +// public ResponseEntity create( +// @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, +// @Valid @RequestBody NamingConvension namingConvension) { +// NamingConvension savedNamingConvension = namingConvensionRepository.save(namingConvension); +// return ResponseEntity.status(HttpStatus.CREATED).body(savedNamingConvension); +// } + +// // UPDATE +// @ApiOperation(value = "Update A Form", response = NamingConvension.class) +// @PutMapping("/form_setup/{id}") +// public ResponseEntity updateNamingConvension( +// @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, +// @PathVariable(value = "id") Integer id, @Valid @RequestBody List NamingConvensionRequest) { +// +// NamingConvension namingConvension = namingConvensionRepository.findById(id).get(); +// +// +// NamingConvension updatedNamingConvension = namingConvensionRepository.update(id, NamingConvension); +// return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedNamingConvension); +// } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/RuleLibraryNew_gk.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/RuleLibraryNew_gk.java new file mode 100644 index 0000000..57eb2e3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/RuleLibraryNew_gk.java @@ -0,0 +1,161 @@ +package com.realnet.codeextractor.controller; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.json.simple.parser.ParseException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.codeextractor.service.Rule_library_service_gk; +@RestController +@RequestMapping("/codeextractor/rulelib_new") +public class RuleLibraryNew_gk { + + @Autowired + private Rule_library_service_gk rule_service; + + + @GetMapping("/test13") + public ResponseEntity getKeysInJsonUsingMaps(@RequestParam String keyword) throws ParseException, IOException { + + //ENTITY + if (keyword.contains("entity_package")) { + String path ="C:\\Users\\Dell\\Desktop\\26 AUG\\CallingAnotherAPi\\testing/Abc.java"; + String start ="package com"; + String end =";\r\n" + + "\r\n" + + "import javax.persistence.GeneratedValue;"; + String replaceWith ="Test_1"; + + rule_service.rule(path,start,end,replaceWith); + } + if (keyword.contains("ENTITYCLASS")) { + String path ="C:\\Users\\Dell\\Desktop\\26 AUG\\CallingAnotherAPi\\testing/Abc.java"; + String start ="public class"; + String end ="{"; + String replaceWith ="Test"; + + rule_service.rule(path,start,end,replaceWith); + } + + + if (keyword.contains("entity_loop")) { + String path ="C:\\Users\\Dell\\Desktop\\26 AUG\\CallingAnotherAPi\\testing/Abc.java"; + String start ="private int id;"; + String end ="}"; + String replaceWith =" \nfor (int i = 0; i < entityname.size(); i++) {\r\n" + + " String string = entityname.get(i);\r\n" + + " String lowerCase = string.replaceAll(\" \", \"_\").toLowerCase();\r\n" + + " String add = \"\\n private \" + \"String\" + \" \" + lowerCase + \";\";\r\n" + + " entityclass.append(add);\r\n" + + " }"; + + rule_service.rule(path,start,end,replaceWith); + } + + //REPOSITORY + + if (keyword.contains("repo_class")) { + String path ="C:\\Users\\Dell\\Desktop\\Demo Code Extractor\\Abc_1665647440047_back\\Repository/AbcRepository.java"; + String start ="public interface"; + String end ="JpaRepository { "; + String replaceWith ="Test_1"; + + rule_service.rule(path,start,end,replaceWith); + } + + //SERVICE + if (keyword.contains("service_class")) { + String path ="C:\\Users\\Dell\\Desktop\\Demo Code Extractor\\Abc_1665647440047_back\\Services/AbcService.java"; + String start ="public class"; + String end ="{"; + String replaceWith ="Test_1"; + + rule_service.rule(path,start,end,replaceWith); + } + + if (keyword.contains("service_body")) { + + String path ="C:\\Users\\Dell\\Desktop\\Demo Code Extractor\\Abc_1665647440047_back\\Services/AbcService.java"; + + File staticFile = new File(path); + String fileString = FileUtils.readFileToString(staticFile, StandardCharsets.UTF_8); + int length = fileString.length(); + + + String start ="@Autowired"; + String end =""; + String replaceWith ="sericeclass.append(\"\\r\\n\" + \"private \" + table_name + addString + \"Repository \" + \"Repository;\\n\");\r\n" + + "\r\n" + + " sericeclass.append(\"public \" + table_name + addString + \" Savedata(\" + table_name + addString + \" data) {\\r\\n\"\r\n" + + " + \" return Repository.save(data); \\r\\n\" + \" }\\r\\n\" + \"\\r\\n\" + \" \\r\\n\"\r\n" + + " + \"public List<\" + table_name + addString + \"> getdetails() {\\r\\n\" + \" return (List<\"\r\n" + + " + table_name + addString + \">) Repository.findAll();\\r\\n\" + \" }\\r\\n\" + \"\\r\\n\" + \"\\r\\n\"\r\n" + + " + \"public \" + table_name + addString + \" getdetailsbyId(Long id) {\\r\\n\"\r\n" + + " + \" return Repository.findById(id).get();\\r\\n\" + \" }\\r\\n\" + \"\\r\\n\" + \"\\r\\n\"\r\n" + + " + \" public void delete_by_id(Long id) {\\r\\n\" + \" Repository.deleteById(id);\\r\\n\" + \"}\\r\\n\" + \"\\r\\n\"\r\n" + + " + \"\\r\\n\");\r\n" + + "\r\n" + + " sericeclass.append(\"public \" + table_name + addString + \" update(\" + table_name + addString\r\n" + + " + \" data,Long id) {\\n\" + \" \" + table_name + addString + \" old = Repository.findById(id).get();\\n\");\r\n" + + " for (int i = 0; i < entityname.size(); i++) {\r\n" + + " String name1 = entityname.get(i);\r\n" + + " String name3 = name1.replaceAll(\" \", \"_\").toLowerCase();\r\n" + + " String string = name3.substring(0, 1).toUpperCase() + name3.substring(1);\r\n" + + " sericeclass.append(\"old.set\" + string + \"(data.get\" + string + \"());\\r\\n\");\r\n" + + " }\r\n" + + " sericeclass.append(\"final \" + table_name + addString + \" test = Repository.save(old);\\r\\n\"\r\n" + + " + \" return test;\" + \"}}\" + \"\");\r\n" + + ""; + + rule_service.rule(path,start,end,replaceWith); + } + + //CONTROLLER + if (keyword.contains("controller_class")) { + String path ="C:\\Users\\Dell\\Desktop\\Demo Code Extractor\\Abc_1665647440047_back\\Controllers/AbcController.java"; + String start ="public class"; + String end ="{"; + String replaceWith ="Test_1"; + + rule_service.rule(path,start,end,replaceWith); + } + if (keyword.contains("controller_body")) { + String path ="C:\\Users\\Dell\\Desktop\\Demo Code Extractor\\Abc_1665647440047_back\\Controllers/AbcController.java"; + String start ="@Autowired"; + String end =""; + String replaceWith ="controllerclass.append(\"\r\n" + + " + \" private \" + table_name + addString + \"Service Service;\\n\\n\"\r\n" + + "\r\n" + + " + \" @PostMapping(\" + \"\\\"/\" + table_name + \"\\\")\\r\\n\" + \" public \" + table_name + addString\r\n" + + " + \" Savedata(@RequestBody \" + table_name + addString + \" data) {\\r\\n\" + \" \" + table_name\r\n" + + " + addString + \" save = Service.Savedata(data) ;\\r\\n\" + \" return save;\\r\\n\" + \" }\\r\\n\"\r\n" + + " + \" \\r\\n\" + \" \\r\\n\" + \" @GetMapping(\\\"/\" + table_name + \"\\\")\\r\\n\" + \" public List<\"\r\n" + + " + table_name + addString + \"> getdetails() {\\r\\n\" + \" List<\" + table_name + addString\r\n" + + " + \"> get = Service.getdetails(); \\r\\n\" + \" return get;\\r\\n}\\n\" + \"@GetMapping(\\\"/\"\r\n" + + " + table_name + \"/{id}\\\")\\r\\n\" + \" public \" + table_name + addString\r\n" + + " + \" getdetailsbyId(@PathVariable Long id ) {\\r\\n\" + \" \" + table_name + addString\r\n" + + " + \" get = Service.getdetailsbyId(id);\\r\\n\" + \" return get;\\r\\n\" + \" }\\n\" + \"@DeleteMapping(\\\"/\"\r\n" + + " + table_name + \"/{id}\\\")\\r\\n\" + \" public void delete_by_id(@PathVariable Long id ) {\\r\\n\"\r\n" + + " + \" Service.delete_by_id(id);\\r\\n\" + \" \\r\\n\" + \" }\\n\" + \"@PutMapping(\\\"/\" + table_name\r\n" + + " + \"/{id}\\\")\\r\\n\" + \" public \" + table_name + addString + \" update(@RequestBody \" + table_name\r\n" + + " + addString + \" data,@PathVariable Long id ) {\\r\\n\" + \" \" + table_name + addString\r\n" + + " + \" update = Service.update(data,id);\\r\\n\" + \" return update;\\r\\n\" + \" }\\n}\");\r\n" + + ""; + + rule_service.rule(path,start,end,replaceWith); + } + return new ResponseEntity<>("created", HttpStatus.CREATED); + + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_Library_Controller.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_Library_Controller.java new file mode 100644 index 0000000..2c1b987 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_Library_Controller.java @@ -0,0 +1,378 @@ +package com.realnet.codeextractor.controller; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; +import com.realnet.codeextractor.entity.RuleCopyDTO; +import com.realnet.codeextractor.response.ExceptionRuleLibraryResponse; +import com.realnet.codeextractor.response.RuleLibraryResponse; +import com.realnet.codeextractor.service.Rn_Bcf_Exception_Rule_Library_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Rule_Library_Service; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.userDTO.User; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; +import com.realnet.utils.Constant; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rule Library" }) +public class Rule_Library_Controller { + + @Autowired + private AppUserService userService; + + @Autowired + private Rn_Bcf_Rule_Library_Service ruleLibraryService; + + @Autowired + private Rn_Bcf_Exception_Rule_Library_Service exceptionRuleLibraryService; + +// @Autowired +// private TokenUtil tokenUtil; + // ==== RULE LIBRARY AND EXCEPTION RULE LIBRARY REST APIS ==== // + + // COPY RULES + @ApiOperation(value = "Add A New Rule", response = Rn_Bcf_Rules.class) + @PostMapping("/rule-copy") + public ResponseEntity copyRule(@Valid @RequestBody RuleCopyDTO ruleReq) { + AppUser user = userService.getLoggedInUser(); + Long userId = user.getUserId(); + Long accId = user.getAccount().getAccount_id(); + + String from_tech_stack = ruleReq.getFrom_tech_stack(); + String from_object_type = ruleReq.getFrom_object_type(); + String from_sub_object_type = ruleReq.getFrom_sub_object_type(); + + String to_tech_stack = ruleReq.getTo_tech_stack(); + String to_object_type = ruleReq.getTo_object_type(); + String to_sub_object_type = ruleReq.getTo_sub_object_type(); + + // GET ALL RULES + List rules = ruleLibraryService.copyRules2(from_tech_stack, from_object_type, from_sub_object_type); + log.debug("RULE COPPIED {}", rules); + for (Rn_Bcf_Rules rule : rules) { + Rn_Bcf_Rules newRule = new Rn_Bcf_Rules(); + newRule.setCreatedBy(userId); + newRule.setAccountId(accId); + + newRule.setGroup_id(rule.getGroup_id()); + newRule.setFile_code(rule.getFile_code()); + newRule.setRule_name(rule.getRule_name()); + newRule.setRule_type(rule.getRule_type()); + newRule.setTech_stack(to_tech_stack); + newRule.setObject_type(to_object_type); + newRule.setSub_object_type(to_sub_object_type); + newRule.setIdentifier_start_string(rule.getIdentifier_start_string()); + newRule.setIdentifier_end_string(rule.getIdentifier_end_string()); + newRule.setReplacement_string(rule.getReplacement_string()); + + Rn_Bcf_Rules savedRule = ruleLibraryService.save(newRule); + log.debug("SAVED RULE {}", savedRule); + if (savedRule == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.RULE_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.RULE_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + // GET ALL + @ApiOperation(value = "List of Rules", response = RuleLibraryResponse.class) + @GetMapping("/rule-library") + public RuleLibraryResponse getAllRules( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + RuleLibraryResponse resp = new RuleLibraryResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = ruleLibraryService.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Rule", response = Rn_Bcf_Rules.class) + @GetMapping("/rule-library/{id}") + public ResponseEntity getRuleDetails(@PathVariable(value = "id") int id) { + Rn_Bcf_Rules rule = ruleLibraryService.getById(id); + return ResponseEntity.ok().body(rule); + } + + // SAVE + @ApiOperation(value = "Add A New Rule", response = Rn_Bcf_Rules.class) + @PostMapping("/rule-library") + public ResponseEntity createRule( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Bcf_Rules bcf_rule) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setCreatedBy(userId); +// rn_forms_setup.setAccountId(userId); + Long userId = userService.getLoggedInUserId(); + bcf_rule.setCreatedBy(userId); + + Rn_Bcf_Rules savedRule = ruleLibraryService.save(bcf_rule); + + if (savedRule == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.RULE_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.RULE_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + /* for testing purpose */ + // SAVE LIST OF DATA + @ApiOperation(value = "Add AList Of New Rules", response = Rn_Bcf_Rules.class) + @PostMapping("/rule-library/all") + public ResponseEntity createListOfRules(@RequestBody List<@Valid Rn_Bcf_Rules> bcf_rule) { + for (Rn_Bcf_Rules rule : bcf_rule) { + Long userId = userService.getLoggedInUserId(); + rule.setCreatedBy(userId); + + Rn_Bcf_Rules savedRule = ruleLibraryService.save(rule); + if (savedRule == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.RULE_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.RULE_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + // UPDATE + @ApiOperation(value = "Update A Form", response = Rn_Bcf_Rules.class) + @PutMapping("/rule-library/{id}") + public ResponseEntity updateRule( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Bcf_Rules rule) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setUpdatedBy(userId); + Long userId = userService.getLoggedInUserId(); + rule.setUpdatedBy(userId); + Rn_Bcf_Rules updatedRule = ruleLibraryService.updateById(id, rule); + + if (id != updatedRule.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.RULE_NOT_UPDATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.RULE_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // DELETE + @DeleteMapping("/rule-library/{id}") + public ResponseEntity deleteRule(@PathVariable(value = "id") Integer id) { + boolean deleted = ruleLibraryService.deleteById(id); + if (deleted) { + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.RULE_DELETED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } else { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.RULE_NOT_DELETED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + + // =========== EXCEPTION RULE =================== // + // GET ALL + @ApiOperation(value = "List of Exception Rules", response = ExceptionRuleLibraryResponse.class) + @GetMapping("/exception-rule-library") + public ExceptionRuleLibraryResponse getAllExceptionRules( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + ExceptionRuleLibraryResponse resp = new ExceptionRuleLibraryResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = exceptionRuleLibraryService.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Exception Rule", response = Rn_Bcf_Exception_Rules.class) + @GetMapping("/exception-rule-library/{id}") + public ResponseEntity getExceptionRuleDetails(@PathVariable(value = "id") int id) { + Rn_Bcf_Exception_Rules rule = exceptionRuleLibraryService.getById(id); + return ResponseEntity.ok().body(rule); + } + + // SAVE + @ApiOperation(value = "Add A New Rule", response = Rn_Bcf_Exception_Rules.class) + @PostMapping("/exception-rule-library") + public ResponseEntity createExceptionRule( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Bcf_Exception_Rules bcf_rule) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setCreatedBy(userId); +// rn_forms_setup.setAccountId(userId); + Long userId = userService.getLoggedInUserId(); + bcf_rule.setCreatedBy(userId); + + Rn_Bcf_Exception_Rules savedRule = exceptionRuleLibraryService.save(bcf_rule); + + if (savedRule == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.EXCEPTION_RULE_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.EXCEPTION_RULE_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + /* for testing purpose */ + // SAVE LIST OF DATA + @ApiOperation(value = "Add A New Rule", response = Rn_Bcf_Exception_Rules.class) + @PostMapping("/exception-rule-library/all") + public ResponseEntity createListOfExceptionRule(@RequestBody List<@Valid Rn_Bcf_Exception_Rules> bcf_rule) { + Long userId = userService.getLoggedInUserId(); + for (Rn_Bcf_Exception_Rules rule : bcf_rule) { + rule.setCreatedBy(userId); + Rn_Bcf_Exception_Rules savedRule = exceptionRuleLibraryService.save(rule); + if (savedRule == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.EXCEPTION_RULE_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.EXCEPTION_RULE_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + // UPDATE + @ApiOperation(value = "Update A Form", response = Rn_Bcf_Exception_Rules.class) + @PutMapping("/exception-rule-library/{id}") + public ResponseEntity updateExcetionRule( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Bcf_Exception_Rules rule) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setUpdatedBy(userId); + Long userId = userService.getLoggedInUserId(); + rule.setUpdatedBy(userId); + Rn_Bcf_Exception_Rules updatedRule = exceptionRuleLibraryService.updateById(id, rule); + + if (id != updatedRule.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.EXCEPTION_RULE_NOT_UPDATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.EXCEPTION_RULE_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // DELETE + @DeleteMapping("/exception-rule-library/{id}") + public ResponseEntity deleteExceptionRule(@PathVariable(value = "id") Integer id) { + boolean deleted = exceptionRuleLibraryService.deleteById(id); + if (deleted) { + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + success.setMessage(Constant.EXCEPTION_RULE_DELETED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } else { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXCEPTION_RULE_LIBRARY_API_TITLE); + error.setMessage(Constant.EXCEPTION_RULE_NOT_DELETED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_library_keywordController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_library_keywordController.java new file mode 100644 index 0000000..7af6d82 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/Rule_library_keywordController.java @@ -0,0 +1,53 @@ +package com.realnet.codeextractor.controller; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.realnet.codeextractor.entity.Rule_library_keyword; +import com.realnet.codeextractor.service.Rule_library_keywordService; + + +@RequestMapping(value = "/code_extractor/rule_keyword") +@RestController +public class Rule_library_keywordController { + + @Autowired + private Rule_library_keywordService Service; + + @PostMapping("/Rule_library_keyword") + public Rule_library_keyword Savedata(@RequestBody Rule_library_keyword data) { + Rule_library_keyword save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rule_library_keyword") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rule_library_keyword/{id}") + public Rule_library_keyword getdetailsbyId(@PathVariable Integer id) { + Rule_library_keyword get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Rule_library_keyword/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rule_library_keyword/{id}") + public Rule_library_keyword update(@RequestBody Rule_library_keyword data, @PathVariable Integer id) { + Rule_library_keyword update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/StaticCodeExtractionController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/StaticCodeExtractionController.java new file mode 100644 index 0000000..8f614e3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/StaticCodeExtractionController.java @@ -0,0 +1,164 @@ +package com.realnet.codeextractor.controller; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Params_Service; +import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.utils.Constant; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + + +@Slf4j +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Code Extractor" }) +public class StaticCodeExtractionController { + @Value("${projectPath}") + private String projectPath; + + @Autowired + private Rn_Bcf_Extractor_Service bcf_extractorService; + + @Autowired + private Rn_Bcf_Extractor_Params_Service bcf_extractor_params_service; + + @ApiOperation(value = "Static Code Extraction") + @GetMapping(value = "/static_code_extraction") + public ResponseEntity staticCodeExtraction(@RequestParam(value = "header_id") Integer headerId) throws IOException { + Rn_Bcf_Extractor bcf_extractor = bcf_extractorService.getById(headerId); + List bcf_extractor_params_t_values = bcf_extractor.getRn_bcf_extractor_Params(); + log.debug("bcf_extractor_params_t_values {}", bcf_extractor_params_t_values); + + List bcf_extractor_params = bcf_extractor_params_service.getByHeaderId(headerId); + log.debug("bcf_extractor_params {}", bcf_extractor_params); + + for (Rn_Bcf_Extractor_Params params : bcf_extractor_params_t_values) { + String path = params.getMoved_address_string(); + boolean is_extraction_enabled = params.isIs_extraction_enabled(); + boolean is_creation_enabled = params.isIs_creation_enabled(); + + if (is_creation_enabled && is_extraction_enabled) { + try { + File file = new File(path); + + // STEP 1. CONVERT THE FILE INTO STRING + String fileContents = FileUtils.readFileToString(file, StandardCharsets.UTF_8); + //if (!fileContents.isEmpty()) { + fileContents = fileContents.replace("\\", "\\\\"); + fileContents = fileContents.replace("\"", (File.separator + "\"")); + + // STEP 2. CREATE A TEMP FILE AND WRITE THE CONVERTED STRING + String parentPath = file.getParent(); + + String name = file.getName(); + String fileName = "temp_" + name; + File tempFile = new File(parentPath + File.separator + fileName); + if (tempFile.createNewFile()) { + System.out.println("------ TEMP FILE CREATED-------\n" + tempFile.getAbsolutePath()); + } + BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); + writer.write(fileContents); + writer.close(); + System.out.println("Successfully wrote to the file..."); + + StringBuilder code = new StringBuilder(); + + // STEP 3. READ THE TEMP FILE AND MAKE IT "STRING" + BufferedReader br = new BufferedReader(new FileReader(tempFile)); + String line = br.readLine(); + while (line != null) { + code.append("\"" + line + "\" + \"\\r\\n\" + \r\n"); + line = br.readLine(); + } + br.close(); + + // STEP 4: REMOVING WHITE SPACE + String finalString = code.toString().trim(); + if (!finalString.isEmpty()) { + // STEP 5: REMOVING LAST CHARS(+ "\r\n" +) + finalString = finalString.substring(0, finalString.length() - 10); + // System.out.println(finalString); + } + boolean deleted = tempFile.delete(); + if(deleted) { + log.info(tempFile.getName(), "{} File deleted"); + } + + // MODIFIED NAME + // CONVERT EVERY FILE INTO .JAVA FILE + // String ext = FilenameUtils.getExtension(name); + // String fileNameWithOutExt = FilenameUtils.removeExtension(name); + + String ConvertedFileName = "SE_" + name; + + // STAIC CODE OUTPUT DIRECTORY & PATH + String staticDirString = parentPath + File.separator + "static_code"; + File staticDir = new File(staticDirString); + if (!staticDir.exists()) { + staticDir.mkdir(); + } + + File staticFile = new File(staticDirString + File.separator + ConvertedFileName); + System.out.println("FILES WITH STATIC CODE DIRECTORY = " + staticFile); + + if (!staticFile.exists()) { + staticFile.createNewFile(); + } + BufferedWriter writer2 = new BufferedWriter(new FileWriter(staticFile.getAbsoluteFile())); + writer2.write(finalString); + writer2.close(); + /* + * //===========DELETE MAIN FILES=========== if(deleted) { file.delete(); + * logger.info("Deleted = " + file.getName() + " File"); } + */ + //} + } catch (FileNotFoundException e) { + log.error("File Not Found... " + e); + ErrorPojo errorPojo = new ErrorPojo(); + com.realnet.fnd.entity.Error error = new com.realnet.fnd.entity.Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.STATIC_EXTRACTION_FAILED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.STATIC_EXTRACTION_SUCCESS); + successPojo.setSuccess(success); + log.debug("Response {} ", successPojo); + return new ResponseEntity(successPojo, HttpStatus.OK); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/TechnologyStackController_codeextractor.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/TechnologyStackController_codeextractor.java new file mode 100644 index 0000000..1b4c9f3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/controller/TechnologyStackController_codeextractor.java @@ -0,0 +1,295 @@ +package com.realnet.codeextractor.controller; + +import java.io.File; +import java.io.FileDescriptor; +import java.io.IOException; +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.realnet.codeextractor.entity.ActiveTechStack_DTO; +import com.realnet.codeextractor.entity.Rn_Bcf_Technology_Stack1; +import com.realnet.codeextractor.repository.Rn_Bcf_TechnologyStack_Repository1; +import com.realnet.codeextractor.response.TechnologyStackResponse; +import com.realnet.codeextractor.service.Rn_Bcf_TechnologyStack_Service; +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.fnd.entity.Success; +import com.realnet.fnd.entity.SuccessPojo; +import com.realnet.fnd.service.FileStorageService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; +import com.realnet.utils.Constant; +import com.realnet.utils.RealNetUtils; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import net.lingala.zip4j.ZipFile; +import net.lingala.zip4j.exception.ZipException; + +@JsonIgnoreProperties(ignoreUnknown = true) +@Slf4j +@RestController +@RequestMapping(value = "/codeextractor/technologystack", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Technology Stack" }) +public class TechnologyStackController_codeextractor { + + @Autowired + private AppUserService userService; + + @Autowired + private FileStorageService fileStorageService; + + @Autowired + private Rn_Bcf_TechnologyStack_Service technologyStackService; + + @Autowired + private Rn_Bcf_TechnologyStack_Repository1 technologyStackRepo; + + @Value("${projectPath}") + private String projectPath; + + // GET ALL SORTED AND PAGINATED DATA + @ApiOperation(value = "List of Technology Stack", response = Rn_Bcf_Technology_Stack1.class) + @GetMapping("/technology-stack") + public TechnologyStackResponse getTechnologyStack( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + Pageable paging = PageRequest.of(page, size, Sort.by(Constant.SORT_BY_CREATION_DATE).descending()); + Page result = technologyStackService.getAll(paging); + System.out.println("ganesh bute"+result.getContent()); + TechnologyStackResponse resp = new TechnologyStackResponse(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + + } + + // GET BY ID + @ApiOperation(value = "Get A Technology Stack", response = Rn_Bcf_Technology_Stack1.class) + @GetMapping("/technology-stack/{id}") + public ResponseEntity getTechnologyStackDetails(@PathVariable(value = "id") int id) { + Rn_Bcf_Technology_Stack1 bcf_tech_stack = technologyStackService.getById(id); + // Map extractorMap = + // Collections.singletonMap("extractior", bcf_extractor); + // return new ResponseEntity>(extractorMap, + // HttpStatus.OK); + // return ResponseEntity.ok().body(bcf_extractor); + return new ResponseEntity(bcf_tech_stack, HttpStatus.OK); + + } + + // ========= SAVE AND UNZIP FILE AND MOVE TO A SPECIFIC PATH ======== + @ApiOperation(value = "Add new Technology Stack") + @PostMapping(value = "/technology-stack") + public ResponseEntity saveTechnologyStack(// @Valid @RequestBody Rn_Bcf_Technology_Stack1 bcf_extractor, + @RequestParam(value = "bcf_technology_stack", required = true) String techStackRequest, + @RequestParam(value = "file", required = true) MultipartFile file) + throws IOException, JsonParseException, JsonMappingException { + + System.out.println("techStackRequest = " + techStackRequest); + System.out.println("file = " + file.getOriginalFilename()); + + log.debug("techStackRequest => {} ", techStackRequest); + log.debug("file => {} ", file.getOriginalFilename()); + ObjectMapper mapper = new ObjectMapper(); + mapper.configOverride(FileDescriptor.class).setIsIgnoredType(true); + //mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true); + mapper.setVisibility(mapper.getVisibilityChecker() + .withFieldVisibility(JsonAutoDetect.Visibility.ANY)); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + Rn_Bcf_Technology_Stack1 bcf_tech_stack = mapper.readValue(techStackRequest, Rn_Bcf_Technology_Stack1.class); + + + log.debug("bcf_tech_stack => {}", bcf_tech_stack); + AppUser loggedInUser = userService.getLoggedInUser(); + bcf_tech_stack.setAccountId(loggedInUser.getAccount().getAccount_id()); + bcf_tech_stack.setCreatedBy(loggedInUser.getUserId()); + + String techStackKey = RealNetUtils.getTechnologyStackKey(bcf_tech_stack.getTech_stack()); + bcf_tech_stack.setTech_stack_key(techStackKey); + // upload to directory + String uploadPath = projectPath.concat("/src/main/resources/technology-stack-zip-uploads/"); + fileStorageService.uploadFile(file, uploadPath); + + String fileName = file.getOriginalFilename(); + String folderName = fileName.substring(0, fileName.lastIndexOf(".")); + + System.out.println("UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileName + "\nFile Size = " + file.getSize()); + + // SAVE ZIP FILE NAME INTO DATABASE + bcf_tech_stack.setBase_prj_file_name(folderName); + bcf_tech_stack.setActive(false); + System.out.println("before save"); + + Rn_Bcf_Technology_Stack1 savedTechnology = technologyStackService.save(bcf_tech_stack); + System.out.println("after save"); + + if (savedTechnology == null) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + error.setMessage(Constant.TECHNOLOGY_STACK_NOT_CREATED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + /* + * ZIP TO UNZIP + */ + // ZIP FILE BASE PATH + String zipFilePath = uploadPath + fileName; + + String tech_stack = savedTechnology.getTech_stack(); + // UNZIP DESTINATION PATH + String destPath = projectPath.concat("/BaseProject/" + tech_stack); + + File path = new File(destPath); + if (!path.exists()) { + path.mkdirs(); + } + + System.out.println("ZIP FILE PATH = " + zipFilePath + "\nDESTINATION PATH = " + destPath); + try { + ZipFile zipFile = new ZipFile(zipFilePath); + zipFile.extractAll(destPath); + } catch (ZipException e) { + e.printStackTrace(); + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + error.setMessage(Constant.UNZIP_EXCEPTION); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + success.setMessage(Constant.TECHNOLOGY_STACK_CREATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.CREATED); + } + + // UPDATE + @ApiOperation(value = "Update Technology Stack", response = Rn_Bcf_Technology_Stack1.class) + @PutMapping("/technology-stack/{id}") + public ResponseEntity updateTechnology( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @Valid @RequestBody Rn_Bcf_Technology_Stack1 bcf_tech_stack) { + AppUser loggedInUser = userService.getLoggedInUser(); + bcf_tech_stack.setUpdatedBy(loggedInUser.getUserId()); + + Rn_Bcf_Technology_Stack1 updatedTech = technologyStackService.updateById(id, bcf_tech_stack); + + if (bcf_tech_stack.getId() != updatedTech.getId()) { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.EXTRACTOR_API_TITLE); + error.setMessage(Constant.EXTRACTOR_NOT_DELETED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.EXTRACTOR_API_TITLE); + success.setMessage(Constant.EXTRACTOR_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // DELETE + @DeleteMapping("/technology-stack/{id}") + public ResponseEntity deleteTechnologyStack(@PathVariable(value = "id") int id) { + boolean deleted = technologyStackService.deleteById(id); + if (deleted) { + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + success.setMessage(Constant.TECHNOLOGY_STACK_DELETED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } else { + ErrorPojo errorPojo = new ErrorPojo(); + Error error = new Error(); + error.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + error.setMessage(Constant.TECHNOLOGY_STACK_NOT_DELETED); + errorPojo.setError(error); + return new ResponseEntity(errorPojo, HttpStatus.EXPECTATION_FAILED); + } + } + + // ACTIVE + @GetMapping(value = "/tech-stack-active") + public ResponseEntity technologyActive(@RequestParam(value = "id") int id) throws IOException { + //log.info("technologyActive controller start {}", id); + AppUser loggedInUser = userService.getLoggedInUser(); + + Rn_Bcf_Technology_Stack1 tech_stack = technologyStackService.getById(id); + log.debug("TECH STACK : {} ", tech_stack); + if (tech_stack.isActive() == false) { + tech_stack.setActive(true); + } else if (tech_stack.isActive()) { + tech_stack.setActive(false); + } + + //tech_stack.setActive(!tech_stack.isActive()); // LOL + + tech_stack.setUpdatedBy(loggedInUser.getUserId()); + + Rn_Bcf_Technology_Stack1 tech = technologyStackService.save(tech_stack); + log.debug("UPDATED TECH STACK : {} ", tech); + System.out.println("UPDATED TECH STACK : " + tech); + SuccessPojo successPojo = new SuccessPojo(); + Success success = new Success(); + success.setTitle(Constant.TECHNOLOGY_STACK_API_TITLE); + success.setMessage(Constant.TECHNOLOGY_STACK_UPDATED_SUCCESSFULLY); + successPojo.setSuccess(success); + return new ResponseEntity(successPojo, HttpStatus.OK); + } + + // get activate technology stack list (id and name) + @ApiOperation(value = "Get Activate Technology Stack List ", response = ActiveTechStack_DTO.class) + @GetMapping("/active-technology") + @ResponseBody + public List getActiveTechnology() { + //List technologyStack = technologyStackService.getAll(); + List activeTechDTO = technologyStackService.getListOfActivateTechnology(); + return activeTechDTO; + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/ActiveTechStack_DTO.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/ActiveTechStack_DTO.java new file mode 100644 index 0000000..81c5725 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/ActiveTechStack_DTO.java @@ -0,0 +1,23 @@ +package com.realnet.codeextractor.entity; + +import lombok.Data; + +@Data +public class ActiveTechStack_DTO { + private int id; + private String Name; + +// public Integer getId() { +// return id; +// } +// public void setId(Integer id) { +// this.id = id; +// } +// public Integer getName() { +// return Name; +// } +// public void setName(Integer name) { +// Name = name; +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileDetails.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileDetails.java new file mode 100644 index 0000000..40c60d8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileDetails.java @@ -0,0 +1,12 @@ +package com.realnet.codeextractor.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class FileDetails implements Serializable { + private static final long serialVersionUID = 1L; + private int id; + private String text; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileListDto.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileListDto.java new file mode 100644 index 0000000..c8f513a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/FileListDto.java @@ -0,0 +1,15 @@ +package com.realnet.codeextractor.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class FileListDto implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + private int id; + private String fileName; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/NamingConvension.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/NamingConvension.java new file mode 100644 index 0000000..d441a0a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/NamingConvension.java @@ -0,0 +1,27 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name = "NAMING_CONVENSION") +public class NamingConvension { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "VARIABLE_NAME") + private String variableName; + + @Column(name = "OBJECT_NAME_DYNAMIC_STRING") + private String objectNameDynamicString; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Exception_Rules.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Exception_Rules.java new file mode 100644 index 0000000..e1de485 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Exception_Rules.java @@ -0,0 +1,132 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +import lombok.ToString; + +@ToString +@Entity +@Table(name = "RN_BCF_EXCEPTION_RULES") +public class Rn_Bcf_Exception_Rules extends Rn_Who_AccId_Column { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "TECH_STACK") + private String tech_stack; + + @Column(name = "OBJECT_TYPE") + private String object_type; + + @Column(name = "SUB_OBJECT_TYPE") + private String sub_object_type; + + @Column(name = "OBJECT_NAME_VARIABLE") + private String object_name_variable; + + @Column(name = "OBJECT_NAME_DYNAMIC_STRING") + private String object_name_dynamic_string; + + public Rn_Bcf_Exception_Rules() { + super(); + // TODO Auto-generated constructor stub + } + + public Rn_Bcf_Exception_Rules(Integer id, String tech_stack, String object_type, String sub_object_type, + String object_name_variable, String object_name_dynamic_string) { + super(); + this.id = id; + this.tech_stack = tech_stack; + this.object_type = object_type; + this.sub_object_type = sub_object_type; + this.object_name_variable = object_name_variable; + this.object_name_dynamic_string = object_name_dynamic_string; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTech_stack() { + return tech_stack; + } + + public void setTech_stack(String tech_stack) { + this.tech_stack = tech_stack; + } + + public String getObject_type() { + return object_type; + } + + public void setObject_type(String object_type) { + this.object_type = object_type; + } + + public String getSub_object_type() { + return sub_object_type; + } + + public void setSub_object_type(String sub_object_type) { + this.sub_object_type = sub_object_type; + } + + public String getObject_name_variable() { + return object_name_variable; + } + + public void setObject_name_variable(String object_name_variable) { + this.object_name_variable = object_name_variable; + } + + public String getObject_name_dynamic_string() { + return object_name_dynamic_string; + } + + public void setObject_name_dynamic_string(String object_name_dynamic_string) { + this.object_name_dynamic_string = object_name_dynamic_string; + } + + + +// // WHO COLUMNS +// @Temporal(TemporalType.TIMESTAMP) +// @Column(name = "CREATED_AT", nullable = false, updatable = false) +// @CreatedDate +// private Date createdAt; +// +// //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; +// +// @Temporal(TemporalType.TIMESTAMP) +// @Column(name = "UPDATED_AT", nullable = false) +// @LastModifiedDate +// private Date updatedAt; +// +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; +// +// @Column(name = "UPDATED_BY") +// private Long updatedBy; +// +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor.java new file mode 100644 index 0000000..7733c7d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor.java @@ -0,0 +1,196 @@ +package com.realnet.codeextractor.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.fnd.entity.Rn_Who_Columns; + +@Entity +@Table(name = "RN_BCF_EXTRACTOR_T") +public class Rn_Bcf_Extractor extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "TECH_STACK") + private String tech_stack; + + @Column(name = "TECH_STACK_KEY") + private String tech_stack_key; + + @Column(name = "OBJECT_TYPE") + private String object_type; + + @Column(name = "SUB_OBJECT_TYPE") + private String sub_object_type; + + @Column(name = "FORM_TYPE_NAME") + private String form_type_name; + + @Column(name = "STD_WF_NAME") + private String std_wf_name; + + @Column(name = "ICON_FILE_NAME") + private String icon_file_name; + + @Column(name = "SAMPLE_FILE_NAME") + private String sample_file_name; + + @Column(name = "EXTRACTOR_STAGE") + private String extractor_stage; + + @OneToMany(mappedBy = "rn_bcf_extractor", targetEntity = Rn_Bcf_Extractor_Params.class, cascade = CascadeType.ALL, fetch = FetchType.EAGER) + @JsonManagedReference + private List rn_bcf_extractor_Params; + + // SYSTEM ACCOUNT ID + @Column(name = "ACCOUNT_ID") + private long accountId; + + public Rn_Bcf_Extractor() { + super(); + } + + public Rn_Bcf_Extractor(Integer id, String tech_stack, String tech_stack_key, String object_type, + String sub_object_type, String form_type_name, String std_wf_name, String icon_file_name, + String sample_file_name, String extractor_stage, List rn_bcf_extractor_Params, + long accountId) { + super(); + this.id = id; + this.tech_stack = tech_stack; + this.tech_stack_key = tech_stack_key; + this.object_type = object_type; + this.sub_object_type = sub_object_type; + this.form_type_name = form_type_name; + this.std_wf_name = std_wf_name; + this.icon_file_name = icon_file_name; + this.sample_file_name = sample_file_name; + this.extractor_stage = extractor_stage; + this.rn_bcf_extractor_Params = rn_bcf_extractor_Params; + this.accountId = accountId; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTech_stack() { + return tech_stack; + } + + public void setTech_stack(String tech_stack) { + this.tech_stack = tech_stack; + } + + public String getTech_stack_key() { + return tech_stack_key; + } + + public void setTech_stack_key(String tech_stack_key) { + this.tech_stack_key = tech_stack_key; + } + + public String getObject_type() { + return object_type; + } + + public void setObject_type(String object_type) { + this.object_type = object_type; + } + + public String getSub_object_type() { + return sub_object_type; + } + + public void setSub_object_type(String sub_object_type) { + this.sub_object_type = sub_object_type; + } + + public String getForm_type_name() { + return form_type_name; + } + + public void setForm_type_name(String form_type_name) { + this.form_type_name = form_type_name; + } + + public String getStd_wf_name() { + return std_wf_name; + } + + public void setStd_wf_name(String std_wf_name) { + this.std_wf_name = std_wf_name; + } + + public String getIcon_file_name() { + return icon_file_name; + } + + public void setIcon_file_name(String icon_file_name) { + this.icon_file_name = icon_file_name; + } + + public String getSample_file_name() { + return sample_file_name; + } + + public void setSample_file_name(String sample_file_name) { + this.sample_file_name = sample_file_name; + } + + public String getExtractor_stage() { + return extractor_stage; + } + + public void setExtractor_stage(String extractor_stage) { + this.extractor_stage = extractor_stage; + } + + public List getRn_bcf_extractor_Params() { + return rn_bcf_extractor_Params; + } + + public void setRn_bcf_extractor_Params(List rn_bcf_extractor_Params) { + this.rn_bcf_extractor_Params = rn_bcf_extractor_Params; + } + + public long getAccountId() { + return accountId; + } + + public void setAccountId(long accountId) { + this.accountId = accountId; + } + + @Override + public String toString() { + return "Rn_Bcf_Extractor [id=" + id + ", tech_stack=" + tech_stack + ", tech_stack_key=" + tech_stack_key + + ", object_type=" + object_type + ", sub_object_type=" + sub_object_type + ", form_type_name=" + + form_type_name + ", std_wf_name=" + std_wf_name + ", icon_file_name=" + icon_file_name + + ", sample_file_name=" + sample_file_name + ", extractor_stage=" + extractor_stage + + ", rn_bcf_extractor_Params=" + rn_bcf_extractor_Params + ", accountId=" + accountId + "]"; + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_DTO.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_DTO.java new file mode 100644 index 0000000..b96e29a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_DTO.java @@ -0,0 +1,39 @@ +package com.realnet.codeextractor.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; + +import lombok.Data; + +@Data +@JsonSerialize +public class Rn_Bcf_Extractor_DTO implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + + private Integer id; + + private String tech_stack; + + private String tech_stack_key; + + private String object_type; + + private String sub_object_type; + + private String form_type_name; + + private String std_wf_name; + + private String icon_file_name; + + private String sample_file_name; + + // private String extractor_stage; + + // private long accountId; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_Params.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_Params.java new file mode 100644 index 0000000..eb4da74 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Extractor_Params.java @@ -0,0 +1,270 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.fnd.entity.Rn_Who_Columns; + +@Entity +@Table(name = "RN_BCF_EXTRACTOR_PARAMS_T") +public class Rn_Bcf_Extractor_Params extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + +// @Column(name = "HEADER_ID") +// private int header_id; + + @Column(name = "TECH_STACK") + private String tech_stack; + + @Column(name = "OBJECT_TYPE") + private String object_type; + + @Column(name = "SUB_OBJECT_TYPE") + private String sub_object_type; + + @Column(name = "FILE_CODE") + private String file_code; + + @Column(name = "NAME_STRING") + private String name_string; + + @Column(name = "ADDRESS_STRING") + private String address_string; + + @Column(name = "MOVED_ADDRESS_STRING") + private String moved_address_string; + + @Column(name = "REFERENCE_ADDRESS_STRING") + private String reference_address_string; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "FILE_NAME_VAR") + private String file_name_var; + + @Column(name = "FILE_NAME_DYNAMIC_STRING") + private String file_name_dynamic_string; + + @Column(name = "IS_EXTRACTION_ENABLED") + private boolean is_extraction_enabled; + + @Column(name = "IS_CREATION_ENABLED") + private boolean is_creation_enabled; + + @Column(name = "Total_Project_Path_Dynamic_String") + private String total_project_path_dynamic_string; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "HEADER_ID") + @JsonBackReference + private Rn_Bcf_Extractor rn_bcf_extractor; + +// @JsonIgnore +// private int headerId; +// +// public int getHeaderId() { +// return headerId; +// } +// +// public void setHeaderId(int headerId) { +// this.headerId = headerId; +// } + + // SYSTEM ACCOUNT ID + @Column(name = "ACCOUNT_ID") + private long accountId; + + public Rn_Bcf_Extractor_Params() { + super(); + } + + public Rn_Bcf_Extractor_Params(Integer id, String tech_stack, String object_type, String sub_object_type, + String file_code, String name_string, String address_string, String moved_address_string, + String reference_address_string, String description, String file_name_var, String file_name_dynamic_string, + boolean is_extraction_enabled, boolean is_creation_enabled, Rn_Bcf_Extractor rn_bcf_extractor, + long accountId,String total_project_path_dynamic_string) { + super(); + this.id = id; + this.tech_stack = tech_stack; + this.object_type = object_type; + this.sub_object_type = sub_object_type; + this.file_code = file_code; + this.name_string = name_string; + this.address_string = address_string; + this.moved_address_string = moved_address_string; + this.reference_address_string = reference_address_string; + this.description = description; + this.file_name_var = file_name_var; + this.file_name_dynamic_string = file_name_dynamic_string; + this.is_extraction_enabled = is_extraction_enabled; + this.is_creation_enabled = is_creation_enabled; + this.rn_bcf_extractor = rn_bcf_extractor; + this.accountId = accountId; + this.total_project_path_dynamic_string=total_project_path_dynamic_string; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTech_stack() { + return tech_stack; + } + + public void setTech_stack(String tech_stack) { + this.tech_stack = tech_stack; + } + + public String getObject_type() { + return object_type; + } + + public void setObject_type(String object_type) { + this.object_type = object_type; + } + + public String getSub_object_type() { + return sub_object_type; + } + + public void setSub_object_type(String sub_object_type) { + this.sub_object_type = sub_object_type; + } + + public String getFile_code() { + return file_code; + } + + public void setFile_code(String file_code) { + this.file_code = file_code; + } + + public String getName_string() { + return name_string; + } + + public void setName_string(String name_string) { + this.name_string = name_string; + } + + public String getAddress_string() { + return address_string; + } + + public void setAddress_string(String address_string) { + this.address_string = address_string; + } + + public String getMoved_address_string() { + return moved_address_string; + } + + public void setMoved_address_string(String moved_address_string) { + this.moved_address_string = moved_address_string; + } + + public String getReference_address_string() { + return reference_address_string; + } + + public void setReference_address_string(String reference_address_string) { + this.reference_address_string = reference_address_string; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getFile_name_var() { + return file_name_var; + } + + public void setFile_name_var(String file_name_var) { + this.file_name_var = file_name_var; + } + + public String getFile_name_dynamic_string() { + return file_name_dynamic_string; + } + + public void setFile_name_dynamic_string(String file_name_dynamic_string) { + this.file_name_dynamic_string = file_name_dynamic_string; + } + + public boolean isIs_extraction_enabled() { + return is_extraction_enabled; + } + + public void setIs_extraction_enabled(boolean is_extraction_enabled) { + this.is_extraction_enabled = is_extraction_enabled; + } + + public boolean isIs_creation_enabled() { + return is_creation_enabled; + } + + public void setIs_creation_enabled(boolean is_creation_enabled) { + this.is_creation_enabled = is_creation_enabled; + } + + public Rn_Bcf_Extractor getRn_bcf_extractor() { + return rn_bcf_extractor; + } + + public void setRn_bcf_extractor(Rn_Bcf_Extractor rn_bcf_extractor) { + this.rn_bcf_extractor = rn_bcf_extractor; + } + + public long getAccountId() { + return accountId; + } + + public void setAccountId(long accountId) { + this.accountId = accountId; + } + + public String getTotal_project_path_dynamic_string() { + return total_project_path_dynamic_string; + } + + public void setTotal_project_path_dynamic_string(String total_project_path_dynamic_string) { + this.total_project_path_dynamic_string = total_project_path_dynamic_string; + } + + @Override + public String toString() { + return "Rn_Bcf_Extractor_Params [id=" + id + ", tech_stack=" + tech_stack + ", object_type=" + object_type + + ", sub_object_type=" + sub_object_type + ", file_code=" + file_code + ", name_string=" + name_string + + ", address_string=" + address_string + ", moved_address_string=" + moved_address_string + + ", reference_address_string=" + reference_address_string + ", description=" + description + + ", file_name_var=" + file_name_var + ", file_name_dynamic_string=" + file_name_dynamic_string + + ", is_extraction_enabled=" + is_extraction_enabled + ", is_creation_enabled=" + is_creation_enabled + + ", accountId=" + accountId + "]"; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Rules.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Rules.java new file mode 100644 index 0000000..51c0ddd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Rules.java @@ -0,0 +1,193 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +import lombok.ToString; + +@ToString +@Entity +@Table(name = "RN_BCF_RULES") +public class Rn_Bcf_Rules extends Rn_Who_AccId_Column { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "GROUP_ID") + private String group_id; + + @Column(name = "RULE_NAME") + private String rule_name; + + @Column(name = "TECH_STACK") + private String tech_stack; + + @Column(name = "OBJECT_TYPE") + private String object_type; + + @Column(name = "SUB_OBJECT_TYPE") + private String sub_object_type; + + @Column(name = "FILE_CODE") + private String file_code; + + @Column(name = "RULE_TYPE") + private String rule_type; + + // Big text + @Column(name = "IDENTIFIER_START_STRING") + private String identifier_start_string; + + // Big text + @Column(name = "IDENTIFIER_END_STRING") + private String identifier_end_string; + + // Big text + @Column(name = "REPLACEMENT_STRING",length = 8000) + private String replacement_string; + + public Rn_Bcf_Rules() { + super(); + // TODO Auto-generated constructor stub + } + + public Rn_Bcf_Rules(Integer id, String group_id, String rule_name, String tech_stack, String object_type, + String sub_object_type, String file_code, String rule_type, String identifier_start_string, + String identifier_end_string, String replacement_string) { + super(); + this.id = id; + this.group_id = group_id; + this.rule_name = rule_name; + this.tech_stack = tech_stack; + this.object_type = object_type; + this.sub_object_type = sub_object_type; + this.file_code = file_code; + this.rule_type = rule_type; + this.identifier_start_string = identifier_start_string; + this.identifier_end_string = identifier_end_string; + this.replacement_string = replacement_string; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getGroup_id() { + return group_id; + } + + public void setGroup_id(String group_id) { + this.group_id = group_id; + } + + public String getRule_name() { + return rule_name; + } + + public void setRule_name(String rule_name) { + this.rule_name = rule_name; + } + + public String getTech_stack() { + return tech_stack; + } + + public void setTech_stack(String tech_stack) { + this.tech_stack = tech_stack; + } + + public String getObject_type() { + return object_type; + } + + public void setObject_type(String object_type) { + this.object_type = object_type; + } + + public String getSub_object_type() { + return sub_object_type; + } + + public void setSub_object_type(String sub_object_type) { + this.sub_object_type = sub_object_type; + } + + public String getFile_code() { + return file_code; + } + + public void setFile_code(String file_code) { + this.file_code = file_code; + } + + public String getRule_type() { + return rule_type; + } + + public void setRule_type(String rule_type) { + this.rule_type = rule_type; + } + + public String getIdentifier_start_string() { + return identifier_start_string; + } + + public void setIdentifier_start_string(String identifier_start_string) { + this.identifier_start_string = identifier_start_string; + } + + public String getIdentifier_end_string() { + return identifier_end_string; + } + + public void setIdentifier_end_string(String identifier_end_string) { + this.identifier_end_string = identifier_end_string; + } + + public String getReplacement_string() { + return replacement_string; + } + + public void setReplacement_string(String replacement_string) { + this.replacement_string = replacement_string; + } + + +// // WHO COLUMNS +// @Temporal(TemporalType.TIMESTAMP) +// @Column(name = "CREATED_AT", nullable = false, updatable = false) +// @CreatedDate +// private Date createdAt; +// +// @Temporal(TemporalType.TIMESTAMP) +// @Column(name = "UPDATED_AT", nullable = false) +// @LastModifiedDate +// private Date updatedAt; +// +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; +// +// @Column(name = "UPDATED_BY") +// private Long updatedBy; +// +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Technology_Stack1.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Technology_Stack1.java new file mode 100644 index 0000000..5712bd8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rn_Bcf_Technology_Stack1.java @@ -0,0 +1,106 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +import lombok.ToString; + +@ToString +@Entity +@Table(name = "RN_BCF_TECHNOLOGY_STACK") +public class Rn_Bcf_Technology_Stack1 extends Rn_Who_AccId_Column { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "TECH_STACK") + private String tech_stack; + + @Column(name = "TECH_STACK_KEY") + private String tech_stack_key; + + // Big text + @Column(name = "TAGS") + private String tags; + + @Column(name = "BASE_PRJ_FILE_NAME") + private String base_prj_file_name; + + @Column(name = "IS_ACTIVE") + private boolean active; + + public Rn_Bcf_Technology_Stack1() { + super(); + } + + public Rn_Bcf_Technology_Stack1(Integer id, String tech_stack, String tech_stack_key, String tags, + String base_prj_file_name, boolean active) { + super(); + this.id = id; + this.tech_stack = tech_stack; + this.tech_stack_key = tech_stack_key; + this.tags = tags; + this.base_prj_file_name = base_prj_file_name; + this.active = active; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getTech_stack() { + return tech_stack; + } + + public void setTech_stack(String tech_stack) { + this.tech_stack = tech_stack; + } + + public String getTech_stack_key() { + return tech_stack_key; + } + + public void setTech_stack_key(String tech_stack_key) { + this.tech_stack_key = tech_stack_key; + } + + public String getTags() { + return tags; + } + + public void setTags(String tags) { + this.tags = tags; + } + + public String getBase_prj_file_name() { + return base_prj_file_name; + } + + public void setBase_prj_file_name(String base_prj_file_name) { + this.base_prj_file_name = base_prj_file_name; + } + + public boolean isActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/RuleCopyDTO.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/RuleCopyDTO.java new file mode 100644 index 0000000..ad0ba1a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/RuleCopyDTO.java @@ -0,0 +1,60 @@ +package com.realnet.codeextractor.entity; + +//@Data +public class RuleCopyDTO { + private String from_tech_stack; + private String from_object_type; + private String from_sub_object_type; + private String to_tech_stack; + private String to_object_type; + private String to_sub_object_type; + + public String getFrom_tech_stack() { + return from_tech_stack; + } + + public void setFrom_tech_stack(String from_tech_stack) { + this.from_tech_stack = from_tech_stack; + } + + public String getFrom_object_type() { + return from_object_type; + } + + public void setFrom_object_type(String from_object_type) { + this.from_object_type = from_object_type; + } + + public String getFrom_sub_object_type() { + return from_sub_object_type; + } + + public void setFrom_sub_object_type(String from_sub_object_type) { + this.from_sub_object_type = from_sub_object_type; + } + + public String getTo_tech_stack() { + return to_tech_stack; + } + + public void setTo_tech_stack(String to_tech_stack) { + this.to_tech_stack = to_tech_stack; + } + + public String getTo_object_type() { + return to_object_type; + } + + public void setTo_object_type(String to_object_type) { + this.to_object_type = to_object_type; + } + + public String getTo_sub_object_type() { + return to_sub_object_type; + } + + public void setTo_sub_object_type(String to_sub_object_type) { + this.to_sub_object_type = to_sub_object_type; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rule_library_keyword.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rule_library_keyword.java new file mode 100644 index 0000000..9e02b14 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/entity/Rule_library_keyword.java @@ -0,0 +1,34 @@ +package com.realnet.codeextractor.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class Rule_library_keyword { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String tech_stack; + + private String object_type; + + private String sub_object_type; + + private String version; + + private String replcement_string; + private boolean isactive; + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/NamingConvension_Repository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/NamingConvension_Repository.java new file mode 100644 index 0000000..dd118c9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/NamingConvension_Repository.java @@ -0,0 +1,14 @@ +package com.realnet.codeextractor.repository; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.NamingConvension; + +@Repository +public interface NamingConvension_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Exception_Rule_Library_Repository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Exception_Rule_Library_Repository.java new file mode 100644 index 0000000..489679a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Exception_Rule_Library_Repository.java @@ -0,0 +1,28 @@ +package com.realnet.codeextractor.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; + +@Repository +public interface Rn_Bcf_Exception_Rule_Library_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM rn_bcf_exception_rules WHERE TECH_STACK =:tech_stack AND OBJECT_TYPE =:object_type AND SUB_OBJECT_TYPE =:sub_object_type", nativeQuery = true) + List findByType(@Param("tech_stack")String tech_stack, @Param("object_type")String object_type, @Param("sub_object_type")String sub_object_type); + + // testing + //List findByTechStackAndObjectTypeAndSubObjectType(String tech_stack, String object_type, String sub_object_type); + +// @Query(value = "SELECT * FROM RN_BCF_EXTRACTOR_PARAMS_T WHERE HEADER_ID =:hId ORDER BY created_at DESC", nativeQuery = true) +// List findByHeaderIdOrderByDate(@Param("hId") Integer headerId); +} + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Params_Repository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Params_Repository.java new file mode 100644 index 0000000..7f8c659 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Params_Repository.java @@ -0,0 +1,30 @@ +package com.realnet.codeextractor.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; + +@Repository +public interface Rn_Bcf_Extractor_Params_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + // need modification + @Query(value = "SELECT * FROM rn_bcf_extractor_params_t WHERE ACCOUNT_ID =:accId", nativeQuery = true) + List findByAccountId(@Param("accId") Integer id, Pageable pageable); + + @Query(value = "SELECT * FROM rn_bcf_extractor_params_t WHERE HEADER_ID =:hId", nativeQuery = true) + List findByHeaderId(@Param("hId") Integer headerId); + + //@Query(value = "SELECT * FROM RN_BCF_EXTRACTOR_PARAMS_T WHERE HEADER_ID =:hId ORDER BY created_at DESC", nativeQuery = true) + @Query(value = "SELECT * FROM rn_bcf_extractor_params_t WHERE HEADER_ID =:hId ORDER BY created_at DESC", nativeQuery = true) + List findByHeaderIdOrderByDate(@Param("hId") Integer headerId); +} + diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Repository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Repository.java new file mode 100644 index 0000000..6deb51e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Extractor_Repository.java @@ -0,0 +1,14 @@ +package com.realnet.codeextractor.repository; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; + +@Repository +public interface Rn_Bcf_Extractor_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Rule_Library_Repository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Rule_Library_Repository.java new file mode 100644 index 0000000..7236a7c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_Rule_Library_Repository.java @@ -0,0 +1,38 @@ +package com.realnet.codeextractor.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; + +@Repository +public interface Rn_Bcf_Rule_Library_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + +// @Query(value = "SELECT * FROM RN_BCF_EXTRACTOR_PARAMS_T WHERE HEADER_ID =:hId ORDER BY created_at DESC", nativeQuery = true) +// List findByHeaderIdOrderByDate(@Param("hId") Integer headerId); + +// List getByRuleType(String tech_stack, String object_type, String sub_object_type); +// + @Query(value = "SELECT ID, GROUP_ID, RULE_NAME, ':to_tech_stack', ':to_object_type', ':to_sub_object_type', FILE_CODE, RULE_TYPE, IDENTIFIER_START_STRING, IDENTIFIER_END_STRING, REPLACEMENT_STRING FROM rn_bcf_rules WHERE TECH_STACK =:from_tech_stack AND OBJECT_TYPE =:from_object_type AND SUB_OBJECT_TYPE =:from_sub_object_type", nativeQuery = true) + public List copyRules( + @Param("to_tech_stack") String to_tech_stack, + @Param("to_object_type") String to_object_type, + @Param("to_sub_object_type") String to_sub_object_type, + @Param("from_tech_stack") String from_tech_stack, + @Param("from_object_type") String from_object_type, + @Param("from_sub_object_type") String from_sub_object_type); + + @Query(value = "SELECT * FROM rn_bcf_rules WHERE TECH_STACK =:from_tech_stack AND OBJECT_TYPE =:from_object_type AND SUB_OBJECT_TYPE =:from_sub_object_type", nativeQuery = true) + public List copyRules2(@Param("from_tech_stack") String from_tech_stack, + @Param("from_object_type") String from_object_type, + @Param("from_sub_object_type") String from_sub_object_type); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_TechnologyStack_Repository1.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_TechnologyStack_Repository1.java new file mode 100644 index 0000000..fdc94b8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rn_Bcf_TechnologyStack_Repository1.java @@ -0,0 +1,28 @@ +package com.realnet.codeextractor.repository; + +import java.util.List; + +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 com.realnet.codeextractor.entity.Rn_Bcf_Technology_Stack1; + +@Repository +public interface Rn_Bcf_TechnologyStack_Repository1 extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM rn_bcf_technology_stack WHERE IS_ACTIVE=1", nativeQuery = true) + List activeTechStacks(); + // List findByActive(@Param("status")boolean status); + +// @Procedure("active_technology") +// List activeTechList(); + +// @Query(value = "call active_technology", nativeQuery = true) // call store procedure +// List activeTechList(); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rule_library_keywordRepository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rule_library_keywordRepository.java new file mode 100644 index 0000000..5e8124b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/repository/Rule_library_keywordRepository.java @@ -0,0 +1,11 @@ +package com.realnet.codeextractor.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.codeextractor.entity.Rule_library_keyword; + + +@Repository +public interface Rule_library_keywordRepository extends JpaRepository { +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorParamsResponse.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorParamsResponse.java new file mode 100644 index 0000000..32e6ed9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorParamsResponse.java @@ -0,0 +1,18 @@ +package com.realnet.codeextractor.response; + +import java.util.List; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class CodeExtractorParamsResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorResponse.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorResponse.java new file mode 100644 index 0000000..1dd0ef9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/CodeExtractorResponse.java @@ -0,0 +1,17 @@ +package com.realnet.codeextractor.response; + +import java.util.List; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class CodeExtractorResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/ExceptionRuleLibraryResponse.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/ExceptionRuleLibraryResponse.java new file mode 100644 index 0000000..ecc725c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/ExceptionRuleLibraryResponse.java @@ -0,0 +1,17 @@ +package com.realnet.codeextractor.response; + +import java.util.List; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class ExceptionRuleLibraryResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/RuleLibraryResponse.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/RuleLibraryResponse.java new file mode 100644 index 0000000..2b96f96 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/RuleLibraryResponse.java @@ -0,0 +1,18 @@ +package com.realnet.codeextractor.response; + +import java.util.List; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class RuleLibraryResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/TechnologyStackResponse.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/TechnologyStackResponse.java new file mode 100644 index 0000000..badb37e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/response/TechnologyStackResponse.java @@ -0,0 +1,18 @@ +package com.realnet.codeextractor.response; + +import java.util.List; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Technology_Stack1; +import com.realnet.fnd.response.PageResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class TechnologyStackResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_Service.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_Service.java new file mode 100644 index 0000000..b52b7d9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_Service.java @@ -0,0 +1,20 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; + +public interface Rn_Bcf_Exception_Rule_Library_Service { + List getAll(); + Page getAll(Pageable p); + Rn_Bcf_Exception_Rules getById(int id); + Rn_Bcf_Exception_Rules save(Rn_Bcf_Exception_Rules bcf_rule); + Rn_Bcf_Exception_Rules updateById(int id, Rn_Bcf_Exception_Rules bcf_rule); + boolean deleteById(int id); + + List getByType(String tech_stack, String object_type, String sub_object_type); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_ServiceImpl.java new file mode 100644 index 0000000..ee2b886 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Exception_Rule_Library_ServiceImpl.java @@ -0,0 +1,78 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.Rn_Bcf_Exception_Rules; +import com.realnet.codeextractor.repository.Rn_Bcf_Exception_Rule_Library_Repository; +import com.realnet.exceptions.ResourceNotFoundException; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class Rn_Bcf_Exception_Rule_Library_ServiceImpl implements Rn_Bcf_Exception_Rule_Library_Service { + + @Autowired + private Rn_Bcf_Exception_Rule_Library_Repository exceptionRuleLibraryRepository; + + @Override + public List getAll() { + return exceptionRuleLibraryRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return exceptionRuleLibraryRepository.findAll(page); + } + + @Override + public Rn_Bcf_Exception_Rules getById(int id) { + Rn_Bcf_Exception_Rules bcf_extractor = exceptionRuleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rule Not Found :: " + id)); + return bcf_extractor; + } + + @Override + public Rn_Bcf_Exception_Rules save(Rn_Bcf_Exception_Rules bcf_extractor) { + Rn_Bcf_Exception_Rules savedExtractor = exceptionRuleLibraryRepository.save(bcf_extractor); + return savedExtractor; + } + + @Override + public Rn_Bcf_Exception_Rules updateById(int id, Rn_Bcf_Exception_Rules ruleRequest) { + Rn_Bcf_Exception_Rules old_extractor = exceptionRuleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Exception Rule not found :: " + id)); + + old_extractor.setTech_stack(ruleRequest.getTech_stack()); + old_extractor.setObject_type(ruleRequest.getObject_type()); + old_extractor.setSub_object_type(ruleRequest.getSub_object_type()); + old_extractor.setObject_name_variable(ruleRequest.getObject_name_variable()); + old_extractor.setObject_name_dynamic_string(ruleRequest.getObject_name_dynamic_string()); + + final Rn_Bcf_Exception_Rules updated_rule = exceptionRuleLibraryRepository.save(old_extractor); + return updated_rule; + } + + @Override + public boolean deleteById(int id) { + if (!exceptionRuleLibraryRepository.existsById(id)) { + throw new ResourceNotFoundException("Rule not exist"); + } + Rn_Bcf_Exception_Rules rule = exceptionRuleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rule not found :: " + id)); + exceptionRuleLibraryRepository.delete(rule); + return true; + } + + @Override + public List getByType(String tech_stack, String object_type, String sub_object_type) { + return exceptionRuleLibraryRepository.findByType(tech_stack, object_type, sub_object_type); + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_Service.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_Service.java new file mode 100644 index 0000000..ba2c495 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_Service.java @@ -0,0 +1,24 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; + +public interface Rn_Bcf_Extractor_Params_Service { + List getAll(); + Page getAll(Pageable p); + + List getByHeaderId(int headerId); + List getByHeaderIdOrderByDate(int headerId); + + + Rn_Bcf_Extractor_Params getById(int id); + Rn_Bcf_Extractor_Params save(Rn_Bcf_Extractor_Params bcf_extractor_params); + Rn_Bcf_Extractor_Params updateById(int id, Rn_Bcf_Extractor_Params bcf_extractor_params); + + boolean deleteById(int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_ServiceImpl.java new file mode 100644 index 0000000..c6e898d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Params_ServiceImpl.java @@ -0,0 +1,91 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.repository.Rn_Bcf_Extractor_Params_Repository; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.users.service1.AppUserService; + +@Service +public class Rn_Bcf_Extractor_Params_ServiceImpl implements Rn_Bcf_Extractor_Params_Service { + + @Autowired + private AppUserService userService; + + @Autowired + private Rn_Bcf_Extractor_Params_Repository rn_bcf_extractor_params_repository; + + @Override + public List getAll() { + return rn_bcf_extractor_params_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_bcf_extractor_params_repository.findAll(page); + } + + @Override + public Rn_Bcf_Extractor_Params getById(int id) { + Rn_Bcf_Extractor_Params bcf_extractor = rn_bcf_extractor_params_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extractor Param Data Not Found :: " + id)); + return bcf_extractor; + } + + @Override + public Rn_Bcf_Extractor_Params save(Rn_Bcf_Extractor_Params bcf_extractor) { + Rn_Bcf_Extractor_Params savedExtractor = rn_bcf_extractor_params_repository.save(bcf_extractor); + return savedExtractor; + } + + @Override + public Rn_Bcf_Extractor_Params updateById(int id, Rn_Bcf_Extractor_Params extractorParamsRequest) { + // User loggedInUser = userService.getLoggedInUser(); + Rn_Bcf_Extractor_Params old_extractor = rn_bcf_extractor_params_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + old_extractor.setTech_stack(extractorParamsRequest.getTech_stack()); + old_extractor.setObject_type(extractorParamsRequest.getObject_type()); + old_extractor.setSub_object_type(extractorParamsRequest.getSub_object_type()); + old_extractor.setFile_code(extractorParamsRequest.getFile_code()); + old_extractor.setName_string(extractorParamsRequest.getName_string()); + old_extractor.setAddress_string(extractorParamsRequest.getAddress_string()); + old_extractor.setMoved_address_string(extractorParamsRequest.getMoved_address_string()); + old_extractor.setReference_address_string(extractorParamsRequest.getReference_address_string()); + old_extractor.setDescription(extractorParamsRequest.getDescription()); + old_extractor.setFile_name_var(extractorParamsRequest.getFile_name_var()); + old_extractor.setFile_name_dynamic_string(extractorParamsRequest.getFile_name_dynamic_string()); + old_extractor.setIs_extraction_enabled(extractorParamsRequest.isIs_extraction_enabled()); + old_extractor.setIs_creation_enabled(extractorParamsRequest.isIs_creation_enabled()); + old_extractor.setTotal_project_path_dynamic_string(extractorParamsRequest.getTotal_project_path_dynamic_string()); + final Rn_Bcf_Extractor_Params updated_function = rn_bcf_extractor_params_repository.save(old_extractor); + return updated_function; + } + + @Override + public boolean deleteById(int id) { + if (!rn_bcf_extractor_params_repository.existsById(id)) { + throw new ResourceNotFoundException("Extractor Data not exist"); + } + Rn_Bcf_Extractor_Params bcf_extractor = rn_bcf_extractor_params_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_bcf_extractor_params_repository.delete(bcf_extractor); + return true; + } + + @Override + public List getByHeaderId(int headerId) { + return rn_bcf_extractor_params_repository.findByHeaderId(headerId); + } + + @Override + public List getByHeaderIdOrderByDate(int headerId) { + return rn_bcf_extractor_params_repository.findByHeaderIdOrderByDate(headerId); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Service.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Service.java new file mode 100644 index 0000000..03d2fb6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_Service.java @@ -0,0 +1,27 @@ +package com.realnet.codeextractor.service; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; + +public interface Rn_Bcf_Extractor_Service { + List getAll(); + Page getAll(Pageable p); + Rn_Bcf_Extractor getById(int id); + Rn_Bcf_Extractor save(Rn_Bcf_Extractor bcf_extractor); + Rn_Bcf_Extractor updateById(int id, Rn_Bcf_Extractor bcf_extractor); + boolean deleteById(int id); + + public void saveListOFiles(int headerId, String tech_stack, String obj_type, String sub_obj_type, String destDirectory) + throws IOException; + + public void moveFiles(int id, String toDir) throws IOException; + public void deleteEmptyDirectory(File dir) throws IOException; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_ServiceImpl.java new file mode 100644 index 0000000..3006280 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Extractor_ServiceImpl.java @@ -0,0 +1,249 @@ +package com.realnet.codeextractor.service; + +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor; +import com.realnet.codeextractor.entity.Rn_Bcf_Extractor_Params; +import com.realnet.codeextractor.repository.Rn_Bcf_Extractor_Repository; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.service.FileStorageService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; +import com.realnet.users.service1.AppUserServiceImpl; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class Rn_Bcf_Extractor_ServiceImpl implements Rn_Bcf_Extractor_Service { + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private FileStorageService fileStorageService; + + @Autowired + private Rn_Bcf_Extractor_Repository rn_bcf_extractor_repository; + + @Autowired + private Rn_Bcf_Extractor_Params_Service rn_bcf_extractor_params_service; + + @Override + public List getAll() { + return rn_bcf_extractor_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_bcf_extractor_repository.findAll(page); + } + + @Override + public Rn_Bcf_Extractor getById(int id) { + Rn_Bcf_Extractor bcf_extractor = rn_bcf_extractor_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extractor Table Data Not Found :: " + id)); + return bcf_extractor; + } + + @Override + public Rn_Bcf_Extractor save(Rn_Bcf_Extractor bcf_extractor) { + // User loggedInUser = userService.getLoggedInUser(); + // bcf_extractor.setCreatedBy(loggedInUser.getUserId()); + Rn_Bcf_Extractor savedExtractor = rn_bcf_extractor_repository.save(bcf_extractor); + return savedExtractor; + } + + @Override + public Rn_Bcf_Extractor updateById(int id, Rn_Bcf_Extractor extractorRequest) { + // User loggedInUser = userService.getLoggedInUser(); + + Rn_Bcf_Extractor old_extractor = rn_bcf_extractor_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_extractor.setTech_stack(extractorRequest.getTech_stack()); + old_extractor.setTech_stack_key(extractorRequest.getTech_stack_key()); + old_extractor.setObject_type(extractorRequest.getObject_type()); + old_extractor.setSub_object_type(extractorRequest.getSub_object_type()); + old_extractor.setForm_type_name(extractorRequest.getForm_type_name()); + old_extractor.setStd_wf_name(extractorRequest.getStd_wf_name()); + old_extractor.setIcon_file_name(extractorRequest.getIcon_file_name()); + old_extractor.setSample_file_name(extractorRequest.getSample_file_name()); + old_extractor.setExtractor_stage(extractorRequest.getExtractor_stage()); + // line part + old_extractor.setRn_bcf_extractor_Params(extractorRequest.getRn_bcf_extractor_Params()); + // old_extractor.setUpdatedBy(loggedInUser.getUserId()); + final Rn_Bcf_Extractor updated_function = rn_bcf_extractor_repository.save(old_extractor); + return updated_function; + } + + @Override + public boolean deleteById(int id) { + if (!rn_bcf_extractor_repository.existsById(id)) { + throw new ResourceNotFoundException("Extractor Data not exist"); + } + Rn_Bcf_Extractor bcf_extractor = rn_bcf_extractor_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_bcf_extractor_repository.delete(bcf_extractor); + return true; + } + + @Override + public void saveListOFiles(int headerId, String tech_stack, String obj_type, String sub_obj_type, + String destDirectory) throws IOException { + File destDir = new File(destDirectory); + + System.out.println("Destination Folder Path = " + destDirectory); + + ArrayList files = new ArrayList(); + + // Get all files from a directory. + File[] fList = destDir.listFiles(); + if (fList != null) { + for (File file : fList) { + if (file.isFile()) { + files.add(file.getAbsolutePath()); + // System.out.println("directory:" + file.getAbsolutePath()); + } else if (file.isDirectory()) { + saveListOFiles(headerId, tech_stack, obj_type, sub_obj_type, file.getAbsolutePath()); + } + } + } + + AppUser user = userService.getLoggedInUser(); + Long userId = user.getUserId(); + + Rn_Bcf_Extractor rn_bcf_extractor = this.getById(headerId); + String sampleFileName = rn_bcf_extractor.getSample_file_name(); + Long accId = rn_bcf_extractor.getAccountId(); + System.out.println("SAMPLE FILE NAME = " + sampleFileName); + // REMOVING .ZIP + sampleFileName = sampleFileName.substring(0, sampleFileName.lastIndexOf(".")); +// System.out.println("AFTER REMOVING .ZIP = " + sampleFileName); + // FOR CONVERTING OBJECT NAMES + // String insertPrefix = "Rn_"; + + //List params = new ArrayList(); + // GET FILE PATHS + for (int i = 0; i < files.size(); i++) { + //List params = new ArrayList(); + String filePath = files.get(i).replace("\\", "/"); + File finalFile = new File(filePath); + String name = finalFile.getName(); + + /* + * ***ADD RN PREFIX LOGIC*** if(!name.contains(insertPrefix)) { name = + * name.substring(0,0).concat(insertPrefix) + name.substring(0); } + */ + + // DESTINATION ADDRESS PATH(FOR OUTPUT FILES) + /* + * ZIP FILE NAME = Angular_project INPUT : + * {PROJECT_PATH}/src/main/resources/extracted-files/ + * Angular_project_1599226114430/rn_header_test1-details.component.html OUTPUT : + * /frontend/src/app/admin/{{DYNAMIC VARIABLE}}/details/ + */ + String ref_address_string = filePath.substring(filePath.lastIndexOf(sampleFileName)); + ref_address_string = ref_address_string.substring(ref_address_string.indexOf("/")); + // System.out.println("REF ADDRESS STRING = " + ref_address_string); + +// // DYNAMIC UI_NAME LOGIC FOR ANGULAR FILE STRUCTURE +// final String ng_prj_struct = "/frontend/src/app/admin/"; +// if (ref_address_string.contains(ng_prj_struct)) { +// int len = ng_prj_struct.length(); +// String data = ref_address_string.substring(0,len) + "ui_name"; +// int tail = ref_address_string.indexOf("/", len + 1); +// String temp = ref_address_string.substring(tail); +// data += temp; +// ref_address_string = data; +// } + + // ========ADD IT INTO PARAMETERS TABLE========= + Rn_Bcf_Extractor_Params rn_bcf_extractor_params = new Rn_Bcf_Extractor_Params(); + // System.out.println("SET HEADER ID = " + headerId); + + // rn_bcf_extractor_params_t.setHeader_id(headerId); + rn_bcf_extractor_params.setTech_stack(tech_stack); + rn_bcf_extractor_params.setObject_type(obj_type); + rn_bcf_extractor_params.setSub_object_type(sub_obj_type); + rn_bcf_extractor_params.setFile_code("200"); + rn_bcf_extractor_params.setName_string(name); + rn_bcf_extractor_params.setAddress_string(filePath); + rn_bcf_extractor_params.setReference_address_string(ref_address_string); // FOR OUTPUT FILE PATH + + String fileType = net.lingala.zip4j.util.FileUtils.getFileExtension(finalFile); + rn_bcf_extractor_params.setDescription(fileType); + // IF IT'S YES, THEN FILE WILL BE PROCESSED FOR STATIC AND DYNAMIC EXTRACTION. + rn_bcf_extractor_params.setIs_extraction_enabled(true); + rn_bcf_extractor_params.setIs_creation_enabled(true); + rn_bcf_extractor_params.setAccountId(accId); + rn_bcf_extractor_params.setCreatedBy(userId); + + // SAVING BASE PROJECT FILE PATH IN PARAMS TABLE + //bcf_extractor_params_service.save(rn_bcf_extractor_params_t); + //rn_bcf_extractor.setRn_bcf_extractor_Params(rn_bcf_extractor_params); +// params.add(rn_bcf_extractor_params); +// rn_bcf_extractor.setRn_bcf_extractor_Params(params); +// this.updateById(headerId, rn_bcf_extractor); // need to test + rn_bcf_extractor_params.setRn_bcf_extractor(rn_bcf_extractor); + rn_bcf_extractor_params_service.save(rn_bcf_extractor_params); + } + + } + + @Override + public void moveFiles(int id, String toDir) throws IOException { + File moveToFile = new File(toDir); + // List params_t = getById(id).getRn_bcf_extractor_Params(); + //Rn_Bcf_Extractor extractor = this.getById(id); + //log.debug("extractor : {} ",extractor); + //List params_t = extractor.getRn_bcf_extractor_Params(); + List params_t = rn_bcf_extractor_params_service.getByHeaderId(id); + //log.debug("extractor : {} ", params_t); + for (Rn_Bcf_Extractor_Params params : params_t) { + String fileDirectory = params.getAddress_string(); + + File file = new File(fileDirectory); + String fileName = file.getName(); + + // MOVE ALL FILES INTO PARENT DIRECTORY + System.out.println("File name = " + fileName + "\n" + "Move to = " + toDir); + file.renameTo(new File(moveToFile, file.getName())); + + String destDir = toDir + "/" + fileName; + + // SAVE MOVED DIRECTORY PATH INTO THE PARAMS TABLE + params.setMoved_address_string(destDir); + rn_bcf_extractor_params_service.save(params); + } + // DELETE EMPTY DIRECTORY + this.deleteEmptyDirectory(moveToFile); + + } + + @Override + public void deleteEmptyDirectory(File dir) throws IOException { + if (dir.isDirectory()) { + File[] fList = dir.listFiles(); + if (fList != null) { + for (File file : fList) { + if (!file.isFile()) { + System.out.println("Removing empty directory : " + file.getName()); + file.delete(); + deleteEmptyDirectory(file); + } + } + dir.delete(); + } + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_Service.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_Service.java new file mode 100644 index 0000000..bef1318 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_Service.java @@ -0,0 +1,31 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; + +public interface Rn_Bcf_Rule_Library_Service { + List getAll(); + + Page getAll(Pageable p); + + Rn_Bcf_Rules getById(int id); + + Rn_Bcf_Rules save(Rn_Bcf_Rules bcf_rule); + + Rn_Bcf_Rules updateById(int id, Rn_Bcf_Rules bcf_rule); + + boolean deleteById(int id); + + List copyRules(String to_tech_stack, String to_object_type, String to_sub_object_type, + String from_tech_stack, String from_object_type, String from_sub_object_type); + + List copyRules2(String from_tech_stack, String from_object_type, String from_sub_object_type); + + // String stringReplace(String str, String start, String end, String + // replaceWith, String file_type); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_ServiceImpl.java new file mode 100644 index 0000000..60b5f74 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_Rule_Library_ServiceImpl.java @@ -0,0 +1,131 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.Rn_Bcf_Rules; +import com.realnet.codeextractor.repository.Rn_Bcf_Rule_Library_Repository; +import com.realnet.exceptions.ResourceNotFoundException; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class Rn_Bcf_Rule_Library_ServiceImpl implements Rn_Bcf_Rule_Library_Service { + + @Autowired + private Rn_Bcf_Rule_Library_Repository ruleLibraryRepository; + + @Override + public List getAll() { + return ruleLibraryRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return ruleLibraryRepository.findAll(page); + } + + @Override + public Rn_Bcf_Rules getById(int id) { + Rn_Bcf_Rules bcf_extractor = ruleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rule Not Found :: " + id)); + return bcf_extractor; + } + + @Override + public Rn_Bcf_Rules save(Rn_Bcf_Rules bcf_extractor) { + Rn_Bcf_Rules savedExtractor = ruleLibraryRepository.save(bcf_extractor); + return savedExtractor; + } + + @Override + public Rn_Bcf_Rules updateById(int id, Rn_Bcf_Rules ruleRequest) { + Rn_Bcf_Rules old_extractor = ruleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rule not found :: " + id)); + + old_extractor.setGroup_id(ruleRequest.getGroup_id()); + old_extractor.setRule_name(ruleRequest.getRule_name()); + old_extractor.setTech_stack(ruleRequest.getTech_stack()); + old_extractor.setObject_type(ruleRequest.getObject_type()); + old_extractor.setSub_object_type(ruleRequest.getSub_object_type()); + old_extractor.setFile_code(ruleRequest.getFile_code()); + old_extractor.setRule_type(ruleRequest.getRule_type()); + old_extractor.setIdentifier_start_string(ruleRequest.getIdentifier_start_string()); + old_extractor.setIdentifier_end_string(ruleRequest.getIdentifier_end_string()); + old_extractor.setReplacement_string(ruleRequest.getReplacement_string()); + + final Rn_Bcf_Rules updated_rule = ruleLibraryRepository.save(old_extractor); + return updated_rule; + } + + @Override + public boolean deleteById(int id) { + if (!ruleLibraryRepository.existsById(id)) { + throw new ResourceNotFoundException("Rule not exist"); + } + Rn_Bcf_Rules rule = ruleLibraryRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rule not found :: " + id)); + ruleLibraryRepository.delete(rule); + return true; + } + +// @Override +// public String stringReplace(String str, String start, String end, String replaceWith, String file_type) { +// int i = str.indexOf(start); +// while (i != -1) { +// int j = str.indexOf(end, i + 1); +// if (j != -1) { +// /* @Include starting and ending string +// * String data = str.substring(0, i + start.length()) + "\n" + replaceWith + "\n"; +// * String temp = str.substring(j); +// * +// * @Not Include starting and ending string +// * String data = str.substring(0, i) + "\n" + replaceWith + "\n"; +// * String temp = str.substring(j + end.length()); +// * */ +// String data = str.substring(0, i) + "\n" + replaceWith + "\n"; +// String temp = str.substring(j + end.length()); +// data += temp; +// str = data; +// i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); +// } else { +// break; +// } +// } +// +//// if (replaced) { +//// String newStart = ""; +//// String newEnd = ""; +//// if(file_type.equals("html") || file_type.equals("jsp")) { +//// newStart = ""; +//// newEnd = ""; +//// str = str.replace(start, newStart); +//// str = str.replace(end, newEnd); +//// } +//// if(file_type.equals("java") || file_type.equals("ts") || file_type.equals("js")) { +//// newStart = "/* bcf-fieldloop-startshere-processed */"; +//// newEnd = "/* bcf-fieldloop-endshere-processed */"; +//// str = str.replace(start, newStart); +//// str = str.replace(end, newEnd); +//// } +//// } +// return str; +// } + + public List copyRules(String to_tech_stack, String to_object_type, String to_sub_object_type,String from_tech_stack,String from_object_type, String from_sub_object_type){ + List rules = ruleLibraryRepository.copyRules(to_tech_stack, to_object_type, to_sub_object_type, from_tech_stack, from_object_type, from_sub_object_type); + log.debug("Nil Copied Rules: {}", rules); + return ruleLibraryRepository.copyRules(to_tech_stack, to_object_type, to_sub_object_type, from_tech_stack, from_object_type, from_sub_object_type); + } + + @Override + public List copyRules2(String from_tech_stack, String from_object_type, String from_sub_object_type) { + return ruleLibraryRepository.copyRules2(from_tech_stack, from_object_type, from_sub_object_type); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_Service.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_Service.java new file mode 100644 index 0000000..880efd1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_Service.java @@ -0,0 +1,21 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.codeextractor.entity.ActiveTechStack_DTO; +import com.realnet.codeextractor.entity.Rn_Bcf_Technology_Stack1; + +public interface Rn_Bcf_TechnologyStack_Service { + List getAll(); + Page getAll(Pageable p); + Rn_Bcf_Technology_Stack1 getById(int id); + Rn_Bcf_Technology_Stack1 save(Rn_Bcf_Technology_Stack1 bcf_tech_stack); + Rn_Bcf_Technology_Stack1 updateById(int id, Rn_Bcf_Technology_Stack1 bcf_tech_stack); + boolean deleteById(int id); + + List getListOfActivateTechnology(); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_ServiceImpl1.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_ServiceImpl1.java new file mode 100644 index 0000000..9e77a84 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rn_Bcf_TechnologyStack_ServiceImpl1.java @@ -0,0 +1,101 @@ +package com.realnet.codeextractor.service; + +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.ActiveTechStack_DTO; +import com.realnet.codeextractor.entity.Rn_Bcf_Technology_Stack1; +import com.realnet.codeextractor.repository.Rn_Bcf_TechnologyStack_Repository1; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.utils.Constant; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class Rn_Bcf_TechnologyStack_ServiceImpl1 implements Rn_Bcf_TechnologyStack_Service { + + @Autowired + private Rn_Bcf_TechnologyStack_Repository1 technologStackRepository; + + @Override + public List getAll() { + return technologStackRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return technologStackRepository.findAll(page); + } + + @Override + public Rn_Bcf_Technology_Stack1 getById(int id) { + Rn_Bcf_Technology_Stack1 bcf_extractor = technologStackRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + id)); + return bcf_extractor; + } + + @Override + public Rn_Bcf_Technology_Stack1 save(Rn_Bcf_Technology_Stack1 bcf_extractor) { + Rn_Bcf_Technology_Stack1 savedTechnology = technologStackRepository.save(bcf_extractor); + return savedTechnology; + } + + @Override + public Rn_Bcf_Technology_Stack1 updateById(int id, Rn_Bcf_Technology_Stack1 technologyRequest) { + Rn_Bcf_Technology_Stack1 old_extractor = technologStackRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + id)); + + old_extractor.setTech_stack(technologyRequest.getTech_stack()); + old_extractor.setTech_stack_key(technologyRequest.getTech_stack_key()); + old_extractor.setBase_prj_file_name(technologyRequest.getBase_prj_file_name()); + old_extractor.setTags(technologyRequest.getTags()); + old_extractor.setActive(technologyRequest.isActive()); + + final Rn_Bcf_Technology_Stack1 updated_technology = technologStackRepository.save(old_extractor); + return updated_technology; + } + + @Override + public boolean deleteById(int id) { + if (!technologStackRepository.existsById(id)) { + throw new ResourceNotFoundException(Constant.NOT_EXIST_EXCEPTION); + } + Rn_Bcf_Technology_Stack1 bcf_extractor = technologStackRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + id)); + technologStackRepository.delete(bcf_extractor); + return true; + } + + @Override + public List getListOfActivateTechnology() { +// List activeTechList = technologStackRepository.activeTechList(); +// log.debug("ACTIVE TECHNOLOGY LIST : {} ", activeTechList); + + List activeTech = technologStackRepository.activeTechStacks(); + log.debug("ACTIVE TECHNOLOGY : {} ", activeTech); + +// activeTech.forEach(data -> { +// ActiveTechStack_DTO dto = new ActiveTechStack_DTO(); +// dto.setId(data.getId()); +// dto.setName(data.getBase_prj_file_name()); +// }); + + List activeTechDTO = new ArrayList(); + for (Rn_Bcf_Technology_Stack1 tech : activeTech) { + ActiveTechStack_DTO dto = new ActiveTechStack_DTO(); + dto.setId(tech.getId()); + dto.setName(tech.getBase_prj_file_name()); + activeTechDTO.add(dto); + } + log.debug("activeTechDTO : {} ", activeTechDTO); + System.out.println("ServiceImpl : activeTechDTO " + activeTechDTO); + return activeTechDTO; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_keywordService.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_keywordService.java new file mode 100644 index 0000000..3c479cd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_keywordService.java @@ -0,0 +1,44 @@ +package com.realnet.codeextractor.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.codeextractor.entity.Rule_library_keyword; +import com.realnet.codeextractor.repository.Rule_library_keywordRepository; + + +@Service +public class Rule_library_keywordService { + + @Autowired + private Rule_library_keywordRepository Repository; + + public Rule_library_keyword Savedata(Rule_library_keyword data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Rule_library_keyword getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Rule_library_keyword update(Rule_library_keyword data, Integer id) { + Rule_library_keyword old = Repository.findById(id).get(); + old.setTech_stack(data.getTech_stack()); + old.setObject_type(data.getObject_type()); + old.setSub_object_type(data.getSub_object_type()); + old.setVersion(data.getVersion()); + old.setReplcement_string(data.getReplcement_string()); + final Rule_library_keyword test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_service_gk.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_service_gk.java new file mode 100644 index 0000000..7c5d5f9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test4/codeextractor/service/Rule_library_service_gk.java @@ -0,0 +1,105 @@ +package com.realnet.codeextractor.service; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import org.apache.commons.io.FileUtils; +import org.apache.commons.io.FilenameUtils; +import org.json.simple.parser.ParseException; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; + +@Service +public class Rule_library_service_gk { + + public String rule(String path, String start, String end, String replaceWith) throws ParseException, IOException { + + StringBuilder frontend = new StringBuilder(); + + File staticFile = new File(path); + String staticFileName = staticFile.getName(); + + // System.out.println("========" + staticFileName + "============="); + + String fileString = FileUtils.readFileToString(staticFile, StandardCharsets.UTF_8); + String fileType = FilenameUtils.getExtension(staticFileName); + + // don't check empty file for replacement.. + if (!fileString.isEmpty()) { + + // RULE APPLY + if (end.isEmpty()) { + String f_string = stringReplacewithout_endstring(fileString, start, replaceWith, fileType); + System.out.println(f_string.toString()); + }else { + String finalString = stringReplace(fileString, start, end, replaceWith, fileType); + System.out.println(finalString.toString()); + + } + +// BufferedWriter bw = new BufferedWriter(new FileWriter(staticFile, false)); // replaced +// // string +// bw.write(finalString); +// bw.close(); + + } + + return frontend.toString(); + } + + //WHEN END STRING IS PRESENT + public static String stringReplace(String str, String start, String end, String replaceWith, String file_type) { + int i = str.indexOf(start); + while (i != -1) { + int j = str.indexOf(end, i + 1); + if (j != -1) { + /* + * @Include starting and ending string String data = str.substring(0, i + + * start.length()) + "\n" + replaceWith + "\n"; String temp = str.substring(j); + * + * @Not Include starting and ending string String data = str.substring(0, i) + + * "\n" + replaceWith + "\n"; String temp = str.substring(j + end.length()); + */ +// String data = str.substring(0, i+start.length()) +" "+ replaceWith ; +// String temp = str.substring(j-end.length() + end.length()); + + String data = str.substring(0, i) + start + " " + replaceWith + " " + end; + String temp = str.substring(j + end.length()); + data += temp; + str = data; + i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); + } else { + break; + } + } + + return str; + } + + //WHEN END STRING IS NOT PERSENT + public static String stringReplacewithout_endstring(String str, String start, String replaceWith, String file_type) { + int i = str.indexOf(start); + while (i != -1) { + + /* + * @Include starting and ending string String data = str.substring(0, i + + * start.length()) + "\n" + replaceWith + "\n"; String temp = str.substring(j); + * + * @Not Include starting and ending string String data = str.substring(0, i) + + * "\n" + replaceWith + "\n"; String temp = str.substring(j + end.length()); + */ +// String data = str.substring(0, i+start.length()) +" "+ replaceWith ; +// String temp = str.substring(j-end.length() + end.length()); + + String data = str.substring(0, i) + start + " " + replaceWith ; + str = data; + i = str.indexOf(start, i + replaceWith.length() ); + + } + + return str; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/ConnectorController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/ConnectorController.java new file mode 100644 index 0000000..9f04c2b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/ConnectorController.java @@ -0,0 +1,79 @@ +package com.realnet.Connector.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Repository.Connectorrepository; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/connector") +public class ConnectorController { + + @Autowired + private Connectorrepository connectorrepository; + @Autowired + private AppUserServiceImpl userService; + + + //ADD DATA + @PostMapping("/Connectorjson") + public ResponseEntity save(@RequestBody Connector connector) { + AppUser loggedInUser = userService.getLoggedInUser(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + connector.setAccountId(account_id); + Connector save = connectorrepository.save(connector); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //UPDATE BY ID + @PutMapping("/Connectorjson/{id}") + public ResponseEntity update(@PathVariable Long id, @RequestBody Connector connector) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + con.setName(connector.getName()); + con.setConnector_json(connector.getConnector_json()); + + Connector save = connectorrepository.save(con); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET ALL + @GetMapping("/Connectorjson") + public ResponseEntity getall() { + List save = connectorrepository.findAll(); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + //GET BY ID + @GetMapping("/Connectorjson/{id}") + public ResponseEntity getbyid(@PathVariable Long id) { + Connector con = connectorrepository.findById(id).orElseThrow(null); + return new ResponseEntity<>(con, HttpStatus.OK); + + } + + //DELETE BY ID + @DeleteMapping("/Connectorjson/{id}") + public void delete(@PathVariable Long id){ + Connector con = connectorrepository.findById(id).orElseThrow(null); + connectorrepository.delete(con); + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/MappingController.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/MappingController.java new file mode 100644 index 0000000..0cb895d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Controller/MappingController.java @@ -0,0 +1,104 @@ +package com.realnet.Connector.Controller; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Connector.Entity.Connector; +import com.realnet.Connector.Entity.Mapping; +import com.realnet.Connector.Repository.Connectorrepository; + +@RestController +@RequestMapping("/token/connector/mapping") +public class MappingController { + + @Autowired + private Connectorrepository connectorrepository; + + @PostMapping("/mapping") + public Object connector(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str = mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + // get key from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String key = entry.getKey(); + String string = key.toString(); + list.add(string); + } + return list; + + } + + @PostMapping("/mapping1") + public Object connector1(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str = mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + // get values from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String string2 = entry.getValue().getAsString(); + list.add(string2); + } + return list; + + } + + @PostMapping("/mapping2") + public Object getvalue(@RequestBody Mapping mapping) { + List list = new ArrayList<>(); + +// Map param = new HashMap(); + String str = mapping.getMappingString(); + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + JsonObject obj = element.getAsJsonObject(); + + // get values from get api + Set> entries = obj.entrySet(); + for (Map.Entry entry : entries) { + + String string2 = entry.getValue().getAsString(); + list.add(string2); + } + return list; + + } + + // get api for call connector by name for job(by gk) + @GetMapping("/connectorname/{name}") + public ResponseEntity getconnector(@PathVariable String name) { + Connector save = connectorrepository.findconnectorbyname(name); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Connector.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Connector.java new file mode 100644 index 0000000..8de5289 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Connector.java @@ -0,0 +1,33 @@ +package com.realnet.Connector.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Column; + +import com.realnet.Dashboard1.Entity.dashbord_Who_collumn; + +import lombok.Data; + +@Entity +@Data +public class Connector extends dashbord_Who_collumn { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + @Column(length = 15000) + private String get_str; + @Lob + private String connector_json; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Mapping.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Mapping.java new file mode 100644 index 0000000..0e23d56 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Entity/Mapping.java @@ -0,0 +1,9 @@ +package com.realnet.Connector.Entity; + +import lombok.Data; + +@Data +public class Mapping { + + private String mappingString; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Repository/Connectorrepository.java b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Repository/Connectorrepository.java new file mode 100644 index 0000000..1d83c69 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/BaseProject/test5/Connector/Repository/Connectorrepository.java @@ -0,0 +1,15 @@ +package com.realnet.Connector.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Connector.Entity.Connector; +@Repository +public interface Connectorrepository extends JpaRepository{ + + + @Query(value = "select * from connector where name=?1", nativeQuery = true) + Connector findconnectorbyname(String name); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research (1)_1702204592889.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research (1)_1702204592889.xlsx new file mode 100644 index 0000000..b2c78a8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research (1)_1702204592889.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061306652 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061306652 new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061306652 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061322914 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061322914 new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research.xlsx_1702061322914 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702064198316.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702064198316.xlsx new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702064198316.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702099911160.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702099911160.xlsx new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702099911160.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702100584709.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702100584709.xlsx new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702100584709.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702106670593.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702106670593.xlsx new file mode 100644 index 0000000..0776c73 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/BRD Lead Research_1702106670593.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Company_1702203812932.xlsx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Company_1702203812932.xlsx new file mode 100644 index 0000000..2f36963 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Company_1702203812932.xlsx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar (2)_1702099252056.docx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar (2)_1702099252056.docx new file mode 100644 index 0000000..a9dd678 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar (2)_1702099252056.docx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar_1702204586756.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar_1702204586756.pdf new file mode 100644 index 0000000..717442a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Gaurav Kumar_1702204586756.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053167198 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053167198 new file mode 100644 index 0000000..e74ac98 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053167198 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053169266 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053169266 new file mode 100644 index 0000000..e74ac98 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/HSI_220x100.jpg_1702053169266 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702062431957.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702062431957.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702062431957.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702064196341.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702064196341.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702064196341.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702065610144.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702065610144.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702065610144.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099246272.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099246272.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099246272.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099909415.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099909415.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702099909415.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702106507641.pdf b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702106507641.pdf new file mode 100644 index 0000000..a1299c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Lead Research Sample Report_1702106507641.pdf differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061299332 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061299332 new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061299332 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061303418 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061303418 new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061303418 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061319760 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061319760 new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App.docx_1702061319760 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103968567.docx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103968567.docx new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103968567.docx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103972049.docx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103972049.docx new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702103972049.docx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106509297.docx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106509297.docx new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106509297.docx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106672547.docx b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106672547.docx new file mode 100644 index 0000000..3bd5dce Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/Sample Attendance App_1702106672547.docx differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061316216 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061316216 new file mode 100644 index 0000000..6618380 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061316216 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061329316 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061329316 new file mode 100644 index 0000000..6618380 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/WhatsApp Image 2023-08-05 at 9.18.54 AM.jpeg_1702061329316 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/cldnsure_1702111863905.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/cldnsure_1702111863905.png new file mode 100644 index 0000000..890f7bd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/cldnsure_1702111863905.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053045347 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053045347 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053045347 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053046798 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053046798 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053046798 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053157144 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053157144 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053157144 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053158727 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053158727 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053158727 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053160254 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053160254 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053160254 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053164353 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053164353 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702053164353 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702054747220 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702054747220 new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7).png_1702054747220 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702062428052.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702062428052.png new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702062428052.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702111862466.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702111862466.png new file mode 100644 index 0000000..8d8252d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image (7)_1702111862466.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702026483662 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702026483662 new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702026483662 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052987565 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052987565 new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052987565 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052989394 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052989394 new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702052989394 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702053989661 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702053989661 new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image.png_1702053989661 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702203806261.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702203806261.png new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702203806261.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702204580473.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702204580473.png new file mode 100644 index 0000000..345120d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/image_1702204580473.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/logo_1702203804424.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/logo_1702203804424.png new file mode 100644 index 0000000..dd996b9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/logo_1702203804424.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702053992704 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702053992704 new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702053992704 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702054745710 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702054745710 new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702054745710 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057782909 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057782909 new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057782909 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057784287 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057784287 new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1.png_1702057784287 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702103970155.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702103970155.png new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702103970155.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702111860859.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702111860859.png new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1702111860859.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1703226744275.png b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1703226744275.png new file mode 100644 index 0000000..729484c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/paytm1_1703226744275.png differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702027659349 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702027659349 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702027659349 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053042156 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053042156 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053042156 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053043732 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053043732 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053043732 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053809714 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053809714 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053809714 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053812252 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053812252 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053812252 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053991139 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053991139 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702053991139 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702054744200 b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702054744200 new file mode 100644 index 0000000..465275c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/razorpay.png_1702054744200 differ diff --git a/pro103ab-back-b/authsec_springboot/backend/Resources/Files/sample2-v1.0.2_1702100581391.zip b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/sample2-v1.0.2_1702100581391.zip new file mode 100644 index 0000000..1586595 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/Resources/Files/sample2-v1.0.2_1702100581391.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/Abc.java new file mode 100644 index 0000000..5c33750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/Abc.java @@ -0,0 +1,18 @@ +package com.realnet.Abc_1665647440047_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Abc{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int name_id; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcController.java new file mode 100644 index 0000000..4b90753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcController.java @@ -0,0 +1,42 @@ +package com.realnet.Abc_1665647440047_back.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.Abc_1665647440047_back.Entity.Abc; +import com.realnet.Abc_1665647440047_back.Services.AbcService ; +@RequestMapping(value = "/_1665647440047_back") +@RestController +public class AbcController { + + @Autowired + private AbcService Service; + + @PostMapping("/Abc") + + public Abc Savedata(@RequestBody Abc data) { + Abc save = Service.Savedata(data) ; + return save; + } + + + @GetMapping("/Abc") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Abc/{id}") + public Abc getdetailsbyId(@PathVariable Long id ) { + Abc get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Abc/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } +@PutMapping("/Abc/{id}") + public Abc update(@RequestBody Abc data,@PathVariable Long id ) { + Abc update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcRepository.java new file mode 100644 index 0000000..2576449 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Abc_1665647440047_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Abc_1665647440047_back.Entity.Abc; + +@Repository +public interface AbcRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcService.java new file mode 100644 index 0000000..a26061b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/AbcService.java @@ -0,0 +1,37 @@ +package com.realnet.Abc_1665647440047_back.Services; +import com.realnet.Abc_1665647440047_back.Repository.AbcRepository; +import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class AbcService { +@Autowired +private AbcRepository Repository; +public Abc Savedata(Abc data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Abc getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Abc update(Abc data,Long id) { + Abc old = Repository.findById(id).get(); +old.setName(data.getName()); +old.setName_id(data.getName_id()); +final Abc test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_Abc.java new file mode 100644 index 0000000..792402e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_Abc.java @@ -0,0 +1,18 @@ +"package com.realnet.+""+.Entity;" + "\r\n" + +" import lombok.*;" + "\r\n" + +" import javax.persistence.*;" + "\r\n" + +" import java.time.LocalDateTime;" + "\r\n" + +" import java.util.*;" + "\r\n" + +"" + "\r\n" + +" @Entity " + "\r\n" + +" @Data" + "\r\n" + +" public class Abc{ " + "\r\n" + +"" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String name;" + "\r\n" + +" private int name_id;" + "\r\n" + +"" + "\r\n" + +" }" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcController.java new file mode 100644 index 0000000..ec46b16 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcController.java @@ -0,0 +1,42 @@ +"package com.realnet.+""+.Controllers;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.web.bind.annotation.*;" + "\r\n" + +"import com.realnet.+""+.Entity.Abc;" + "\r\n" + +"import com.realnet.+""+.Services.AbcService ;" + "\r\n" + +"@RequestMapping(value = \"/_1665647440047_back\")" + "\r\n" + +"@RestController" + "\r\n" + +"public class AbcController {" + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private AbcService Service;" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/Abc\")" + "\r\n" + +" " + "\r\n" + +" public Abc Savedata(@RequestBody Abc data) {" + "\r\n" + +" Abc save = Service.Savedata(data) ;" + "\r\n" + +" return save;" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" @GetMapping(\"/Abc\")" + "\r\n" + +" public List getdetails() {" + "\r\n" + +" List get = Service.getdetails(); " + "\r\n" + +" return get;" + "\r\n" + +"}" + "\r\n" + +"@GetMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc getdetailsbyId(@PathVariable Long id ) {" + "\r\n" + +" Abc get = Service.getdetailsbyId(id);" + "\r\n" + +" return get;" + "\r\n" + +" }" + "\r\n" + +"@DeleteMapping(\"/Abc/{id}\")" + "\r\n" + +" public void delete_by_id(@PathVariable Long id ) {" + "\r\n" + +" Service.delete_by_id(id);" + "\r\n" + +" " + "\r\n" + +" }" + "\r\n" + +"@PutMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc update(@RequestBody Abc data,@PathVariable Long id ) {" + "\r\n" + +" Abc update = Service.update(data,id);" + "\r\n" + +" return update;" + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcRepository.java new file mode 100644 index 0000000..d4650e5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcRepository.java @@ -0,0 +1,13 @@ +"package com.realnet.+""+.Repository;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"import com.realnet.+""+.Entity.Abc;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface AbcRepository extends JpaRepository { " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcService.java new file mode 100644 index 0000000..a435283 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676871419664/static_code/SE_AbcService.java @@ -0,0 +1,37 @@ +"package com.realnet.+""+.Services;" + "\r\n" + +"import com.realnet.+""+.Repository.AbcRepository;" + "\r\n" + +"import com.realnet.+""+.Entity.Abc;import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +" public class AbcService {" + "\r\n" + +"@Autowired" + "\r\n" + +"private AbcRepository Repository;" + "\r\n" + +"public Abc Savedata(Abc data) {" + "\r\n" + +" return Repository.save(data); " + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"public List getdetails() {" + "\r\n" + +" return (List) Repository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc getdetailsbyId(Long id) {" + "\r\n" + +" return Repository.findById(id).get();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +" public void delete_by_id(Long id) {" + "\r\n" + +" Repository.deleteById(id);" + "\r\n" + +"}" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc update(Abc data,Long id) {" + "\r\n" + +" Abc old = Repository.findById(id).get();" + "\r\n" + +"old.setName(data.getName());" + "\r\n" + +"old.setName_id(data.getName_id());" + "\r\n" + +"final Abc test = Repository.save(old);" + "\r\n" + +" return test;}}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/Abc.java new file mode 100644 index 0000000..5c33750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/Abc.java @@ -0,0 +1,18 @@ +package com.realnet.Abc_1665647440047_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Abc{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int name_id; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcController.java new file mode 100644 index 0000000..4b90753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcController.java @@ -0,0 +1,42 @@ +package com.realnet.Abc_1665647440047_back.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.Abc_1665647440047_back.Entity.Abc; +import com.realnet.Abc_1665647440047_back.Services.AbcService ; +@RequestMapping(value = "/_1665647440047_back") +@RestController +public class AbcController { + + @Autowired + private AbcService Service; + + @PostMapping("/Abc") + + public Abc Savedata(@RequestBody Abc data) { + Abc save = Service.Savedata(data) ; + return save; + } + + + @GetMapping("/Abc") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Abc/{id}") + public Abc getdetailsbyId(@PathVariable Long id ) { + Abc get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Abc/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } +@PutMapping("/Abc/{id}") + public Abc update(@RequestBody Abc data,@PathVariable Long id ) { + Abc update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcRepository.java new file mode 100644 index 0000000..2576449 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Abc_1665647440047_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Abc_1665647440047_back.Entity.Abc; + +@Repository +public interface AbcRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcService.java new file mode 100644 index 0000000..a26061b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/AbcService.java @@ -0,0 +1,37 @@ +package com.realnet.Abc_1665647440047_back.Services; +import com.realnet.Abc_1665647440047_back.Repository.AbcRepository; +import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class AbcService { +@Autowired +private AbcRepository Repository; +public Abc Savedata(Abc data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Abc getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Abc update(Abc data,Long id) { + Abc old = Repository.findById(id).get(); +old.setName(data.getName()); +old.setName_id(data.getName_id()); +final Abc test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_Abc.java new file mode 100644 index 0000000..ed67b94 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_Abc.java @@ -0,0 +1,18 @@ +"package com.realnet.+repo_name+.Entity;" + "\r\n" + +" import lombok.*;" + "\r\n" + +" import javax.persistence.*;" + "\r\n" + +" import java.time.LocalDateTime;" + "\r\n" + +" import java.util.*;" + "\r\n" + +"" + "\r\n" + +" @Entity " + "\r\n" + +" @Data" + "\r\n" + +" public class Abc{ " + "\r\n" + +"" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String name;" + "\r\n" + +" private int name_id;" + "\r\n" + +"" + "\r\n" + +" }" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcController.java new file mode 100644 index 0000000..5222d4c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcController.java @@ -0,0 +1,42 @@ +"package com.realnet.+repo_name+.Controllers;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.web.bind.annotation.*;" + "\r\n" + +"import com.realnet.+repo_name+.Entity.Abc;" + "\r\n" + +"import com.realnet.+repo_name+.Services.AbcService ;" + "\r\n" + +"@RequestMapping(value = \"/_1665647440047_back\")" + "\r\n" + +"@RestController" + "\r\n" + +"public class AbcController {" + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private AbcService Service;" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/Abc\")" + "\r\n" + +" " + "\r\n" + +" public Abc Savedata(@RequestBody Abc data) {" + "\r\n" + +" Abc save = Service.Savedata(data) ;" + "\r\n" + +" return save;" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" @GetMapping(\"/Abc\")" + "\r\n" + +" public List getdetails() {" + "\r\n" + +" List get = Service.getdetails(); " + "\r\n" + +" return get;" + "\r\n" + +"}" + "\r\n" + +"@GetMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc getdetailsbyId(@PathVariable Long id ) {" + "\r\n" + +" Abc get = Service.getdetailsbyId(id);" + "\r\n" + +" return get;" + "\r\n" + +" }" + "\r\n" + +"@DeleteMapping(\"/Abc/{id}\")" + "\r\n" + +" public void delete_by_id(@PathVariable Long id ) {" + "\r\n" + +" Service.delete_by_id(id);" + "\r\n" + +" " + "\r\n" + +" }" + "\r\n" + +"@PutMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc update(@RequestBody Abc data,@PathVariable Long id ) {" + "\r\n" + +" Abc update = Service.update(data,id);" + "\r\n" + +" return update;" + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcRepository.java new file mode 100644 index 0000000..1b6bd38 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcRepository.java @@ -0,0 +1,13 @@ +"package com.realnet.+repo_name+.Repository;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"import com.realnet.+repo_name+.Entity.Abc;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface AbcRepository extends JpaRepository { " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcService.java new file mode 100644 index 0000000..678771a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872068705/static_code/SE_AbcService.java @@ -0,0 +1,37 @@ +"package com.realnet.+repo_name+.Services;" + "\r\n" + +"import com.realnet.+repo_name+.Repository.AbcRepository;" + "\r\n" + +"import com.realnet.+repo_name+.Entity.Abc;import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +" public class AbcService {" + "\r\n" + +"@Autowired" + "\r\n" + +"private AbcRepository Repository;" + "\r\n" + +"public Abc Savedata(Abc data) {" + "\r\n" + +" return Repository.save(data); " + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"public List getdetails() {" + "\r\n" + +" return (List) Repository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc getdetailsbyId(Long id) {" + "\r\n" + +" return Repository.findById(id).get();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +" public void delete_by_id(Long id) {" + "\r\n" + +" Repository.deleteById(id);" + "\r\n" + +"}" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc update(Abc data,Long id) {" + "\r\n" + +" Abc old = Repository.findById(id).get();" + "\r\n" + +"old.setName(data.getName());" + "\r\n" + +"old.setName_id(data.getName_id());" + "\r\n" + +"final Abc test = Repository.save(old);" + "\r\n" + +" return test;}}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/Abc.java new file mode 100644 index 0000000..5c33750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/Abc.java @@ -0,0 +1,18 @@ +package com.realnet.Abc_1665647440047_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Abc{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int name_id; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcController.java new file mode 100644 index 0000000..4b90753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcController.java @@ -0,0 +1,42 @@ +package com.realnet.Abc_1665647440047_back.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.Abc_1665647440047_back.Entity.Abc; +import com.realnet.Abc_1665647440047_back.Services.AbcService ; +@RequestMapping(value = "/_1665647440047_back") +@RestController +public class AbcController { + + @Autowired + private AbcService Service; + + @PostMapping("/Abc") + + public Abc Savedata(@RequestBody Abc data) { + Abc save = Service.Savedata(data) ; + return save; + } + + + @GetMapping("/Abc") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Abc/{id}") + public Abc getdetailsbyId(@PathVariable Long id ) { + Abc get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Abc/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } +@PutMapping("/Abc/{id}") + public Abc update(@RequestBody Abc data,@PathVariable Long id ) { + Abc update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcRepository.java new file mode 100644 index 0000000..2576449 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Abc_1665647440047_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Abc_1665647440047_back.Entity.Abc; + +@Repository +public interface AbcRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcService.java new file mode 100644 index 0000000..a26061b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/AbcService.java @@ -0,0 +1,37 @@ +package com.realnet.Abc_1665647440047_back.Services; +import com.realnet.Abc_1665647440047_back.Repository.AbcRepository; +import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class AbcService { +@Autowired +private AbcRepository Repository; +public Abc Savedata(Abc data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Abc getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Abc update(Abc data,Long id) { + Abc old = Repository.findById(id).get(); +old.setName(data.getName()); +old.setName_id(data.getName_id()); +final Abc test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_Abc.java new file mode 100644 index 0000000..c2de4a5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_Abc.java @@ -0,0 +1,26 @@ +"package com.realnet."+repo_name+".Entity;" + "\r\n" + +" import lombok.*;" + "\r\n" + +" import javax.persistence.*;" + "\r\n" + +" import java.time.LocalDateTime;" + "\r\n" + +" import java.util.*;" + "\r\n" + +"" + "\r\n" + +" @Entity " + "\r\n" + +" @Data" + "\r\n" + +" public class "+table_name+"{ " + "\r\n" + +"" + "\r\n" + +" "+ for (Entry e : entrySet) { + + String string = e.getKey().toLowerCase(); + String datatype = e.getValue().toString(); + String lowerCase = string.replaceAll(" ", "_").toLowerCase(); + String add = "n private " + datatype + " " + lowerCase + ";"; + "+table_name+"1Code.append(add); + } + "+table_name+"1Code.append("n}nr"); +"" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String name;" + "\r\n" + +" private int name_id;" + "\r\n" + +"" + "\r\n" + +" }" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcController.java new file mode 100644 index 0000000..aa91466 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcController.java @@ -0,0 +1,42 @@ +"package com.realnet."+repo_name+".Controllers;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.web.bind.annotation.*;" + "\r\n" + +"import com.realnet."+repo_name+".Entity."+table_name+";" + "\r\n" + +"import com.realnet."+repo_name+".Services."+table_name+"Service ;" + "\r\n" + +"@RequestMapping(value = \"/_1665647440047_back\")" + "\r\n" + +"@RestController" + "\r\n" + +"public class "+table_name+"Controller {" + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private "+table_name+"Service Service;" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/"+table_name+"\")" + "\r\n" + +" " + "\r\n" + +" public "+table_name+" Savedata(@RequestBody "+table_name+" data) {" + "\r\n" + +" "+table_name+" save = Service.Savedata(data) ;" + "\r\n" + +" return save;" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" @GetMapping(\"/"+table_name+"\")" + "\r\n" + +" public List<"+table_name+"> getdetails() {" + "\r\n" + +" List<"+table_name+"> get = Service.getdetails(); " + "\r\n" + +" return get;" + "\r\n" + +"}" + "\r\n" + +"@GetMapping(\"/"+table_name+"/{id}\")" + "\r\n" + +" public "+table_name+" getdetailsbyId(@PathVariable Long id ) {" + "\r\n" + +" "+table_name+" get = Service.getdetailsbyId(id);" + "\r\n" + +" return get;" + "\r\n" + +" }" + "\r\n" + +"@DeleteMapping(\"/"+table_name+"/{id}\")" + "\r\n" + +" public void delete_by_id(@PathVariable Long id ) {" + "\r\n" + +" Service.delete_by_id(id);" + "\r\n" + +" " + "\r\n" + +" }" + "\r\n" + +"@PutMapping(\"/"+table_name+"/{id}\")" + "\r\n" + +" public "+table_name+" update(@RequestBody "+table_name+" data,@PathVariable Long id ) {" + "\r\n" + +" "+table_name+" update = Service.update(data,id);" + "\r\n" + +" return update;" + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcRepository.java new file mode 100644 index 0000000..cd27a5d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcRepository.java @@ -0,0 +1,13 @@ +"package com.realnet."+repo_name+".Repository;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"import com.realnet."+repo_name+".Entity."+table_name+";" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface "+table_name+"Repository extends JpaRepository<"+table_name+", Long> { " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcService.java new file mode 100644 index 0000000..8a7344c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676872241077/static_code/SE_AbcService.java @@ -0,0 +1,37 @@ +"package com.realnet."+repo_name+".Services;" + "\r\n" + +"import com.realnet."+repo_name+".Repository."+table_name+"Repository;" + "\r\n" + +"import com.realnet."+repo_name+".Entity."+table_name+";import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +" public class "+table_name+"Service {" + "\r\n" + +"@Autowired" + "\r\n" + +"private "+table_name+"Repository Repository;" + "\r\n" + +"public "+table_name+" Savedata("+table_name+" data) {" + "\r\n" + +" return Repository.save(data); " + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"public List<"+table_name+"> getdetails() {" + "\r\n" + +" return (List<"+table_name+">) Repository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public "+table_name+" getdetailsbyId(Long id) {" + "\r\n" + +" return Repository.findById(id).get();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +" public void delete_by_id(Long id) {" + "\r\n" + +" Repository.deleteById(id);" + "\r\n" + +"}" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public "+table_name+" update("+table_name+" data,Long id) {" + "\r\n" + +" "+table_name+" old = Repository.findById(id).get();" + "\r\n" + +"old.setName(data.getName());" + "\r\n" + +"old.setName_id(data.getName_id());" + "\r\n" + +"final "+table_name+" test = Repository.save(old);" + "\r\n" + +" return test;}}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/Abc.java new file mode 100644 index 0000000..5c33750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/Abc.java @@ -0,0 +1,18 @@ +package com.realnet.Abc_1665647440047_back.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Abc{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private int name_id; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcController.java new file mode 100644 index 0000000..4b90753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcController.java @@ -0,0 +1,42 @@ +package com.realnet.Abc_1665647440047_back.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.Abc_1665647440047_back.Entity.Abc; +import com.realnet.Abc_1665647440047_back.Services.AbcService ; +@RequestMapping(value = "/_1665647440047_back") +@RestController +public class AbcController { + + @Autowired + private AbcService Service; + + @PostMapping("/Abc") + + public Abc Savedata(@RequestBody Abc data) { + Abc save = Service.Savedata(data) ; + return save; + } + + + @GetMapping("/Abc") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Abc/{id}") + public Abc getdetailsbyId(@PathVariable Long id ) { + Abc get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Abc/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } +@PutMapping("/Abc/{id}") + public Abc update(@RequestBody Abc data,@PathVariable Long id ) { + Abc update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcRepository.java new file mode 100644 index 0000000..2576449 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcRepository.java @@ -0,0 +1,13 @@ +package com.realnet.Abc_1665647440047_back.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.Abc_1665647440047_back.Entity.Abc; + +@Repository +public interface AbcRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcService.java new file mode 100644 index 0000000..a26061b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/AbcService.java @@ -0,0 +1,37 @@ +package com.realnet.Abc_1665647440047_back.Services; +import com.realnet.Abc_1665647440047_back.Repository.AbcRepository; +import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class AbcService { +@Autowired +private AbcRepository Repository; +public Abc Savedata(Abc data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Abc getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Abc update(Abc data,Long id) { + Abc old = Repository.findById(id).get(); +old.setName(data.getName()); +old.setName_id(data.getName_id()); +final Abc test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_Abc.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_Abc.java new file mode 100644 index 0000000..143506f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_Abc.java @@ -0,0 +1,18 @@ +"package com.realnet.Abc_1665647440047_back.Entity;" + "\r\n" + +" import lombok.*;" + "\r\n" + +" import javax.persistence.*;" + "\r\n" + +" import java.time.LocalDateTime;" + "\r\n" + +" import java.util.*;" + "\r\n" + +"" + "\r\n" + +" @Entity " + "\r\n" + +" @Data" + "\r\n" + +" public class Abc{ " + "\r\n" + +"" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String name;" + "\r\n" + +" private int name_id;" + "\r\n" + +"" + "\r\n" + +" }" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcController.java new file mode 100644 index 0000000..8e9a704 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcController.java @@ -0,0 +1,42 @@ +"package com.realnet.Abc_1665647440047_back.Controllers;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.web.bind.annotation.*;" + "\r\n" + +"import com.realnet.Abc_1665647440047_back.Entity.Abc;" + "\r\n" + +"import com.realnet.Abc_1665647440047_back.Services.AbcService ;" + "\r\n" + +"@RequestMapping(value = \"/_1665647440047_back\")" + "\r\n" + +"@RestController" + "\r\n" + +"public class AbcController {" + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private AbcService Service;" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/Abc\")" + "\r\n" + +" " + "\r\n" + +" public Abc Savedata(@RequestBody Abc data) {" + "\r\n" + +" Abc save = Service.Savedata(data) ;" + "\r\n" + +" return save;" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" @GetMapping(\"/Abc\")" + "\r\n" + +" public List getdetails() {" + "\r\n" + +" List get = Service.getdetails(); " + "\r\n" + +" return get;" + "\r\n" + +"}" + "\r\n" + +"@GetMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc getdetailsbyId(@PathVariable Long id ) {" + "\r\n" + +" Abc get = Service.getdetailsbyId(id);" + "\r\n" + +" return get;" + "\r\n" + +" }" + "\r\n" + +"@DeleteMapping(\"/Abc/{id}\")" + "\r\n" + +" public void delete_by_id(@PathVariable Long id ) {" + "\r\n" + +" Service.delete_by_id(id);" + "\r\n" + +" " + "\r\n" + +" }" + "\r\n" + +"@PutMapping(\"/Abc/{id}\")" + "\r\n" + +" public Abc update(@RequestBody Abc data,@PathVariable Long id ) {" + "\r\n" + +" Abc update = Service.update(data,id);" + "\r\n" + +" return update;" + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcRepository.java new file mode 100644 index 0000000..c974278 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcRepository.java @@ -0,0 +1,13 @@ +"package com.realnet.Abc_1665647440047_back.Repository;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"import com.realnet.Abc_1665647440047_back.Entity.Abc;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface AbcRepository extends JpaRepository { " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcService.java new file mode 100644 index 0000000..db4d587 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/Abc_1665647440047_back_1676957500816/static_code/SE_AbcService.java @@ -0,0 +1,37 @@ +"package com.realnet.Abc_1665647440047_back.Services;" + "\r\n" + +"import com.realnet.Abc_1665647440047_back.Repository.AbcRepository;" + "\r\n" + +"import com.realnet.Abc_1665647440047_back.Entity.Abc;import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +" import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +" public class AbcService {" + "\r\n" + +"@Autowired" + "\r\n" + +"private AbcRepository Repository;" + "\r\n" + +"public Abc Savedata(Abc data) {" + "\r\n" + +" return Repository.save(data); " + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"public List getdetails() {" + "\r\n" + +" return (List) Repository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc getdetailsbyId(Long id) {" + "\r\n" + +" return Repository.findById(id).get();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +" public void delete_by_id(Long id) {" + "\r\n" + +" Repository.deleteById(id);" + "\r\n" + +"}" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"public Abc update(Abc data,Long id) {" + "\r\n" + +" Abc old = Repository.findById(id).get();" + "\r\n" + +"old.setName(data.getName());" + "\r\n" + +"old.setName_id(data.getName_id());" + "\r\n" + +"final Abc test = Repository.save(old);" + "\r\n" + +" return test;}}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTracker.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTracker.java new file mode 100644 index 0000000..28adc88 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTracker.java @@ -0,0 +1,45 @@ +package com.realnet.bugTracker.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +import com.realnet.incident.entity.WhooColomns; + +import lombok.Data; + +@Entity +@Data + +public class BugTracker extends WhooColomns { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String type; + private String key_no; + private String summary; + private String assignee; + private String reporter; + + private String select_project; + private String title; + private String select_status; + private String select_priority; + private String steps; + private String description; + + + private String fileName; + + private String fileType; + + @Lob + private byte[] data; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerController.java new file mode 100644 index 0000000..01cf186 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerController.java @@ -0,0 +1,111 @@ +package com.realnet.bugTracker.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.activity.service.ActivityService; +import com.realnet.bugTracker.Entity.BugTracker; +import com.realnet.bugTracker.Service.BugTrackerService; +import com.realnet.fileupload.helper.Fileuploadhelper; +import com.realnet.incident.entity.IncidentEntity; + +@RestController +@RequestMapping("/sureserve/bugtracker") +public class BugTrackerController { + + @Autowired + private BugTrackerService bugTrackerService; + + @Autowired + private Fileuploadhelper fileuploadhelper; + + @PostMapping("/bugtracker") + public ResponseEntity createIssue(@RequestParam String data, @RequestParam MultipartFile file) + throws JsonMappingException, JsonProcessingException { + + // Deserialize the "data" parameter to a BugTracker object using Jackson's + // ObjectMapper + BugTracker bugTracker = new ObjectMapper().readValue(data, BugTracker.class); + + // Check if a file was uploaded + if (!file.isEmpty()) { + System.out.println(file.getOriginalFilename()); + + // Use a file upload helper method to upload the file and return a boolean + // indicating success or failure + boolean isUploaded = fileuploadhelper.uploadFile(file); + + if (isUploaded) { + System.out.println("File uploaded successfully"); + bugTracker.setFileName(file.getOriginalFilename()); + } + } else { + bugTracker.setFileName("No file"); + } + + // Pass the updated BugTracker object to the bugTrackerService's createIssue + // method to create a new BugTracker object + BugTracker createdTracker = bugTrackerService.createIssue(bugTracker); + + return ResponseEntity.ok("addded successfully"); + } + + @GetMapping("/bugtracker/{id}") + public ResponseEntity getIssueById(@PathVariable Long id) { + BugTracker tracker = bugTrackerService.getIssueById(id); + return ResponseEntity.ok(tracker); + } + + @GetMapping("/bugtracker") + public ResponseEntity> getAllIssues() { + List allIssues = bugTrackerService.getAllIssues(); + return ResponseEntity.ok(allIssues); + } + + @PutMapping("/bugtracker/{id}") + public ResponseEntity updateIssue(@RequestParam String data, @PathVariable Long id, + @RequestParam MultipartFile file) throws Exception { + + BugTracker bugTracker = new ObjectMapper().readValue(data, BugTracker.class); + + if (!file.isEmpty()) { + System.out.println(file.getOriginalFilename()); + boolean f = fileuploadhelper.uploadFile(file); + + if (f) { + System.out.println("file uploaded successfully"); + bugTracker.setFileName(file.getOriginalFilename()); + } + } else { + bugTracker.setFileName("No file"); + } + + // Update the bug tracker with the new incident entity + bugTrackerService.updateIssue(id, bugTracker); + + return ResponseEntity.ok("Update successfully"); + } + + @DeleteMapping("/bugtracker/{id}") + public ResponseEntity deleteIssue(@PathVariable Long id) { + bugTrackerService.deleteIssue(id); + String message = "Issue with ID " + id + " has been deleted"; + return ResponseEntity.ok(message); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerRepository.java new file mode 100644 index 0000000..fee4ac9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerRepository.java @@ -0,0 +1,11 @@ +package com.realnet.bugTracker.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.bugTracker.Entity.BugTracker; + +@Repository +public interface BugTrackerRepository extends JpaRepository { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerService.java new file mode 100644 index 0000000..6fd68ba --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/BugTrackerService.java @@ -0,0 +1,59 @@ +package com.realnet.bugTracker.Service; + +import java.util.List; + +import javax.persistence.EntityNotFoundException; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.bugTracker.Entity.BugTracker; +import com.realnet.bugTracker.Repository.BugTrackerRepository; + +@Service +public class BugTrackerService { + + @Autowired + private BugTrackerRepository bugTrackerRepository; + + public BugTracker createIssue(BugTracker tracker) { + return bugTrackerRepository.save(tracker); + } + + public BugTracker getIssueById(Long id) { + return bugTrackerRepository.findById(id).orElseThrow(() -> new EntityNotFoundException("Issue not found")); + } + + public List getAllIssues() { + return bugTrackerRepository.findAll(); + } + + public BugTracker updateIssue(Long id, BugTracker tracker) { + BugTracker existingIssue = getIssueById(id); + existingIssue.setType(tracker.getType()); + existingIssue.setKey_no(tracker.getKey_no()); + existingIssue.setSummary(tracker.getSummary()); + existingIssue.setAssignee(tracker.getAssignee()); + existingIssue.setReporter(tracker.getReporter()); + existingIssue.setSelect_project(tracker.getSelect_project()); + existingIssue.setTitle(tracker.getTitle()); + existingIssue.setSelect_status(tracker.getSelect_status()); + existingIssue.setSelect_priority(tracker.getSelect_priority()); + existingIssue.setSteps(tracker.getSteps()); + existingIssue.setDescription(tracker.getDescription()); + existingIssue.setFileName(tracker.getFileName()); + existingIssue.setFileType(tracker.getFileType()); + existingIssue.setData(tracker.getData()); + + return bugTrackerRepository.save(existingIssue); + } + + + + + + public void deleteIssue(Long id) { + bugTrackerRepository.deleteById(id); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTracker.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTracker.java new file mode 100644 index 0000000..ac9c517 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTracker.java @@ -0,0 +1,45 @@ +"package com.realnet.bugTracker.Entity;" + "\r\n" + +"" + "\r\n" + +"import javax.persistence.Entity;" + "\r\n" + +"import javax.persistence.GeneratedValue;" + "\r\n" + +"import javax.persistence.GenerationType;" + "\r\n" + +"import javax.persistence.Id;" + "\r\n" + +"import javax.persistence.Lob;" + "\r\n" + +"import javax.persistence.Table;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.incident.entity.WhooColomns;" + "\r\n" + +"" + "\r\n" + +"import lombok.Data;" + "\r\n" + +"" + "\r\n" + +"@Entity" + "\r\n" + +"@Data" + "\r\n" + +"" + "\r\n" + +"public class BugTracker extends WhooColomns {" + "\r\n" + +" " + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String type;" + "\r\n" + +" private String key_no;" + "\r\n" + +" private String summary;" + "\r\n" + +" private String assignee;" + "\r\n" + +" private String reporter;" + "\r\n" + +" " + "\r\n" + +" private String select_project;" + "\r\n" + +" private String title;" + "\r\n" + +" private String select_status;" + "\r\n" + +" private String select_priority;" + "\r\n" + +" private String steps;" + "\r\n" + +" private String description;" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" private String fileName;" + "\r\n" + +" " + "\r\n" + +" private String fileType;" + "\r\n" + +" " + "\r\n" + +" @Lob" + "\r\n" + +" private byte[] data;" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerController.java new file mode 100644 index 0000000..ea815e5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerController.java @@ -0,0 +1,111 @@ +"package com.realnet.bugTracker.Controller;" + "\r\n" + +"" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.http.HttpStatus;" + "\r\n" + +"import org.springframework.http.ResponseEntity;" + "\r\n" + +"import org.springframework.web.bind.annotation.DeleteMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.GetMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PathVariable;" + "\r\n" + +"import org.springframework.web.bind.annotation.PostMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PutMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestBody;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestParam;" + "\r\n" + +"import org.springframework.web.bind.annotation.RestController;" + "\r\n" + +"import org.springframework.web.multipart.MultipartFile;" + "\r\n" + +"" + "\r\n" + +"import com.fasterxml.jackson.core.JsonProcessingException;" + "\r\n" + +"import com.fasterxml.jackson.databind.JsonMappingException;" + "\r\n" + +"import com.fasterxml.jackson.databind.ObjectMapper;" + "\r\n" + +"import com.realnet.activity.service.ActivityService;" + "\r\n" + +"import com.realnet.bugTracker.Entity.BugTracker;" + "\r\n" + +"import com.realnet.bugTracker.Service.BugTrackerService;" + "\r\n" + +"import com.realnet.fileupload.helper.Fileuploadhelper;" + "\r\n" + +"import com.realnet.incident.entity.IncidentEntity;" + "\r\n" + +"" + "\r\n" + +"@RestController" + "\r\n" + +"@RequestMapping(\"/sureserve/bugtracker\")" + "\r\n" + +"public class BugTrackerController {" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private BugTrackerService bugTrackerService;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Fileuploadhelper fileuploadhelper;" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/bugtracker\")" + "\r\n" + +" public ResponseEntity createIssue(@RequestParam String data, @RequestParam MultipartFile file)" + "\r\n" + +" throws JsonMappingException, JsonProcessingException {" + "\r\n" + +"" + "\r\n" + +" // Deserialize the \"data\" parameter to a BugTracker object using Jackson's" + "\r\n" + +" // ObjectMapper" + "\r\n" + +" BugTracker bugTracker = new ObjectMapper().readValue(data, BugTracker.class);" + "\r\n" + +"" + "\r\n" + +" // Check if a file was uploaded" + "\r\n" + +" if (!file.isEmpty()) {" + "\r\n" + +" System.out.println(file.getOriginalFilename());" + "\r\n" + +"" + "\r\n" + +" // Use a file upload helper method to upload the file and return a boolean" + "\r\n" + +" // indicating success or failure" + "\r\n" + +" boolean isUploaded = fileuploadhelper.uploadFile(file);" + "\r\n" + +"" + "\r\n" + +" if (isUploaded) {" + "\r\n" + +" System.out.println(\"File uploaded successfully\");" + "\r\n" + +" bugTracker.setFileName(file.getOriginalFilename());" + "\r\n" + +" }" + "\r\n" + +" } else {" + "\r\n" + +" bugTracker.setFileName(\"No file\");" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // Pass the updated BugTracker object to the bugTrackerService's createIssue" + "\r\n" + +" // method to create a new BugTracker object" + "\r\n" + +" BugTracker createdTracker = bugTrackerService.createIssue(bugTracker);" + "\r\n" + +"" + "\r\n" + +" return ResponseEntity.ok(\"addded successfully\");" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/bugtracker/{id}\")" + "\r\n" + +" public ResponseEntity getIssueById(@PathVariable Long id) {" + "\r\n" + +" BugTracker tracker = bugTrackerService.getIssueById(id);" + "\r\n" + +" return ResponseEntity.ok(tracker);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/bugtracker\")" + "\r\n" + +" public ResponseEntity> getAllIssues() {" + "\r\n" + +" List allIssues = bugTrackerService.getAllIssues();" + "\r\n" + +" return ResponseEntity.ok(allIssues);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @PutMapping(\"/bugtracker/{id}\")" + "\r\n" + +" public ResponseEntity updateIssue(@RequestParam String data, @PathVariable Long id," + "\r\n" + +" @RequestParam MultipartFile file) throws Exception {" + "\r\n" + +"" + "\r\n" + +" BugTracker bugTracker = new ObjectMapper().readValue(data, BugTracker.class);" + "\r\n" + +"" + "\r\n" + +" if (!file.isEmpty()) {" + "\r\n" + +" System.out.println(file.getOriginalFilename());" + "\r\n" + +" boolean f = fileuploadhelper.uploadFile(file);" + "\r\n" + +"" + "\r\n" + +" if (f) {" + "\r\n" + +" System.out.println(\"file uploaded successfully\");" + "\r\n" + +" bugTracker.setFileName(file.getOriginalFilename());" + "\r\n" + +" }" + "\r\n" + +" } else {" + "\r\n" + +" bugTracker.setFileName(\"No file\");" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // Update the bug tracker with the new incident entity" + "\r\n" + +" bugTrackerService.updateIssue(id, bugTracker);" + "\r\n" + +"" + "\r\n" + +" return ResponseEntity.ok(\"Update successfully\");" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @DeleteMapping(\"/bugtracker/{id}\")" + "\r\n" + +" public ResponseEntity deleteIssue(@PathVariable Long id) {" + "\r\n" + +" bugTrackerService.deleteIssue(id);" + "\r\n" + +" String message = \"Issue with ID \" + id + \" has been deleted\";" + "\r\n" + +" return ResponseEntity.ok(message);" + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerRepository.java new file mode 100644 index 0000000..99fb5d1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerRepository.java @@ -0,0 +1,11 @@ +"package com.realnet.bugTracker.Repository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.bugTracker.Entity.BugTracker;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface BugTrackerRepository extends JpaRepository {" + "\r\n" + +" " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerService.java new file mode 100644 index 0000000..748ca44 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/bugTracker (2)_1676960539798/static_code/SE_BugTrackerService.java @@ -0,0 +1,59 @@ +"package com.realnet.bugTracker.Service;" + "\r\n" + +"" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import javax.persistence.EntityNotFoundException;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.bugTracker.Entity.BugTracker;" + "\r\n" + +"import com.realnet.bugTracker.Repository.BugTrackerRepository;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +"public class BugTrackerService {" + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private BugTrackerRepository bugTrackerRepository;" + "\r\n" + +"" + "\r\n" + +" public BugTracker createIssue(BugTracker tracker) {" + "\r\n" + +" return bugTrackerRepository.save(tracker);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public BugTracker getIssueById(Long id) {" + "\r\n" + +" return bugTrackerRepository.findById(id).orElseThrow(() -> new EntityNotFoundException(\"Issue not found\"));" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public List getAllIssues() {" + "\r\n" + +" return bugTrackerRepository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public BugTracker updateIssue(Long id, BugTracker tracker) {" + "\r\n" + +" BugTracker existingIssue = getIssueById(id);" + "\r\n" + +" existingIssue.setType(tracker.getType());" + "\r\n" + +" existingIssue.setKey_no(tracker.getKey_no());" + "\r\n" + +" existingIssue.setSummary(tracker.getSummary());" + "\r\n" + +" existingIssue.setAssignee(tracker.getAssignee());" + "\r\n" + +" existingIssue.setReporter(tracker.getReporter());" + "\r\n" + +" existingIssue.setSelect_project(tracker.getSelect_project());" + "\r\n" + +" existingIssue.setTitle(tracker.getTitle());" + "\r\n" + +" existingIssue.setSelect_status(tracker.getSelect_status());" + "\r\n" + +" existingIssue.setSelect_priority(tracker.getSelect_priority());" + "\r\n" + +" existingIssue.setSteps(tracker.getSteps());" + "\r\n" + +" existingIssue.setDescription(tracker.getDescription());" + "\r\n" + +" existingIssue.setFileName(tracker.getFileName());" + "\r\n" + +" existingIssue.setFileType(tracker.getFileType());" + "\r\n" + +" existingIssue.setData(tracker.getData());" + "\r\n" + +"" + "\r\n" + +" return bugTrackerRepository.save(existingIssue);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" public void deleteIssue(Long id) {" + "\r\n" + +" bugTrackerRepository.deleteById(id);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsController.java new file mode 100644 index 0000000..69fb3d6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsController.java @@ -0,0 +1,103 @@ +package com.realnet.entityevents.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import com.realnet.entityevents.Entity.Entity_events_t; +import com.realnet.entityevents.Service.Entity_eventsService; + + +@RestController +@RequestMapping("/entityevents") +public class Entity_eventsController { + + @Autowired + private Entity_eventsService entity_eventsService; + + // Get all entity events + @GetMapping("/entityevents") + public ResponseEntity> getAllEntityEvents() { + List entityEvents = entity_eventsService.getAllEntityEvents(); + return new ResponseEntity>(entityEvents, HttpStatus.OK); + } + + // Get entity event by ID + @GetMapping("/entityevents/{id}") + public ResponseEntity getEntityEventById(@PathVariable Long id) { + Entity_events_t entityEvent = entity_eventsService.getEntityEventById(id); + if (entityEvent != null) { + return new ResponseEntity(entityEvent, HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + } + + // Create entity event + @PostMapping("/entityevents") + public ResponseEntity createEntityEvent(@RequestBody Entity_events_t entityEvent) { + Entity_events_t createdEntityEvent = entity_eventsService.createEntityEvent(entityEvent); + return new ResponseEntity(createdEntityEvent, HttpStatus.CREATED); + } + + // Update entity event + @PutMapping("/entityevents/{id}") + public ResponseEntity updateEntityEvent(@PathVariable Long id, @RequestBody Entity_events_t entityEvent) { + Entity_events_t updatedEntityEvent = entity_eventsService.updateEntityEvent(id, entityEvent); + if (updatedEntityEvent != null) { + return new ResponseEntity(updatedEntityEvent, HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + } + + + // Delete entity event + @DeleteMapping("/entityevents/{id}") + public ResponseEntity deleteEntityEvent(@PathVariable Long id) { + entity_eventsService.deleteEntityEvent(id); + String message = "ID " + id + " has been deleted"; + return ResponseEntity.ok(message); + } + + + + +// @GetMapping("/entityevents/name-type") +// public ResponseEntity getEntityEventByName(@RequestParam("entity_name") String entity_name, @RequestParam("event_type") String event_type) { +// boolean exists = entity_eventsService.existsByEntityNameAndEventType(entity_name, event_type); +// return new ResponseEntity(exists, HttpStatus.OK); +// +// } + + + + + + + + + + + + + + + + + + + + + + + + + + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsRepository.java new file mode 100644 index 0000000..bd572d5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsRepository.java @@ -0,0 +1,23 @@ +package com.realnet.entityevents.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.entityevents.Entity.Entity_events_t; + +@Repository +public interface Entity_eventsRepository extends JpaRepository { + + @Query(value = "SELECT * FROM realnet_CNSBE.entity_events_t WHERE entity_name = :entityName", nativeQuery = true) + List findByEntityName(@Param("entityName") String entityName); + + + + + +} + diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsService.java new file mode 100644 index 0000000..ed11971 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_eventsService.java @@ -0,0 +1,83 @@ +package com.realnet.entityevents.Service; + + +import java.util.HashSet; +import java.util.List; + +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.entityevents.Entity.Entity_events_t; +import com.realnet.entityevents.Repository.Entity_eventsRepository; + + +@Service +public class Entity_eventsService { + + @Autowired + private Entity_eventsRepository entity_eventsRepository; + + public List getAllEntityEvents() { + return entity_eventsRepository.findAll(); + } + + public Entity_events_t getEntityEventById(Long id) { + return entity_eventsRepository.findById(id).orElse(null); + } + + public Entity_events_t createEntityEvent(Entity_events_t entityEvent) { + return entity_eventsRepository.save(entityEvent); + } + + public Entity_events_t updateEntityEvent(Long id, Entity_events_t entityEvent) { + Entity_events_t existingEntityEvent = entity_eventsRepository.findById(id).orElse(null); + if (existingEntityEvent != null) { + existingEntityEvent.setEntity_name(entityEvent.getEntity_name()); + existingEntityEvent.setEvent_type(entityEvent.getEvent_type()); + existingEntityEvent.set_active(entityEvent.is_active()); + return entity_eventsRepository.save(existingEntityEvent); + } + return null; + } + + + public void deleteEntityEvent(Long id) { + entity_eventsRepository.deleteById(id); + } + + + + + public boolean isEntityAllowed(String entity_name) { + + System.out.println("isEntityAllowed called " + entity_name); + + if (entity_name == null || entity_name.isEmpty()) { + return true; // Allow unspecified entities + } + + List entityEventsList = entity_eventsRepository.findByEntityName(entity_name); + if (entityEventsList == null || entityEventsList.isEmpty()) { + return false; // Disallow entities not found in entity events + } + + return true; + } + + + + + + + + + + +// public boolean existsByEntityNameAndEventType(String entity_name, String event_type) { +// return entity_eventsRepository.existsByEntityNameAndEventType(entity_name, event_type); +// } + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_events_t.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_events_t.java new file mode 100644 index 0000000..9992c4f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/Entity_events_t.java @@ -0,0 +1,25 @@ +package com.realnet.entityevents.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +import com.realnet.fnd.entity.Rn_Who_AccId_Column; + +@Entity +@Data +public class Entity_events_t extends Rn_Who_AccId_Column{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String entity_name; + + private String event_type; + + private boolean is_active = true; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsController.java new file mode 100644 index 0000000..eff6753 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsController.java @@ -0,0 +1,103 @@ +"package com.realnet.entityevents.Controller;" + "\r\n" + +"" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.http.HttpStatus;" + "\r\n" + +"import org.springframework.http.ResponseEntity;" + "\r\n" + +"import org.springframework.web.bind.annotation.*;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.entityevents.Entity.Entity_events_t;" + "\r\n" + +"import com.realnet.entityevents.Service.Entity_eventsService;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"@RestController" + "\r\n" + +"@RequestMapping(\"/entityevents\")" + "\r\n" + +"public class Entity_eventsController {" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Entity_eventsService entity_eventsService;" + "\r\n" + +"" + "\r\n" + +" // Get all entity events" + "\r\n" + +" @GetMapping(\"/entityevents\")" + "\r\n" + +" public ResponseEntity> getAllEntityEvents() {" + "\r\n" + +" List entityEvents = entity_eventsService.getAllEntityEvents();" + "\r\n" + +" return new ResponseEntity>(entityEvents, HttpStatus.OK);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // Get entity event by ID" + "\r\n" + +" @GetMapping(\"/entityevents/{id}\")" + "\r\n" + +" public ResponseEntity getEntityEventById(@PathVariable Long id) {" + "\r\n" + +" Entity_events_t entityEvent = entity_eventsService.getEntityEventById(id);" + "\r\n" + +" if (entityEvent != null) {" + "\r\n" + +" return new ResponseEntity(entityEvent, HttpStatus.OK);" + "\r\n" + +" } else {" + "\r\n" + +" return new ResponseEntity(HttpStatus.NOT_FOUND);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // Create entity event" + "\r\n" + +" @PostMapping(\"/entityevents\")" + "\r\n" + +" public ResponseEntity createEntityEvent(@RequestBody Entity_events_t entityEvent) {" + "\r\n" + +" Entity_events_t createdEntityEvent = entity_eventsService.createEntityEvent(entityEvent);" + "\r\n" + +" return new ResponseEntity(createdEntityEvent, HttpStatus.CREATED);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // Update entity event" + "\r\n" + +" @PutMapping(\"/entityevents/{id}\")" + "\r\n" + +" public ResponseEntity updateEntityEvent(@PathVariable Long id, @RequestBody Entity_events_t entityEvent) {" + "\r\n" + +" Entity_events_t updatedEntityEvent = entity_eventsService.updateEntityEvent(id, entityEvent);" + "\r\n" + +" if (updatedEntityEvent != null) {" + "\r\n" + +" return new ResponseEntity(updatedEntityEvent, HttpStatus.OK);" + "\r\n" + +" } else {" + "\r\n" + +" return new ResponseEntity(HttpStatus.NOT_FOUND);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" // Delete entity event" + "\r\n" + +" @DeleteMapping(\"/entityevents/{id}\")" + "\r\n" + +" public ResponseEntity deleteEntityEvent(@PathVariable Long id) {" + "\r\n" + +" entity_eventsService.deleteEntityEvent(id);" + "\r\n" + +" String message = \"ID \" + id + \" has been deleted\";" + "\r\n" + +" return ResponseEntity.ok(message);" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"// @GetMapping(\"/entityevents/name-type\")" + "\r\n" + +"// public ResponseEntity getEntityEventByName(@RequestParam(\"entity_name\") String entity_name, @RequestParam(\"event_type\") String event_type) {" + "\r\n" + +"// boolean exists = entity_eventsService.existsByEntityNameAndEventType(entity_name, event_type);" + "\r\n" + +"// return new ResponseEntity(exists, HttpStatus.OK);" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsRepository.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsRepository.java new file mode 100644 index 0000000..ada4dee --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsRepository.java @@ -0,0 +1,23 @@ +"package com.realnet.entityevents.Repository;" + "\r\n" + +"" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"import org.springframework.data.jpa.repository.Query;" + "\r\n" + +"import org.springframework.data.repository.query.Param;" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.entityevents.Entity.Entity_events_t;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface Entity_eventsRepository extends JpaRepository {" + "\r\n" + +"" + "\r\n" + +" @Query(value = \"SELECT * FROM realnet_CNSBE.entity_events_t WHERE entity_name = :entityName\", nativeQuery = true)" + "\r\n" + +" List findByEntityName(@Param(\"entityName\") String entityName);" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"}" + "\r\n" + +"" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsService.java new file mode 100644 index 0000000..569c6c6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_eventsService.java @@ -0,0 +1,79 @@ +"package com.realnet.entityevents.Service;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"import java.util.HashSet;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import java.util.Set;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.stereotype.Service;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.entityevents.Entity.Entity_events_t;" + "\r\n" + +"import com.realnet.entityevents.Repository.Entity_eventsRepository;" + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +"public class Entity_eventsService {" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Entity_eventsRepository entity_eventsRepository;" + "\r\n" + +"" + "\r\n" + +" public List getAllEntityEvents() {" + "\r\n" + +" return entity_eventsRepository.findAll();" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public Entity_events_t getEntityEventById(Long id) {" + "\r\n" + +" return entity_eventsRepository.findById(id).orElse(null);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public Entity_events_t createEntityEvent(Entity_events_t entityEvent) {" + "\r\n" + +" return entity_eventsRepository.save(entityEvent);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public Entity_events_t updateEntityEvent(Long id, Entity_events_t entityEvent) {" + "\r\n" + +" Entity_events_t existingEntityEvent = entity_eventsRepository.findById(id).orElse(null);" + "\r\n" + +" if (existingEntityEvent != null) {" + "\r\n" + +" existingEntityEvent.setEntity_name(entityEvent.getEntity_name());" + "\r\n" + +" existingEntityEvent.setEvent_type(entityEvent.getEvent_type());" + "\r\n" + +" existingEntityEvent.set_active(entityEvent.is_active());" + "\r\n" + +" return entity_eventsRepository.save(existingEntityEvent);" + "\r\n" + +" }" + "\r\n" + +" return null;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" public void deleteEntityEvent(Long id) {" + "\r\n" + +" entity_eventsRepository.deleteById(id);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" public boolean isEntityAllowed(String entity_name) {" + "\r\n" + +"" + "\r\n" + +" System.out.println(\"isEntityAllowed called \" + entity_name);" + "\r\n" + +"" + "\r\n" + +" if (entity_name == null || entity_name.isEmpty()) {" + "\r\n" + +" return true; // Allow unspecified entities" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" List entityEventsList = entity_eventsRepository.findByEntityName(entity_name);" + "\r\n" + +" if (entityEventsList == null || entityEventsList.isEmpty()) {" + "\r\n" + +" return false; // Disallow entities not found in entity events" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" return true;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +serviceloop1 +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_events_t.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_events_t.java new file mode 100644 index 0000000..929a766 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/entityevents_1677744672333/static_code/SE_Entity_events_t.java @@ -0,0 +1,25 @@ +"package com.realnet.entityevents.Entity;" + "\r\n" + +"" + "\r\n" + +"import javax.persistence.Entity;" + "\r\n" + +"import javax.persistence.GeneratedValue;" + "\r\n" + +"import javax.persistence.GenerationType;" + "\r\n" + +"import javax.persistence.Id;" + "\r\n" + +"" + "\r\n" + +"import lombok.Data;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.fnd.entity.Rn_Who_AccId_Column;" + "\r\n" + +"" + "\r\n" + +"@Entity" + "\r\n" + +"@Data" + "\r\n" + +"public class Entity_events_t extends Rn_Who_AccId_Column{" + "\r\n" + +"" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +"" + "\r\n" + +" private String entity_name;" + "\r\n" + +"" + "\r\n" + +" private String event_type;" + "\r\n" + +"" + "\r\n" + +" private boolean is_active = true;" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Controller.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Controller.java new file mode 100644 index 0000000..28b0b47 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Controller.java @@ -0,0 +1,1071 @@ +//package com.realnet.excel.controller; +package com.realnet.template.controller; + +import java.io.BufferedReader; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.InputStreamResource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.Sr_Contact_type.Entity.Sr_Contact_type_t; +import com.realnet.Sr_Contact_type.Repository.Sr_Contact_type_Repository; +import com.realnet.Sr_State.Entity.Sr_State_t; +import com.realnet.Sr_State.Repository.Sr_State_Repository; +import com.realnet.Sr_category2.Entity.Sr_category2_t; +import com.realnet.Sr_category2.Repository.Sr_category2_Repository; +import com.realnet.Sr_customer.Entity.Sr_customer_t; +import com.realnet.Sr_customer.Repository.Sr_customer_Repository; +import com.realnet.Sr_handler.Entity.Sr_handler_t; +import com.realnet.Sr_handler.Repository.Sr_handler_Repository; +import com.realnet.Sr_impact2.Entity.Sr_impact2_t; +import com.realnet.Sr_impact2.Repository.Sr_impact2_Repository; +import com.realnet.Sr_priority2.Entity.Sr_priority2_t; +import com.realnet.Sr_priority2.Repository.Sr_priority2_Repository; +import com.realnet.Sr_urgency.Entity.Sr_urgency_t; +import com.realnet.Sr_urgency.Repository.Sr_urgency_Repository; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.FileUploadService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("api/template") +public class Controller { + @Autowired + private TemplatedataRepo temprepo; + + @Autowired + private Sr_priority2_Repository priorityrepo; + + @Autowired + private Sr_impact2_Repository impactrepo; + + @Autowired + private Sr_urgency_Repository urgencyrepo; + + @Autowired + private Sr_State_Repository staterepo; + + @Autowired + private Sr_Contact_type_Repository contactrepo; + + @Autowired + private Sr_customer_Repository customerepo; + + @Autowired + private Sr_category2_Repository categoryrepo; + + @Autowired + private Sr_handler_Repository handlerepo; + @Autowired + FileUploadService fileupload; + @Autowired + private AppUserServiceImpl userService; + + @GetMapping("/demo/download/{file_type}") + + public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { + + if (file_type.equalsIgnoreCase("priority")) { + + String filename = "Sr_priority2_t" + ".xlsx"; + String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("impact")) { + + String filename = "Sr_impact2_t" + ".xlsx"; + String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("urgency")) { + + String filename = "Sr_urgency_t" + ".xlsx"; + String[] header = { "Urgency Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("category")) { + + String filename = "Sr_category2_t" + ".xlsx"; + String[] header = { "Category Name", "Customer Id", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("state")) { + + String filename = "Sr_State_t" + ".xlsx"; + String[] header = { "State Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("contact_type")) { + + String filename = "Sr_Contact_type_t" + ".xlsx"; + String[] header = { "Contact Type Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("customer")) { + + String filename = "Sr_customer_t" + ".xlsx"; + String[] header = { "Customer Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("handler")) { + + String filename = "Sr_handler_t" + ".xlsx"; + String[] header = { "User Id", "Role Id", "Is Active", "Effective Start Date", "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } + + return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); + + } + + public static ByteArrayInputStream demoTemplate(String[] HEADERs, String file_type) throws IOException { + String SHEET = file_type; + Workbook workbook = new XSSFWorkbook(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Sheet sheet = workbook.createSheet(SHEET); + Row headerRow = sheet.createRow(0); + for (int col = 0; col < HEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(HEADERs[col]); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + + } + + @PostMapping("/save/{filetype}") + public ResponseEntity uploadFile(@RequestParam MultipartFile file, @PathVariable String filetype) + throws IOException, ParseException { + BufferedReader br; + InputStream is = file.getInputStream(); + br = new BufferedReader(new InputStreamReader(is)); + String file_name = file.getOriginalFilename(); + AppUser loggedInUser = userService.getLoggedInUser(); + + if (filetype.equalsIgnoreCase("priority")) { + + if (file_name.contains("Sr_priority2_t")) { + + String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ArrayList prioritylist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>( + "priority file Should have \"" + header + " \"in the header in excel file", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + Date date = row.getCell(3).getDateCellValue(); + Date date2 = row.getCell(4).getDateCellValue(); + + Sr_priority2_t priority = new Sr_priority2_t(); + priority.setPriority_name(dataFormatter.formatCellValue(row.getCell(0))); + priority.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + priority.setActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + priority.setEffective_start_date(date); + priority.setEffective_end_date(date2); + + prioritylist.add(priority); + } + + } + priorityrepo.saveAll(prioritylist); + workbook.close(); + +// + + return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); + } + return new ResponseEntity<>("File name should contain Sr_priority2_t", HttpStatus.BAD_REQUEST); + + } + + else if (filetype.contains("impact")) { + + if (file_name.contains("Sr_impact2_t")) { + + String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + + ArrayList impactlist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>("priority file header is not in correct format ", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + + Date date = row.getCell(3).getDateCellValue(); + Date date2 = row.getCell(4).getDateCellValue(); + + Sr_impact2_t impact = new Sr_impact2_t(); + impact.setImpact_name(dataFormatter.formatCellValue(row.getCell(0))); + impact.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + impact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + impact.setEffective_start_date(date); + impact.setEffective_end_date(date2); + + impactlist.add(impact); + } + + } + impactrepo.saveAll(impactlist); + System.out.println(impactlist); + + workbook.close(); + + return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); + } + return new ResponseEntity<>("File name should contain Sr_impact2_t", HttpStatus.BAD_REQUEST); + + } + + else if (filetype.contains("urgency")) { + + if (file_name.contains("Sr_urgency_t")) { + + String[] header = { "Urgency Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List li = new ArrayList(); + li.add("Impact Name"); + li.add("Description"); + li.add("Is Active"); + li.add("Effective Start Date"); + li.add("Effective End date"); + + ArrayList impactlist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>( + "priority file Should have \"" + li + " \"in the header in excel file", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + Date date = row.getCell(3).getDateCellValue(); + Date date2 = row.getCell(4).getDateCellValue(); + + Sr_urgency_t urgency = new Sr_urgency_t(); + urgency.setUrgency_name(dataFormatter.formatCellValue(row.getCell(0))); + urgency.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + urgency.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + urgency.setEffective_start_date(date); + urgency.setEffective_end_date(date2); + + impactlist.add(urgency); + } + + } + urgencyrepo.saveAll(impactlist); + System.out.println(impactlist); + + workbook.close(); + + return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); + } + return new ResponseEntity<>("File name should contain sr_incident_t", HttpStatus.BAD_REQUEST); + + } else if (filetype.equalsIgnoreCase("category")) { + + String[] header = { "Category Name", "Customer Id", "Is Active", "Effective Start Date", + "Effective End date" }; + +// if (file_name.contains("Sr_impact2_t")) { +// +// ArrayList impactlist = new ArrayList(); +// +// Workbook workbook = WorkbookFactory.create(is); +// +//// Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int cols = sheet.getRow(0).getLastCellNum(); +// +// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); +// +// for (Row row : sheet) { +// +// if (row.getRowNum() == 0) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// +// if (!header[i].equalsIgnoreCase(value)) { +// +// return new ResponseEntity<>("priority file header is not in correct format ", +// HttpStatus.BAD_REQUEST); +// } +// } +// +// } +// +// if (row.getRowNum() != 0) { +// String value = dataFormatter.formatCellValue(row.getCell(4)); +// String value2 = dataFormatter.formatCellValue(row.getCell(5)); +// Date date = new SimpleDateFormat("dd-MM-yyyy").parse(value); +// Date date2 = new SimpleDateFormat("dd-MM-yyyy").parse(value2); +// +// Sr_impact2_t impact = new Sr_impact2_t(); +// impact.setImpact_name(file_name); +// impact.setDescription(dataFormatter.formatCellValue(row.getCell(2))); +// impact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(3)))); +// +//// priority.setEffective_start_date(date); +//// priority.setEffective_end_date(date2); +// +// impactlist.add(impact); +// } +// +// } +// impactrepo.saveAll(impactlist); +// System.out.println(impactlist); +// +// workbook.close(); +// +// } + + } else if (filetype.equalsIgnoreCase("state")) { + + String[] header = { "State Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + + if (file_name.contains("Sr_State_t")) { + + ArrayList statelist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>("priority file header is not in correct format ", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + String value = dataFormatter.formatCellValue(row.getCell(3)); + String value2 = dataFormatter.formatCellValue(row.getCell(4)); + + Sr_State_t state = new Sr_State_t(); + state.setState_name(dataFormatter.formatCellValue(row.getCell(0))); + state.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + state.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + state.setEffective_end_date(value2); + state.setEffective_start_date(value); + + statelist.add(state); + } + + } + staterepo.saveAll(statelist); + + workbook.close(); + + } + + } else if (filetype.equalsIgnoreCase("contact_type")) { + + String[] header = { "Contact Type Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + + if (file_name.contains("Sr_Contact_type_t")) { + + ArrayList statelist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>("priority file header is not in correct format ", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + Date date = row.getCell(3).getDateCellValue(); + Date date2 = row.getCell(4).getDateCellValue(); + + Sr_Contact_type_t contact = new Sr_Contact_type_t(); + contact.setCon_type_name(dataFormatter.formatCellValue(row.getCell(0))); + contact.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + contact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + contact.setEffective_start_date(date); + contact.setEffective_end_date(date2); + + statelist.add(contact); + } + + } + contactrepo.saveAll(statelist); + + workbook.close(); + + } + + } else if (filetype.equalsIgnoreCase("customer")) { + + String[] header = { "Customer Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + + if (file_name.contains("Sr_customer_t")) { + + ArrayList customerlist = new ArrayList(); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + + fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); + + for (Row row : sheet) { + + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + + if (!header[i].equalsIgnoreCase(value)) { + + return new ResponseEntity<>("priority file header is not in correct format ", + HttpStatus.BAD_REQUEST); + } + } + + } + + if (row.getRowNum() != 0) { + Date date = row.getCell(3).getDateCellValue(); + Date date2 = row.getCell(4).getDateCellValue(); + + Sr_customer_t customer = new Sr_customer_t(); + customer.setCustomer_name(dataFormatter.formatCellValue(row.getCell(0))); + customer.setDescription(dataFormatter.formatCellValue(row.getCell(1))); + customer.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); + + customer.setEffective_start_date(date); + customer.setEffective_end_date(date2); + + customerlist.add(customer); + } + + } + customerepo.saveAll(customerlist); + + workbook.close(); + + } + + } else if (filetype.equalsIgnoreCase("handler")) { + + String[] header = { "User Id", "Role Id", "Is Active", "Effective Start Date", "Effective End date" }; + +// if (file_name.contains("Sr_State_t")) { +// +// ArrayList statelist = new ArrayList(); +// +// Workbook workbook = WorkbookFactory.create(is); +// +//// Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int cols = sheet.getRow(0).getLastCellNum(); +// +// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); +// +// for (Row row : sheet) { +// +// if (row.getRowNum() == 0) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// +// if (!header[i].equalsIgnoreCase(value)) { +// +// return new ResponseEntity<>("priority file header is not in correct format ", +// HttpStatus.BAD_REQUEST); +// } +// } +// +// } +// +// if (row.getRowNum() != 0) { +// Date date = row.getCell(3).getDateCellValue(); +// Date date2 = row.getCell(4).getDateCellValue(); +// +// Sr_State_t state = new Sr_State_t(); +// state.setState_name(dataFormatter.formatCellValue(row.getCell(1))); +// state.setDescription(dataFormatter.formatCellValue(row.getCell(2))); +// state.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(3)))); +// +//// priority.setEffective_start_date(date); +//// priority.setEffective_end_date(date2); +// +// statelist.add(state); +// } +// +// } +// staterepo.saveAll(statelist); +// +// workbook.close(); +// +// } + + } + + return new ResponseEntity<>("Something Went Wrong please try again....!!!!! ", HttpStatus.BAD_REQUEST); + + } + +// Download template data in excel Files + + @GetMapping("/download/{file_type}") + + public ResponseEntity getFile(@PathVariable String file_type) throws IOException { + + if (file_type.equalsIgnoreCase("priority")) { + + String filename = "Sr_priority2_t" + ".xlsx"; + String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = priorityrepo.findAll(); + ByteArrayInputStream in = templateByte(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("impact")) { + + String filename = "Sr_impact2_t" + ".xlsx"; + String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = impactrepo.findAll(); + ByteArrayInputStream in = templateByte3(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("urgency")) { + + String filename = "Sr_urgency_t" + ".xlsx"; + String[] header = { "Urgency Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = urgencyrepo.findAll(); + ByteArrayInputStream in = templateByte2(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("category")) { + + String filename = "Sr_category2_t" + ".xlsx"; + String[] header = { "Category Name", "Customer Id", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = categoryrepo.findAll(); + ByteArrayInputStream in = templateByte4(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("state")) { + + String filename = "Sr_State_t" + ".xlsx"; + String[] header = { "State Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = staterepo.findAll(); + ByteArrayInputStream in = templateByte6(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("contact_type")) { + + String filename = "Sr_Contact_type_t" + ".xlsx"; + String[] header = { "Contact Type Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = contactrepo.findAll(); + ByteArrayInputStream in = templateByte5(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("customer")) { + + String filename = "Sr_customer_t" + ".xlsx"; + String[] header = { "Customer Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + List findAll = customerepo.findAll(); + ByteArrayInputStream in = templateByte7(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("handler")) { + + String filename = "Sr_handler_t" + ".xlsx"; + String[] header = { "User Id", "Role Id", "Is Active", "Effective Start Date", "Effective End date" }; + List findAll = handlerepo.findAll(); + ByteArrayInputStream in = templateByte8(findAll, header); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } + + return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); + + } + + public static ByteArrayInputStream templateByte(List list, String[] hEADERs) { + + String SHEET = "priority"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_priority2_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getPriority_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte2(List list, String[] hEADERs) { + + String SHEET = "URGENCY"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_urgency_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getUrgency_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte3(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_impact2_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getImpact_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte4(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_category2_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getCustomer_id()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte5(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_Contact_type_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getCon_type_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte6(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_State_t p : list) { + Row row = sheet.createRow(rowIdx++); + row.createCell(0).setCellValue(p.getState_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte7(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_customer_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getCustomer_name()); + row.createCell(1).setCellValue(p.getDescription()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + public static ByteArrayInputStream templateByte8(List list, String[] hEADERs) { + + String SHEET = "Impact"; + + try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) { + Sheet sheet = workbook.createSheet(SHEET); + + // Header + Row headerRow = sheet.createRow(0); + + for (int col = 0; col < hEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(hEADERs[col]); + } + + int rowIdx = 1; + for (Sr_handler_t p : list) { + Row row = sheet.createRow(rowIdx++); + + row.createCell(0).setCellValue(p.getRole()); + row.createCell(1).setCellValue(p.getUser_name()); + row.createCell(2).setCellValue(p.isIsActive()); + row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date())); + row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date())); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + } catch (IOException e) { + throw new RuntimeException("fail to import data to Excel file: " + e.getMessage()); + } + + } + + @GetMapping("/getalltemplate") + public ResponseEntity getALlTemplate() { + return new ResponseEntity<>(temprepo.findAll(), HttpStatus.ACCEPTED); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryController.java new file mode 100644 index 0000000..7a56d31 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryController.java @@ -0,0 +1,75 @@ +package com.realnet.template.controller; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.template.repository.DynamicTempRepo; +import com.realnet.template.service.DatabaseQueryService; + +@RestController +@RequestMapping("/sureserve/template/databasequery") +public class DatabaseQueryController { + + @Autowired + private DatabaseQueryService rn_table_service; + @Autowired + private DynamicTempRepo tempRepo; + + @Value("${spring.datasource.username}") + private String userName; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.url}") + private String url; + +// get all databse list available + @GetMapping("/Table_list") + @ResponseBody + public List getdatabase() { + List list = tempRepo.getdatabaseList(); + return list; + } + + // get all table list available + @GetMapping("/Table_list_all") + @ResponseBody + public List gettableList() + +// @PathVariable String table_schema) + { +// List list = tempRepo.getListOftables(table_schema); + List list = rn_table_service.getListOftable("sureserve"); + return list; + } + + // get all column list available + @GetMapping("/Table_list/{table_schema}/{TABLE_NAME}") + @ResponseBody + public List getallcolumnlist(@PathVariable String table_schema, @PathVariable String TABLE_NAME) { + List list = rn_table_service.getColumnAliasList1(table_schema, TABLE_NAME); + return list; + } + + // create database + @GetMapping("/createdatabase/{table_schema}") + @ResponseBody + public List createdatabase(@PathVariable String table_schema) { + List list = rn_table_service.createdatabase(table_schema); + return list; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryService.java new file mode 100644 index 0000000..f7e284e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DatabaseQueryService.java @@ -0,0 +1,89 @@ +package com.realnet.template.service; + +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; + +@Service +public class DatabaseQueryService { + + @Value("${spring.datasource.username}") + private String userName; + + @Value("${spring.datasource.password}") + private String password; + + @Value("${spring.datasource.url}") + private String url; + + // get all column + + public List getColumnAliasList1(String table_schema, String tABLE_NAME) { + String query = "SELECT column_name FROM information_schema.columns WHERE TABLE_SCHEMA='" + table_schema + + "' and table_name = '" + tABLE_NAME + "' "; + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("column_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + // get all table list from databse + + public List getListOftable(String table_schema) { + String query = "SELECT table_name FROM information_schema.tables WHERE table_schema='" + table_schema + "' "; + + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); + + Statement stmt = con.createStatement()) { + ResultSet rs = stmt.executeQuery(query); + while (rs.next()) { + String coffeeName = rs.getString("table_name"); + list.add(coffeeName); + } + } catch (SQLException e) { + e.printStackTrace(); + } + return list; + } + + public List createdatabase(String table_schema){ + String query = "CREATE SCHEMA " + table_schema + ";"; + + List list = new ArrayList(); + try (Connection con = DriverManager.getConnection(url, userName, password); // conn.str + + Statement stmt = con.createStatement()) { + int rs = stmt.executeUpdate(query); + + list.add(rs); + + } catch (SQLException e) { + e.printStackTrace(); + } finally { + } + return list; + + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTempRepo.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTempRepo.java new file mode 100644 index 0000000..6abf71f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTempRepo.java @@ -0,0 +1,24 @@ +package com.realnet.template.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.template.entity.Dynamic_template; + +@Repository +public interface DynamicTempRepo extends JpaRepository{ + + + @Query(value= "select schema_name from information_schema.schemata",nativeQuery = true) + List getdatabaseList(); + + @Query(value= "SELECT table_name FROM information_schema.tables WHERE table_schema =?1",nativeQuery = true) + List getListOftables(String table_schema); + + @Query(value= "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE `TABLE_SCHEMA`=:'TABLE_SCHEMA' AND `TABLE_NAME`='TABLE_NAME';",nativeQuery = true) + List getallcolumnlist(@Param("TABLE_SCHEMA") Object table_schema, @Param("TABLE_NAME") Object tABLE_NAME); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTemplateController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTemplateController.java new file mode 100644 index 0000000..fc4c2cf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/DynamicTemplateController.java @@ -0,0 +1,250 @@ +package com.realnet.template.controller; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.apache.poi.ss.usermodel.DataFormatter; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.json.simple.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Notification.Notification.Entity.NotEntity; +import com.realnet.fileupload.helper.Fileuploadhelper; +import com.realnet.incident.entity.IncidentEntity; +import com.realnet.template.entity.Dynamic_template; +import com.realnet.template.repository.DynamicTempRepo; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("/sureserve/template/dynamic") +public class DynamicTemplateController { + + @Autowired + private DynamicTempRepo tempRepo; + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private Fileuploadhelper fileuploadhelper; + + @GetMapping("/templatetojson") + public ResponseEntity saveTemplateInJson(@RequestParam MultipartFile file) throws IOException { + + BufferedReader br; + InputStream is = file.getInputStream(); + br = new BufferedReader(new InputStreamReader(is)); + + Workbook workbook = WorkbookFactory.create(is); + +// Create a DataFormatter to format and get each cell's value as String + DataFormatter dataFormatter = new DataFormatter(); + + Sheet sheet = workbook.getSheetAt(0); + + // Getting number of columns in the Sheet + int cols = sheet.getRow(0).getLastCellNum(); + int firstRowNum = sheet.getFirstRowNum(); + + List keys = new ArrayList(); + List jsonList = new ArrayList(); + + for (Row row : sheet) { + JSONObject object = new JSONObject(); + if (row.getRowNum() == 0) { + for (int i = 0; i < cols; i++) { + String value = dataFormatter.formatCellValue(row.getCell(i)); + keys.add(value); + } + + } + + if (row.getRowNum() != 0) { + + for (int i = 0; i < cols; i++) { + String key = keys.get(i); + String value = dataFormatter.formatCellValue(row.getCell(i)); + + object.put(key, value); + + jsonList.add(object); + } + + } + + } + + workbook.close(); + + return new ResponseEntity<>(jsonList, HttpStatus.BAD_REQUEST); + } + + @GetMapping("/jsonkeychange") + + public ResponseEntity changeKeysOfJson(@RequestParam String newjson, @RequestParam String body) + throws IOException { + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(newjson); + JsonElement element2 = parser.parse(body); + JsonObject object2 = element.getAsJsonObject(); + JsonArray array = element2.getAsJsonArray(); + Iterator iterator = array.iterator(); + + List jsonList = new ArrayList(); + + Set keySet = object2.keySet(); + Iterator it = keySet.iterator(); + +// String key = it.next(); + while (iterator.hasNext()) { + + Map map = new HashMap(); + Object next = iterator.next(); + JsonElement parse = parser.parse(next.toString()); + JsonObject jsonObject = parse.getAsJsonObject(); + for (String k : keySet) { + String next2 = object2.get(k).getAsString(); + String value2 = jsonObject.get(k).getAsString(); + map.put(next2, value2); + } + + jsonList.add(map); + + } + + return new ResponseEntity<>(jsonList, HttpStatus.BAD_REQUEST); + } + + // create data with file upload + @PostMapping("/dynamic_temp") + public ResponseEntity addIssues(@RequestParam String data, @RequestParam MultipartFile file) + throws JsonMappingException, JsonProcessingException { + + AppUser user = userService.getLoggedInUser(); + String userId = user.getUsername(); + Dynamic_template dynamic_template; + + dynamic_template = new ObjectMapper().readValue(data, Dynamic_template.class); + + if (!file.isEmpty()) { +// for (MultipartFile e : attachmentFile) { + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadhelper.uploadFile(file); + + if (f) { + System.out.println("file uploaded successfully"); + dynamic_template.setFile_name(file.getOriginalFilename()); + + } + + } else { + dynamic_template.setFile_name("No file"); + + } + + dynamic_template.setUser_id(userId); + + Dynamic_template save = tempRepo.save(dynamic_template); + + if (save.getId() == 0) { + return new ResponseEntity("template Not Added", HttpStatus.BAD_REQUEST); + } else { + + return new ResponseEntity<>(save, HttpStatus.ACCEPTED); + } + } + + // get all + @GetMapping("/dynamic_temp") + public ResponseEntity getAll() { + + return new ResponseEntity<>(tempRepo.findAll(), HttpStatus.ACCEPTED); + + } + + // get by id + @GetMapping("/dynamic_temp/{id}") + public ResponseEntity getIssueById(@PathVariable Long id) { + + return new ResponseEntity<>(tempRepo.findById(id).get(), HttpStatus.ACCEPTED); + + } + + // delete by id + @DeleteMapping("/dynamic_temp/{id}") + public ResponseEntity deleteIssue(@PathVariable Long id) { + tempRepo.deleteById(id); + return new ResponseEntity("Success", HttpStatus.ACCEPTED); + + } + + // update by id + @PutMapping("/dynamic_temp/{id}") + public ResponseEntity updateIssue(@RequestParam String data, @PathVariable Long id, + @RequestParam MultipartFile file) throws Exception { + + Dynamic_template dynamic_template; + dynamic_template = new ObjectMapper().readValue(data, Dynamic_template.class); + + Dynamic_template template = tempRepo.findById(id).get(); + + if (!file.isEmpty()) { + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadhelper.uploadFile(file); + + if (f) { + System.out.println("file uploaded successfully"); + template.setFile_name(file.getOriginalFilename()); + + } + + } else { + template.setFile_name("No file"); + + } + + template.setEntity_name(dynamic_template.getEntity_name()); + template.setUser_id(dynamic_template.getUser_id()); + + Dynamic_template save = tempRepo.save(template); + return new ResponseEntity<>(save, HttpStatus.ACCEPTED); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Dynamic_template.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Dynamic_template.java new file mode 100644 index 0000000..dfa08de --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/Dynamic_template.java @@ -0,0 +1,25 @@ +package com.realnet.template.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class Dynamic_template { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String user_id; + private String file_name; + private String entity_name; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/ExcelDataService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/ExcelDataService.java new file mode 100644 index 0000000..4154748 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/ExcelDataService.java @@ -0,0 +1,96 @@ +//package com.realnet.excel.service; +// +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.List; +// +//import org.apache.poi.EncryptedDocumentException; +//import org.apache.poi.ss.usermodel.Cell; +//import org.apache.poi.ss.usermodel.DataFormatter; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.ss.usermodel.WorkbookFactory; +//import org.springframework.stereotype.Service; +// +//import com.realnet.excel.entity.ExcelFileUpload; +// +//@Service +//public class ExcelDataService { +// +// Workbook workbook; +// +// public List getExcelDataAsList() { +// +// List list = new ArrayList(); +// +// // Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// // Create the Workbook +//// try { +//// workbook = WorkbookFactory.create(); +//// } catch (EncryptedDocumentException | IOException e) { +//// e.printStackTrace(); +//// } +// +// // Retrieving the number of sheets in the Workbook +// System.out.println("-------Workbook has '" + workbook.getNumberOfSheets() + "' Sheets-----"); +// +// // Getting the Sheet at index zero +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int noOfColumns = sheet.getRow(0).getLastCellNum(); +// System.out.println("-------Sheet has '"+noOfColumns+"' columns------"); +// +// // Using for-each loop to iterate over the rows and columns +// for (Row row : sheet) { +// for (Cell cell : row) { +// String cellValue = dataFormatter.formatCellValue(cell); +// list.add(cellValue); +// } +// } +// +// // filling excel data and creating list as List +// List invList = createList(list, noOfColumns); +// +// // Closing the workbook +// try { +// workbook.close(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// return invList; +// } +// +// private List createList(List excelData, int noOfColumns) { +// +// ArrayList invList = new ArrayList(); +// +// int i = noOfColumns; +// do { +// ExcelFileUpload inv = new ExcelFileUpload(); +// +//// inv.setName(excelData.get(i)); +//// inv.setAmount(Double.valueOf(excelData.get(i + 1))); +//// inv.setNumber(excelData.get(i + 2)); +//// inv.setReceivedDate(excelData.get(i + 3)); +// +// invList.add(inv); +// i = i + (noOfColumns); +// +// } while (i < excelData.size()); +// return invList; +// } +// +//// public int saveExcelData(List invoices) { +//// invoices = repo.saveAll(invoices); +//// return invoices.size(); +//// } +// + + +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/FileUploadService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/FileUploadService.java new file mode 100644 index 0000000..f9500fa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/FileUploadService.java @@ -0,0 +1,79 @@ +package com.realnet.template.service; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; + +@Service +public class FileUploadService { + + + @Autowired + private TemplatedataRepo repo; + + + + public String uploadFile(MultipartFile file,Long user_id,String file_type) { + try { + +// String + String file_name= file.getOriginalFilename(); + String substring = file_name.substring(0,file_name.lastIndexOf(".")); + + String str = substring+System.currentTimeMillis(); + String location =System.getProperty("user.dir")+"/src/main/resources"; + + + String file_name2= file.getOriginalFilename(); + + + File staticdir2 = new File(location+"/incomingfile"); + if(!staticdir2.exists()) { + staticdir2.mkdir(); + } + Path copyLocation2 = Paths + .get(staticdir2 + File.separator + StringUtils.cleanPath(file_name2)); + + Files.copy(file.getInputStream(), copyLocation2, StandardCopyOption.REPLACE_EXISTING); + + + File staticdir = new File(location+"/processingfile"); + if(!staticdir.exists()) { + staticdir.mkdir(); + } + Path copyLocation = Paths + .get(staticdir + File.separator + StringUtils.cleanPath(str+".xlsx")); + + Files.copy(file.getInputStream(), copyLocation, StandardCopyOption.REPLACE_EXISTING); + + + TemplateFileUpload exceldata= new TemplateFileUpload(); + exceldata.setFile_location(location); + + exceldata.setFile_name(file.getOriginalFilename()); + exceldata.setFile_changed_name(str); + exceldata.setFile_type(file_type); + exceldata.setUser_id(user_id); + repo.save(exceldata); + + System.out.println("-----------------------saving data----------------"); + return location; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Could not store file " + file.getOriginalFilename() + + ". Please try again!"); + } + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplateFileUpload.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplateFileUpload.java new file mode 100644 index 0000000..60bc508 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplateFileUpload.java @@ -0,0 +1,27 @@ +package com.realnet.template.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class TemplateFileUpload { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long user_id; + private String file_name; + private String file_changed_name; + private String file_location; + private String file_type; + private Integer status; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplatedataRepo.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplatedataRepo.java new file mode 100644 index 0000000..190abf6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/TemplatedataRepo.java @@ -0,0 +1,9 @@ +package com.realnet.template.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.template.entity.TemplateFileUpload; + +public interface TemplatedataRepo extends JpaRepository{ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Controller.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Controller.java new file mode 100644 index 0000000..b84de13 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Controller.java @@ -0,0 +1,1071 @@ +"//package com.realnet.excel.controller;" + "\r\n" + +"package com.realnet.template.controller;" + "\r\n" + +"" + "\r\n" + +"import java.io.BufferedReader;" + "\r\n" + +"import java.io.ByteArrayInputStream;" + "\r\n" + +"import java.io.ByteArrayOutputStream;" + "\r\n" + +"import java.io.File;" + "\r\n" + +"import java.io.IOException;" + "\r\n" + +"import java.io.InputStream;" + "\r\n" + +"import java.io.InputStreamReader;" + "\r\n" + +"import java.nio.file.Files;" + "\r\n" + +"import java.nio.file.Path;" + "\r\n" + +"import java.nio.file.Paths;" + "\r\n" + +"import java.nio.file.StandardCopyOption;" + "\r\n" + +"import java.text.ParseException;" + "\r\n" + +"import java.text.SimpleDateFormat;" + "\r\n" + +"import java.util.ArrayList;" + "\r\n" + +"import java.util.Date;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.apache.poi.ss.usermodel.Cell;" + "\r\n" + +"import org.apache.poi.ss.usermodel.DataFormatter;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Row;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Sheet;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Workbook;" + "\r\n" + +"import org.apache.poi.ss.usermodel.WorkbookFactory;" + "\r\n" + +"import org.apache.poi.xssf.usermodel.XSSFWorkbook;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.core.io.InputStreamResource;" + "\r\n" + +"import org.springframework.http.HttpHeaders;" + "\r\n" + +"import org.springframework.http.HttpStatus;" + "\r\n" + +"import org.springframework.http.MediaType;" + "\r\n" + +"import org.springframework.http.ResponseEntity;" + "\r\n" + +"import org.springframework.util.StringUtils;" + "\r\n" + +"import org.springframework.web.bind.annotation.GetMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PathVariable;" + "\r\n" + +"import org.springframework.web.bind.annotation.PostMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestParam;" + "\r\n" + +"import org.springframework.web.bind.annotation.RestController;" + "\r\n" + +"import org.springframework.web.multipart.MultipartFile;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.Sr_Contact_type.Entity.Sr_Contact_type_t;" + "\r\n" + +"import com.realnet.Sr_Contact_type.Repository.Sr_Contact_type_Repository;" + "\r\n" + +"import com.realnet.Sr_State.Entity.Sr_State_t;" + "\r\n" + +"import com.realnet.Sr_State.Repository.Sr_State_Repository;" + "\r\n" + +"import com.realnet.Sr_category2.Entity.Sr_category2_t;" + "\r\n" + +"import com.realnet.Sr_category2.Repository.Sr_category2_Repository;" + "\r\n" + +"import com.realnet.Sr_customer.Entity.Sr_customer_t;" + "\r\n" + +"import com.realnet.Sr_customer.Repository.Sr_customer_Repository;" + "\r\n" + +"import com.realnet.Sr_handler.Entity.Sr_handler_t;" + "\r\n" + +"import com.realnet.Sr_handler.Repository.Sr_handler_Repository;" + "\r\n" + +"import com.realnet.Sr_impact2.Entity.Sr_impact2_t;" + "\r\n" + +"import com.realnet.Sr_impact2.Repository.Sr_impact2_Repository;" + "\r\n" + +"import com.realnet.Sr_priority2.Entity.Sr_priority2_t;" + "\r\n" + +"import com.realnet.Sr_priority2.Repository.Sr_priority2_Repository;" + "\r\n" + +"import com.realnet.Sr_urgency.Entity.Sr_urgency_t;" + "\r\n" + +"import com.realnet.Sr_urgency.Repository.Sr_urgency_Repository;" + "\r\n" + +"import com.realnet.template.repository.TemplatedataRepo;" + "\r\n" + +"import com.realnet.template.service.FileUploadService;" + "\r\n" + +"import com.realnet.users.entity1.AppUser;" + "\r\n" + +"import com.realnet.users.service1.AppUserServiceImpl;" + "\r\n" + +"" + "\r\n" + +"@RestController" + "\r\n" + +"@RequestMapping(\"api/template\")" + "\r\n" + +"public class Controller {" + "\r\n" + +" @Autowired" + "\r\n" + +" private TemplatedataRepo temprepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_priority2_Repository priorityrepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_impact2_Repository impactrepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_urgency_Repository urgencyrepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_State_Repository staterepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_Contact_type_Repository contactrepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_customer_Repository customerepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_category2_Repository categoryrepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Sr_handler_Repository handlerepo;" + "\r\n" + +" @Autowired" + "\r\n" + +" FileUploadService fileupload;" + "\r\n" + +" @Autowired" + "\r\n" + +" private AppUserServiceImpl userService;" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/demo/download/{file_type}\")" + "\r\n" + +"" + "\r\n" + +" public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException {" + "\r\n" + +"" + "\r\n" + +" if (file_type.equalsIgnoreCase(\"priority\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_priority2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Priority Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"impact\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_impact2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Impact Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"urgency\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_urgency_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Urgency Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"category\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_category2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Category Name\", \"Customer Id\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"state\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_State_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"State Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"contact_type\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_Contact_type_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Contact Type Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"customer\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_customer_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Customer Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"handler\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_handler_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"User Id\", \"Role Id\", \"Is Active\", \"Effective Start Date\", \"Effective End date\" };" + "\r\n" + +" ByteArrayInputStream in = demoTemplate(header, file_type);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity(\"Not Found\", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream demoTemplate(String[] HEADERs, String file_type) throws IOException {" + "\r\n" + +" String SHEET = file_type;" + "\r\n" + +" Workbook workbook = new XSSFWorkbook();" + "\r\n" + +" ByteArrayOutputStream out = new ByteArrayOutputStream();" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +" for (int col = 0; col < HEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(HEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @PostMapping(\"/save/{filetype}\")" + "\r\n" + +" public ResponseEntity uploadFile(@RequestParam MultipartFile file, @PathVariable String filetype)" + "\r\n" + +" throws IOException, ParseException {" + "\r\n" + +" BufferedReader br;" + "\r\n" + +" InputStream is = file.getInputStream();" + "\r\n" + +" br = new BufferedReader(new InputStreamReader(is));" + "\r\n" + +" String file_name = file.getOriginalFilename();" + "\r\n" + +" AppUser loggedInUser = userService.getLoggedInUser();" + "\r\n" + +"" + "\r\n" + +" if (filetype.equalsIgnoreCase(\"priority\")) {" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_priority2_t\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Priority Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" ArrayList prioritylist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(" + "\r\n" + +" \"priority file Should have \\\"\" + header + \" \\\"in the header in excel file\"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +" Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +" Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"" + "\r\n" + +" Sr_priority2_t priority = new Sr_priority2_t();" + "\r\n" + +" priority.setPriority_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" priority.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" priority.setActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" priority.setEffective_start_date(date);" + "\r\n" + +" priority.setEffective_end_date(date2);" + "\r\n" + +"" + "\r\n" + +" prioritylist.add(priority);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" priorityrepo.saveAll(prioritylist);" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +"// " + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"File Uploaded\", HttpStatus.ACCEPTED);" + "\r\n" + +" }" + "\r\n" + +" return new ResponseEntity<>(\"File name should contain Sr_priority2_t\", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" else if (filetype.contains(\"impact\")) {" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_impact2_t\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Impact Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +" ArrayList impactlist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +"" + "\r\n" + +" Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +" Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"" + "\r\n" + +" Sr_impact2_t impact = new Sr_impact2_t();" + "\r\n" + +" impact.setImpact_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" impact.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" impact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" impact.setEffective_start_date(date);" + "\r\n" + +" impact.setEffective_end_date(date2);" + "\r\n" + +"" + "\r\n" + +" impactlist.add(impact);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" impactrepo.saveAll(impactlist);" + "\r\n" + +" System.out.println(impactlist);" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"File Uploaded\", HttpStatus.ACCEPTED);" + "\r\n" + +" }" + "\r\n" + +" return new ResponseEntity<>(\"File name should contain Sr_impact2_t\", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" else if (filetype.contains(\"urgency\")) {" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_urgency_t\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Urgency Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List li = new ArrayList();" + "\r\n" + +" li.add(\"Impact Name\");" + "\r\n" + +" li.add(\"Description\");" + "\r\n" + +" li.add(\"Is Active\");" + "\r\n" + +" li.add(\"Effective Start Date\");" + "\r\n" + +" li.add(\"Effective End date\");" + "\r\n" + +"" + "\r\n" + +" ArrayList impactlist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(" + "\r\n" + +" \"priority file Should have \\\"\" + li + \" \\\"in the header in excel file\"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +" Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +" Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"" + "\r\n" + +" Sr_urgency_t urgency = new Sr_urgency_t();" + "\r\n" + +" urgency.setUrgency_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" urgency.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" urgency.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" urgency.setEffective_start_date(date);" + "\r\n" + +" urgency.setEffective_end_date(date2);" + "\r\n" + +"" + "\r\n" + +" impactlist.add(urgency);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" urgencyrepo.saveAll(impactlist);" + "\r\n" + +" System.out.println(impactlist);" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"File Uploaded\", HttpStatus.ACCEPTED);" + "\r\n" + +" }" + "\r\n" + +" return new ResponseEntity<>(\"File name should contain sr_incident_t\", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" } else if (filetype.equalsIgnoreCase(\"category\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Category Name\", \"Customer Id\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +"// if (file_name.contains(\"Sr_impact2_t\")) {" + "\r\n" + +"//" + "\r\n" + +"// ArrayList impactlist = new ArrayList();" + "\r\n" + +"//" + "\r\n" + +"// Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"//" + "\r\n" + +"//// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +"// DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"//" + "\r\n" + +"// Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"//" + "\r\n" + +"// // Getting number of columns in the Sheet" + "\r\n" + +"// int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"//" + "\r\n" + +"// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"//" + "\r\n" + +"// for (Row row : sheet) {" + "\r\n" + +"//" + "\r\n" + +"// if (row.getRowNum() == 0) {" + "\r\n" + +"// for (int i = 0; i < cols; i++) {" + "\r\n" + +"// String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"//" + "\r\n" + +"// if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"//" + "\r\n" + +"// return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +"// HttpStatus.BAD_REQUEST);" + "\r\n" + +"// }" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// if (row.getRowNum() != 0) {" + "\r\n" + +"// String value = dataFormatter.formatCellValue(row.getCell(4));" + "\r\n" + +"// String value2 = dataFormatter.formatCellValue(row.getCell(5));" + "\r\n" + +"// Date date = new SimpleDateFormat(\"dd-MM-yyyy\").parse(value);" + "\r\n" + +"// Date date2 = new SimpleDateFormat(\"dd-MM-yyyy\").parse(value2);" + "\r\n" + +"//" + "\r\n" + +"// Sr_impact2_t impact = new Sr_impact2_t();" + "\r\n" + +"// impact.setImpact_name(file_name);" + "\r\n" + +"// impact.setDescription(dataFormatter.formatCellValue(row.getCell(2)));" + "\r\n" + +"// impact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(3))));" + "\r\n" + +"//" + "\r\n" + +"//// priority.setEffective_start_date(date);" + "\r\n" + +"//// priority.setEffective_end_date(date2);" + "\r\n" + +"//" + "\r\n" + +"// impactlist.add(impact);" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"// impactrepo.saveAll(impactlist);" + "\r\n" + +"// System.out.println(impactlist);" + "\r\n" + +"//" + "\r\n" + +"// workbook.close();" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"" + "\r\n" + +" } else if (filetype.equalsIgnoreCase(\"state\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"State Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_State_t\")) {" + "\r\n" + +"" + "\r\n" + +" ArrayList statelist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(3));" + "\r\n" + +" String value2 = dataFormatter.formatCellValue(row.getCell(4));" + "\r\n" + +"" + "\r\n" + +" Sr_State_t state = new Sr_State_t();" + "\r\n" + +" state.setState_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" state.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" state.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" state.setEffective_end_date(value2);" + "\r\n" + +" state.setEffective_start_date(value);" + "\r\n" + +"" + "\r\n" + +" statelist.add(state);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" staterepo.saveAll(statelist);" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" } else if (filetype.equalsIgnoreCase(\"contact_type\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Contact Type Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_Contact_type_t\")) {" + "\r\n" + +"" + "\r\n" + +" ArrayList statelist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +" Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +" Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"" + "\r\n" + +" Sr_Contact_type_t contact = new Sr_Contact_type_t();" + "\r\n" + +" contact.setCon_type_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" contact.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" contact.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" contact.setEffective_start_date(date);" + "\r\n" + +" contact.setEffective_end_date(date2);" + "\r\n" + +"" + "\r\n" + +" statelist.add(contact);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" contactrepo.saveAll(statelist);" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" } else if (filetype.equalsIgnoreCase(\"customer\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"Customer Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +" if (file_name.contains(\"Sr_customer_t\")) {" + "\r\n" + +"" + "\r\n" + +" ArrayList customerlist = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"" + "\r\n" + +" fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +" HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +" Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +" Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"" + "\r\n" + +" Sr_customer_t customer = new Sr_customer_t();" + "\r\n" + +" customer.setCustomer_name(dataFormatter.formatCellValue(row.getCell(0)));" + "\r\n" + +" customer.setDescription(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +" customer.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2))));" + "\r\n" + +"" + "\r\n" + +" customer.setEffective_start_date(date);" + "\r\n" + +" customer.setEffective_end_date(date2);" + "\r\n" + +"" + "\r\n" + +" customerlist.add(customer);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" customerepo.saveAll(customerlist);" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" } else if (filetype.equalsIgnoreCase(\"handler\")) {" + "\r\n" + +"" + "\r\n" + +" String[] header = { \"User Id\", \"Role Id\", \"Is Active\", \"Effective Start Date\", \"Effective End date\" };" + "\r\n" + +"" + "\r\n" + +"// if (file_name.contains(\"Sr_State_t\")) {" + "\r\n" + +"//" + "\r\n" + +"// ArrayList statelist = new ArrayList();" + "\r\n" + +"//" + "\r\n" + +"// Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"//" + "\r\n" + +"//// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +"// DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"//" + "\r\n" + +"// Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"//" + "\r\n" + +"// // Getting number of columns in the Sheet" + "\r\n" + +"// int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"//" + "\r\n" + +"// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype);" + "\r\n" + +"//" + "\r\n" + +"// for (Row row : sheet) {" + "\r\n" + +"//" + "\r\n" + +"// if (row.getRowNum() == 0) {" + "\r\n" + +"// for (int i = 0; i < cols; i++) {" + "\r\n" + +"// String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"//" + "\r\n" + +"// if (!header[i].equalsIgnoreCase(value)) {" + "\r\n" + +"//" + "\r\n" + +"// return new ResponseEntity<>(\"priority file header is not in correct format \"," + "\r\n" + +"// HttpStatus.BAD_REQUEST);" + "\r\n" + +"// }" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// if (row.getRowNum() != 0) {" + "\r\n" + +"// Date date = row.getCell(3).getDateCellValue();" + "\r\n" + +"// Date date2 = row.getCell(4).getDateCellValue();" + "\r\n" + +"//" + "\r\n" + +"// Sr_State_t state = new Sr_State_t();" + "\r\n" + +"// state.setState_name(dataFormatter.formatCellValue(row.getCell(1)));" + "\r\n" + +"// state.setDescription(dataFormatter.formatCellValue(row.getCell(2)));" + "\r\n" + +"// state.setIsActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(3))));" + "\r\n" + +"//" + "\r\n" + +"//// priority.setEffective_start_date(date);" + "\r\n" + +"//// priority.setEffective_end_date(date2);" + "\r\n" + +"//" + "\r\n" + +"// statelist.add(state);" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"// staterepo.saveAll(statelist);" + "\r\n" + +"//" + "\r\n" + +"// workbook.close();" + "\r\n" + +"//" + "\r\n" + +"// }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(\"Something Went Wrong please try again....!!!!! \", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"// Download template data in excel Files" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/download/{file_type}\")" + "\r\n" + +"" + "\r\n" + +" public ResponseEntity getFile(@PathVariable String file_type) throws IOException {" + "\r\n" + +"" + "\r\n" + +" if (file_type.equalsIgnoreCase(\"priority\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_priority2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Priority Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = priorityrepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"impact\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_impact2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Impact Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = impactrepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte3(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"urgency\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_urgency_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Urgency Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = urgencyrepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte2(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"category\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_category2_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Category Name\", \"Customer Id\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = categoryrepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte4(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"state\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_State_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"State Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = staterepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte6(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"contact_type\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_Contact_type_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Contact Type Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = contactrepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte5(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"customer\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_customer_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"Customer Name\", \"Description\", \"Is Active\", \"Effective Start Date\"," + "\r\n" + +" \"Effective End date\" };" + "\r\n" + +" List findAll = customerepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte7(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" } else if (file_type.equalsIgnoreCase(\"handler\")) {" + "\r\n" + +"" + "\r\n" + +" String filename = \"Sr_handler_t\" + \".xlsx\";" + "\r\n" + +" String[] header = { \"User Id\", \"Role Id\", \"Is Active\", \"Effective Start Date\", \"Effective End date\" };" + "\r\n" + +" List findAll = handlerepo.findAll();" + "\r\n" + +" ByteArrayInputStream in = templateByte8(findAll, header);" + "\r\n" + +" InputStreamResource file = new InputStreamResource(in);" + "\r\n" + +" return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, \"attachment; filename=\" + filename)" + "\r\n" + +" .contentType(MediaType.parseMediaType(\"application/vnd.ms-excel\")).body(file);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity(\"Not Found\", HttpStatus.BAD_REQUEST);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"priority\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_priority2_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getPriority_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte2(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"URGENCY\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_urgency_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getUrgency_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte3(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_impact2_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getImpact_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte4(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_category2_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getCustomer_id());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte5(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_Contact_type_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getCon_type_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte6(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_State_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +" row.createCell(0).setCellValue(p.getState_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte7(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_customer_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getCustomer_name());" + "\r\n" + +" row.createCell(1).setCellValue(p.getDescription());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" public static ByteArrayInputStream templateByte8(List list, String[] hEADERs) {" + "\r\n" + +"" + "\r\n" + +" String SHEET = \"Impact\";" + "\r\n" + +"" + "\r\n" + +" try (Workbook workbook = new XSSFWorkbook(); ByteArrayOutputStream out = new ByteArrayOutputStream();) {" + "\r\n" + +" Sheet sheet = workbook.createSheet(SHEET);" + "\r\n" + +"" + "\r\n" + +" // Header" + "\r\n" + +" Row headerRow = sheet.createRow(0);" + "\r\n" + +"" + "\r\n" + +" for (int col = 0; col < hEADERs.length; col++) {" + "\r\n" + +" Cell cell = headerRow.createCell(col);" + "\r\n" + +" cell.setCellValue(hEADERs[col]);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" int rowIdx = 1;" + "\r\n" + +" for (Sr_handler_t p : list) {" + "\r\n" + +" Row row = sheet.createRow(rowIdx++);" + "\r\n" + +"" + "\r\n" + +" row.createCell(0).setCellValue(p.getRole());" + "\r\n" + +" row.createCell(1).setCellValue(p.getUser_name());" + "\r\n" + +" row.createCell(2).setCellValue(p.isIsActive());" + "\r\n" + +" row.createCell(3).setCellValue(String.valueOf(p.getEffective_start_date()));" + "\r\n" + +" row.createCell(4).setCellValue(String.valueOf(p.getEffective_end_date()));" + "\r\n" + +" }" + "\r\n" + +" workbook.write(out);" + "\r\n" + +" return new ByteArrayInputStream(out.toByteArray());" + "\r\n" + +" } catch (IOException e) {" + "\r\n" + +" throw new RuntimeException(\"fail to import data to Excel file: \" + e.getMessage());" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/getalltemplate\")" + "\r\n" + +" public ResponseEntity getALlTemplate() {" + "\r\n" + +" return new ResponseEntity<>(temprepo.findAll(), HttpStatus.ACCEPTED);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryController.java new file mode 100644 index 0000000..8f72c2d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryController.java @@ -0,0 +1,75 @@ +"package com.realnet.template.controller;" + "\r\n" + +"" + "\r\n" + +"import java.sql.Connection;" + "\r\n" + +"import java.sql.DriverManager;" + "\r\n" + +"import java.sql.SQLException;" + "\r\n" + +"import java.sql.Statement;" + "\r\n" + +"import java.util.ArrayList;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Value;" + "\r\n" + +"import org.springframework.web.bind.annotation.GetMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PathVariable;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.ResponseBody;" + "\r\n" + +"import org.springframework.web.bind.annotation.RestController;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.template.repository.DynamicTempRepo;" + "\r\n" + +"import com.realnet.template.service.DatabaseQueryService;" + "\r\n" + +"" + "\r\n" + +"@RestController" + "\r\n" + +"@RequestMapping(\"/sureserve/template/databasequery\")" + "\r\n" + +"public class DatabaseQueryController {" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private DatabaseQueryService rn_table_service;" + "\r\n" + +" @Autowired" + "\r\n" + +" private DynamicTempRepo tempRepo;" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.username}\")" + "\r\n" + +" private String userName;" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.password}\")" + "\r\n" + +" private String password;" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.url}\")" + "\r\n" + +" private String url;" + "\r\n" + +"" + "\r\n" + +"// get all databse list available" + "\r\n" + +" @GetMapping(\"/Table_list\")" + "\r\n" + +" @ResponseBody" + "\r\n" + +" public List getdatabase() {" + "\r\n" + +" List list = tempRepo.getdatabaseList();" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // get all table list available" + "\r\n" + +" @GetMapping(\"/Table_list_all\")" + "\r\n" + +" @ResponseBody" + "\r\n" + +" public List gettableList()" + "\r\n" + +"" + "\r\n" + +"// @PathVariable String table_schema) " + "\r\n" + +" {" + "\r\n" + +"// List list = tempRepo.getListOftables(table_schema);" + "\r\n" + +" List list = rn_table_service.getListOftable(\"sureserve\");" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // get all column list available" + "\r\n" + +" @GetMapping(\"/Table_list/{table_schema}/{TABLE_NAME}\")" + "\r\n" + +" @ResponseBody" + "\r\n" + +" public List getallcolumnlist(@PathVariable String table_schema, @PathVariable String TABLE_NAME) {" + "\r\n" + +" List list = rn_table_service.getColumnAliasList1(table_schema, TABLE_NAME);" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // create database" + "\r\n" + +" @GetMapping(\"/createdatabase/{table_schema}\")" + "\r\n" + +" @ResponseBody" + "\r\n" + +" public List createdatabase(@PathVariable String table_schema) {" + "\r\n" + +" List list = rn_table_service.createdatabase(table_schema);" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryService.java new file mode 100644 index 0000000..88dd907 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DatabaseQueryService.java @@ -0,0 +1,89 @@ +"package com.realnet.template.service;" + "\r\n" + +"" + "\r\n" + +"import java.sql.Connection;" + "\r\n" + +"import java.sql.DriverManager;" + "\r\n" + +"import java.sql.ResultSet;" + "\r\n" + +"import java.sql.SQLException;" + "\r\n" + +"import java.sql.Statement;" + "\r\n" + +"import java.util.ArrayList;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Value;" + "\r\n" + +"import org.springframework.stereotype.Service;" + "\r\n" + +"import org.springframework.web.bind.annotation.PathVariable;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +"public class DatabaseQueryService {" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.username}\")" + "\r\n" + +" private String userName;" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.password}\")" + "\r\n" + +" private String password;" + "\r\n" + +"" + "\r\n" + +" @Value(\"${spring.datasource.url}\")" + "\r\n" + +" private String url;" + "\r\n" + +"" + "\r\n" + +" // get all column" + "\r\n" + +"" + "\r\n" + +" public List getColumnAliasList1(String table_schema, String tABLE_NAME) {" + "\r\n" + +" String query = \"SELECT column_name FROM information_schema.columns WHERE TABLE_SCHEMA='\" + table_schema" + "\r\n" + +" + \"' and table_name = '\" + tABLE_NAME + \"' \";" + "\r\n" + +" List list = new ArrayList();" + "\r\n" + +" try (Connection con = DriverManager.getConnection(url, userName, password);" + "\r\n" + +"" + "\r\n" + +" Statement stmt = con.createStatement()) {" + "\r\n" + +" ResultSet rs = stmt.executeQuery(query);" + "\r\n" + +" while (rs.next()) {" + "\r\n" + +" String coffeeName = rs.getString(\"column_name\");" + "\r\n" + +" list.add(coffeeName);" + "\r\n" + +" }" + "\r\n" + +" } catch (SQLException e) {" + "\r\n" + +" e.printStackTrace();" + "\r\n" + +" }" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // get all table list from databse" + "\r\n" + +"" + "\r\n" + +" public List getListOftable(String table_schema) {" + "\r\n" + +" String query = \"SELECT table_name FROM information_schema.tables WHERE table_schema='\" + table_schema + \"' \";" + "\r\n" + +"" + "\r\n" + +" List list = new ArrayList();" + "\r\n" + +" try (Connection con = DriverManager.getConnection(url, userName, password);" + "\r\n" + +"" + "\r\n" + +" Statement stmt = con.createStatement()) {" + "\r\n" + +" ResultSet rs = stmt.executeQuery(query);" + "\r\n" + +" while (rs.next()) {" + "\r\n" + +" String coffeeName = rs.getString(\"table_name\");" + "\r\n" + +" list.add(coffeeName);" + "\r\n" + +" }" + "\r\n" + +" } catch (SQLException e) {" + "\r\n" + +" e.printStackTrace();" + "\r\n" + +" }" + "\r\n" + +" return list;" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" public List createdatabase(String table_schema){" + "\r\n" + +" String query = \"CREATE SCHEMA \" + table_schema + \";\";" + "\r\n" + +"" + "\r\n" + +" List list = new ArrayList();" + "\r\n" + +" try (Connection con = DriverManager.getConnection(url, userName, password); // conn.str" + "\r\n" + +"" + "\r\n" + +" Statement stmt = con.createStatement()) {" + "\r\n" + +" int rs = stmt.executeUpdate(query);" + "\r\n" + +"" + "\r\n" + +" list.add(rs);" + "\r\n" + +"" + "\r\n" + +" } catch (SQLException e) {" + "\r\n" + +" e.printStackTrace();" + "\r\n" + +" } finally {" + "\r\n" + +" }" + "\r\n" + +" return list;" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTempRepo.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTempRepo.java new file mode 100644 index 0000000..14faf1d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTempRepo.java @@ -0,0 +1,24 @@ +"package com.realnet.template.repository;" + "\r\n" + +"" + "\r\n" + +"import java.util.List;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"import org.springframework.data.jpa.repository.Query;" + "\r\n" + +"import org.springframework.data.repository.query.Param;" + "\r\n" + +"import org.springframework.stereotype.Repository;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.template.entity.Dynamic_template;" + "\r\n" + +"" + "\r\n" + +"@Repository" + "\r\n" + +"public interface DynamicTempRepo extends JpaRepository{" + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" @Query(value= \"select schema_name from information_schema.schemata\",nativeQuery = true)" + "\r\n" + +" List getdatabaseList();" + "\r\n" + +"" + "\r\n" + +" @Query(value= \"SELECT table_name FROM information_schema.tables WHERE table_schema =?1\",nativeQuery = true)" + "\r\n" + +" List getListOftables(String table_schema);" + "\r\n" + +"" + "\r\n" + +" @Query(value= \"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE `TABLE_SCHEMA`=:'TABLE_SCHEMA' AND `TABLE_NAME`='TABLE_NAME';\",nativeQuery = true)" + "\r\n" + +" List getallcolumnlist(@Param(\"TABLE_SCHEMA\") Object table_schema, @Param(\"TABLE_NAME\") Object tABLE_NAME);" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTemplateController.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTemplateController.java new file mode 100644 index 0000000..06db400 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_DynamicTemplateController.java @@ -0,0 +1,250 @@ +"package com.realnet.template.controller;" + "\r\n" + +"" + "\r\n" + +"import java.io.BufferedReader;" + "\r\n" + +"import java.io.IOException;" + "\r\n" + +"import java.io.InputStream;" + "\r\n" + +"import java.io.InputStreamReader;" + "\r\n" + +"import java.text.DateFormat;" + "\r\n" + +"import java.text.SimpleDateFormat;" + "\r\n" + +"import java.util.ArrayList;" + "\r\n" + +"import java.util.Calendar;" + "\r\n" + +"import java.util.HashMap;" + "\r\n" + +"import java.util.Iterator;" + "\r\n" + +"import java.util.List;" + "\r\n" + +"import java.util.Map;" + "\r\n" + +"import java.util.Set;" + "\r\n" + +"" + "\r\n" + +"import org.apache.poi.ss.usermodel.DataFormatter;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Row;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Sheet;" + "\r\n" + +"import org.apache.poi.ss.usermodel.Workbook;" + "\r\n" + +"import org.apache.poi.ss.usermodel.WorkbookFactory;" + "\r\n" + +"import org.json.simple.JSONObject;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.http.HttpStatus;" + "\r\n" + +"import org.springframework.http.ResponseEntity;" + "\r\n" + +"import org.springframework.web.bind.annotation.DeleteMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.GetMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PathVariable;" + "\r\n" + +"import org.springframework.web.bind.annotation.PostMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.PutMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestMapping;" + "\r\n" + +"import org.springframework.web.bind.annotation.RequestParam;" + "\r\n" + +"import org.springframework.web.bind.annotation.RestController;" + "\r\n" + +"import org.springframework.web.multipart.MultipartFile;" + "\r\n" + +"" + "\r\n" + +"import com.fasterxml.jackson.core.JsonProcessingException;" + "\r\n" + +"import com.fasterxml.jackson.databind.JsonMappingException;" + "\r\n" + +"import com.fasterxml.jackson.databind.ObjectMapper;" + "\r\n" + +"import com.google.gson.JsonArray;" + "\r\n" + +"import com.google.gson.JsonElement;" + "\r\n" + +"import com.google.gson.JsonObject;" + "\r\n" + +"import com.google.gson.JsonParser;" + "\r\n" + +"import com.realnet.Notification.Notification.Entity.NotEntity;" + "\r\n" + +"import com.realnet.fileupload.helper.Fileuploadhelper;" + "\r\n" + +"import com.realnet.incident.entity.IncidentEntity;" + "\r\n" + +"import com.realnet.template.entity.Dynamic_template;" + "\r\n" + +"import com.realnet.template.repository.DynamicTempRepo;" + "\r\n" + +"import com.realnet.users.entity1.AppUser;" + "\r\n" + +"import com.realnet.users.service1.AppUserServiceImpl;" + "\r\n" + +"" + "\r\n" + +"@RestController" + "\r\n" + +"@RequestMapping(\"/sureserve/template/dynamic\")" + "\r\n" + +"public class DynamicTemplateController {" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private DynamicTempRepo tempRepo;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private AppUserServiceImpl userService;" + "\r\n" + +"" + "\r\n" + +" @Autowired" + "\r\n" + +" private Fileuploadhelper fileuploadhelper;" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/templatetojson\")" + "\r\n" + +" public ResponseEntity saveTemplateInJson(@RequestParam MultipartFile file) throws IOException {" + "\r\n" + +"" + "\r\n" + +" BufferedReader br;" + "\r\n" + +" InputStream is = file.getInputStream();" + "\r\n" + +" br = new BufferedReader(new InputStreamReader(is));" + "\r\n" + +"" + "\r\n" + +" Workbook workbook = WorkbookFactory.create(is);" + "\r\n" + +"" + "\r\n" + +"// Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +" DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"" + "\r\n" + +" Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"" + "\r\n" + +" // Getting number of columns in the Sheet" + "\r\n" + +" int cols = sheet.getRow(0).getLastCellNum();" + "\r\n" + +" int firstRowNum = sheet.getFirstRowNum();" + "\r\n" + +"" + "\r\n" + +" List keys = new ArrayList();" + "\r\n" + +" List jsonList = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" for (Row row : sheet) {" + "\r\n" + +" JSONObject object = new JSONObject();" + "\r\n" + +" if (row.getRowNum() == 0) {" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +" keys.add(value);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" if (row.getRowNum() != 0) {" + "\r\n" + +"" + "\r\n" + +" for (int i = 0; i < cols; i++) {" + "\r\n" + +" String key = keys.get(i);" + "\r\n" + +" String value = dataFormatter.formatCellValue(row.getCell(i));" + "\r\n" + +"" + "\r\n" + +" object.put(key, value);" + "\r\n" + +"" + "\r\n" + +" jsonList.add(object);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" workbook.close();" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(jsonList, HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" @GetMapping(\"/jsonkeychange\")" + "\r\n" + +"" + "\r\n" + +" public ResponseEntity changeKeysOfJson(@RequestParam String newjson, @RequestParam String body)" + "\r\n" + +" throws IOException {" + "\r\n" + +"" + "\r\n" + +" JsonParser parser = new JsonParser();" + "\r\n" + +" JsonElement element = parser.parse(newjson);" + "\r\n" + +" JsonElement element2 = parser.parse(body);" + "\r\n" + +" JsonObject object2 = element.getAsJsonObject();" + "\r\n" + +" JsonArray array = element2.getAsJsonArray();" + "\r\n" + +" Iterator iterator = array.iterator();" + "\r\n" + +"" + "\r\n" + +" List jsonList = new ArrayList();" + "\r\n" + +"" + "\r\n" + +" Set keySet = object2.keySet();" + "\r\n" + +" Iterator it = keySet.iterator();" + "\r\n" + +"" + "\r\n" + +"// String key = it.next();" + "\r\n" + +" while (iterator.hasNext()) {" + "\r\n" + +"" + "\r\n" + +" Map map = new HashMap();" + "\r\n" + +" Object next = iterator.next();" + "\r\n" + +" JsonElement parse = parser.parse(next.toString());" + "\r\n" + +" JsonObject jsonObject = parse.getAsJsonObject();" + "\r\n" + +" for (String k : keySet) {" + "\r\n" + +" String next2 = object2.get(k).getAsString();" + "\r\n" + +" String value2 = jsonObject.get(k).getAsString();" + "\r\n" + +" map.put(next2, value2);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" jsonList.add(map);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(jsonList, HttpStatus.BAD_REQUEST);" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // create data with file upload" + "\r\n" + +" @PostMapping(\"/dynamic_temp\")" + "\r\n" + +" public ResponseEntity addIssues(@RequestParam String data, @RequestParam MultipartFile file)" + "\r\n" + +" throws JsonMappingException, JsonProcessingException {" + "\r\n" + +"" + "\r\n" + +" AppUser user = userService.getLoggedInUser();" + "\r\n" + +" String userId = user.getUsername();" + "\r\n" + +" Dynamic_template dynamic_template;" + "\r\n" + +"" + "\r\n" + +" dynamic_template = new ObjectMapper().readValue(data, Dynamic_template.class);" + "\r\n" + +"" + "\r\n" + +" if (!file.isEmpty()) {" + "\r\n" + +"// for (MultipartFile e : attachmentFile) {" + "\r\n" + +" System.out.println(file.getOriginalFilename());" + "\r\n" + +"" + "\r\n" + +" boolean f = fileuploadhelper.uploadFile(file);" + "\r\n" + +"" + "\r\n" + +" if (f) {" + "\r\n" + +" System.out.println(\"file uploaded successfully\");" + "\r\n" + +" dynamic_template.setFile_name(file.getOriginalFilename());" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" } else {" + "\r\n" + +" dynamic_template.setFile_name(\"No file\");" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" dynamic_template.setUser_id(userId);" + "\r\n" + +"" + "\r\n" + +" Dynamic_template save = tempRepo.save(dynamic_template);" + "\r\n" + +"" + "\r\n" + +" if (save.getId() == 0) {" + "\r\n" + +" return new ResponseEntity(\"template Not Added\", HttpStatus.BAD_REQUEST);" + "\r\n" + +" } else {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(save, HttpStatus.ACCEPTED);" + "\r\n" + +" }" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // get all" + "\r\n" + +" @GetMapping(\"/dynamic_temp\")" + "\r\n" + +" public ResponseEntity getAll() {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(tempRepo.findAll(), HttpStatus.ACCEPTED);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // get by id" + "\r\n" + +" @GetMapping(\"/dynamic_temp/{id}\")" + "\r\n" + +" public ResponseEntity getIssueById(@PathVariable Long id) {" + "\r\n" + +"" + "\r\n" + +" return new ResponseEntity<>(tempRepo.findById(id).get(), HttpStatus.ACCEPTED);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // delete by id" + "\r\n" + +" @DeleteMapping(\"/dynamic_temp/{id}\")" + "\r\n" + +" public ResponseEntity deleteIssue(@PathVariable Long id) {" + "\r\n" + +" tempRepo.deleteById(id);" + "\r\n" + +" return new ResponseEntity(\"Success\", HttpStatus.ACCEPTED);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" // update by id" + "\r\n" + +" @PutMapping(\"/dynamic_temp/{id}\")" + "\r\n" + +" public ResponseEntity updateIssue(@RequestParam String data, @PathVariable Long id," + "\r\n" + +" @RequestParam MultipartFile file) throws Exception {" + "\r\n" + +"" + "\r\n" + +" Dynamic_template dynamic_template;" + "\r\n" + +" dynamic_template = new ObjectMapper().readValue(data, Dynamic_template.class);" + "\r\n" + +"" + "\r\n" + +" Dynamic_template template = tempRepo.findById(id).get();" + "\r\n" + +"" + "\r\n" + +" if (!file.isEmpty()) {" + "\r\n" + +" System.out.println(file.getOriginalFilename());" + "\r\n" + +"" + "\r\n" + +" boolean f = fileuploadhelper.uploadFile(file);" + "\r\n" + +"" + "\r\n" + +" if (f) {" + "\r\n" + +" System.out.println(\"file uploaded successfully\");" + "\r\n" + +" template.setFile_name(file.getOriginalFilename());" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" } else {" + "\r\n" + +" template.setFile_name(\"No file\");" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +" template.setEntity_name(dynamic_template.getEntity_name());" + "\r\n" + +" template.setUser_id(dynamic_template.getUser_id());" + "\r\n" + +"" + "\r\n" + +" Dynamic_template save = tempRepo.save(template);" + "\r\n" + +" return new ResponseEntity<>(save, HttpStatus.ACCEPTED);" + "\r\n" + +"" + "\r\n" + +" }" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Dynamic_template.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Dynamic_template.java new file mode 100644 index 0000000..63e3b6d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_Dynamic_template.java @@ -0,0 +1,25 @@ +"package com.realnet.template.entity;" + "\r\n" + +"" + "\r\n" + +"import javax.persistence.Entity;" + "\r\n" + +"import javax.persistence.GeneratedValue;" + "\r\n" + +"import javax.persistence.GenerationType;" + "\r\n" + +"import javax.persistence.Id;" + "\r\n" + +"" + "\r\n" + +"import lombok.AllArgsConstructor;" + "\r\n" + +"import lombok.Data;" + "\r\n" + +"import lombok.NoArgsConstructor;" + "\r\n" + +"" + "\r\n" + +"@Data" + "\r\n" + +"@Entity" + "\r\n" + +"@AllArgsConstructor" + "\r\n" + +"@NoArgsConstructor" + "\r\n" + +"public class Dynamic_template {" + "\r\n" + +"" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +" " + "\r\n" + +" private String user_id;" + "\r\n" + +" private String file_name;" + "\r\n" + +" private String entity_name;" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_ExcelDataService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_ExcelDataService.java new file mode 100644 index 0000000..afe4984 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_ExcelDataService.java @@ -0,0 +1,96 @@ +"//package com.realnet.excel.service;" + "\r\n" + +"//" + "\r\n" + +"//import java.io.IOException;" + "\r\n" + +"//import java.util.ArrayList;" + "\r\n" + +"//import java.util.List;" + "\r\n" + +"//" + "\r\n" + +"//import org.apache.poi.EncryptedDocumentException;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.Cell;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.DataFormatter;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.Row;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.Sheet;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.Workbook;" + "\r\n" + +"//import org.apache.poi.ss.usermodel.WorkbookFactory;" + "\r\n" + +"//import org.springframework.stereotype.Service;" + "\r\n" + +"//" + "\r\n" + +"//import com.realnet.excel.entity.ExcelFileUpload;" + "\r\n" + +"//" + "\r\n" + +"//@Service" + "\r\n" + +"//public class ExcelDataService {" + "\r\n" + +"// " + "\r\n" + +"// Workbook workbook;" + "\r\n" + +"//" + "\r\n" + +"// public List getExcelDataAsList() {" + "\r\n" + +"//" + "\r\n" + +"// List list = new ArrayList();" + "\r\n" + +"//" + "\r\n" + +"// // Create a DataFormatter to format and get each cell's value as String" + "\r\n" + +"// DataFormatter dataFormatter = new DataFormatter();" + "\r\n" + +"//" + "\r\n" + +"// // Create the Workbook" + "\r\n" + +"//// try {" + "\r\n" + +"//// workbook = WorkbookFactory.create();" + "\r\n" + +"//// } catch (EncryptedDocumentException | IOException e) {" + "\r\n" + +"//// e.printStackTrace();" + "\r\n" + +"//// }" + "\r\n" + +"//" + "\r\n" + +"// // Retrieving the number of sheets in the Workbook" + "\r\n" + +"// System.out.println(\"-------Workbook has '\" + workbook.getNumberOfSheets() + \"' Sheets-----\");" + "\r\n" + +"//" + "\r\n" + +"// // Getting the Sheet at index zero" + "\r\n" + +"// Sheet sheet = workbook.getSheetAt(0);" + "\r\n" + +"//" + "\r\n" + +"// // Getting number of columns in the Sheet" + "\r\n" + +"// int noOfColumns = sheet.getRow(0).getLastCellNum();" + "\r\n" + +"// System.out.println(\"-------Sheet has '\"+noOfColumns+\"' columns------\");" + "\r\n" + +"//" + "\r\n" + +"// // Using for-each loop to iterate over the rows and columns" + "\r\n" + +"// for (Row row : sheet) {" + "\r\n" + +"// for (Cell cell : row) {" + "\r\n" + +"// String cellValue = dataFormatter.formatCellValue(cell);" + "\r\n" + +"// list.add(cellValue);" + "\r\n" + +"// }" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// // filling excel data and creating list as List" + "\r\n" + +"// List invList = createList(list, noOfColumns);" + "\r\n" + +"//" + "\r\n" + +"// // Closing the workbook" + "\r\n" + +"// try {" + "\r\n" + +"// workbook.close();" + "\r\n" + +"// } catch (IOException e) {" + "\r\n" + +"// // TODO Auto-generated catch block" + "\r\n" + +"// e.printStackTrace();" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// return invList;" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"// private List createList(List excelData, int noOfColumns) {" + "\r\n" + +"//" + "\r\n" + +"// ArrayList invList = new ArrayList();" + "\r\n" + +"//" + "\r\n" + +"// int i = noOfColumns;" + "\r\n" + +"// do {" + "\r\n" + +"// ExcelFileUpload inv = new ExcelFileUpload();" + "\r\n" + +"//" + "\r\n" + +"//// inv.setName(excelData.get(i));" + "\r\n" + +"//// inv.setAmount(Double.valueOf(excelData.get(i + 1)));" + "\r\n" + +"//// inv.setNumber(excelData.get(i + 2));" + "\r\n" + +"//// inv.setReceivedDate(excelData.get(i + 3));" + "\r\n" + +"//" + "\r\n" + +"// invList.add(inv);" + "\r\n" + +"// i = i + (noOfColumns);" + "\r\n" + +"//" + "\r\n" + +"// } while (i < excelData.size());" + "\r\n" + +"// return invList;" + "\r\n" + +"// }" + "\r\n" + +"//" + "\r\n" + +"//// public int saveExcelData(List invoices) {" + "\r\n" + +"//// invoices = repo.saveAll(invoices);" + "\r\n" + +"//// return invoices.size();" + "\r\n" + +"//// }" + "\r\n" + +"// " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +"//}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_FileUploadService.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_FileUploadService.java new file mode 100644 index 0000000..844b1d9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_FileUploadService.java @@ -0,0 +1,79 @@ +"package com.realnet.template.service;" + "\r\n" + +"" + "\r\n" + +"import java.io.File;" + "\r\n" + +"import java.nio.file.Files;" + "\r\n" + +"import java.nio.file.Path;" + "\r\n" + +"import java.nio.file.Paths;" + "\r\n" + +"import java.nio.file.StandardCopyOption;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.beans.factory.annotation.Autowired;" + "\r\n" + +"import org.springframework.beans.factory.annotation.Value;" + "\r\n" + +"import org.springframework.stereotype.Service;" + "\r\n" + +"import org.springframework.util.StringUtils;" + "\r\n" + +"import org.springframework.web.multipart.MultipartFile;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.template.entity.TemplateFileUpload;" + "\r\n" + +"import com.realnet.template.repository.TemplatedataRepo;" + "\r\n" + +"" + "\r\n" + +"@Service" + "\r\n" + +"public class FileUploadService {" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" @Autowired" + "\r\n" + +" private TemplatedataRepo repo;" + "\r\n" + +" " + "\r\n" + +"" + "\r\n" + +" " + "\r\n" + +" public String uploadFile(MultipartFile file,Long user_id,String file_type) {" + "\r\n" + +" try {" + "\r\n" + +" " + "\r\n" + +"// String " + "\r\n" + +" String file_name= file.getOriginalFilename();" + "\r\n" + +" String substring = file_name.substring(0,file_name.lastIndexOf(\".\"));" + "\r\n" + +" " + "\r\n" + +" String str = substring+System.currentTimeMillis();" + "\r\n" + +" String location =System.getProperty(\"user.dir\")+\"/src/main/resources\";" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" String file_name2= file.getOriginalFilename();" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" File staticdir2 = new File(location+\"/incomingfile\");" + "\r\n" + +" if(!staticdir2.exists()) {" + "\r\n" + +" staticdir2.mkdir();" + "\r\n" + +" }" + "\r\n" + +" Path copyLocation2 = Paths" + "\r\n" + +" .get(staticdir2 + File.separator + StringUtils.cleanPath(file_name2));" + "\r\n" + +" " + "\r\n" + +" Files.copy(file.getInputStream(), copyLocation2, StandardCopyOption.REPLACE_EXISTING); " + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" File staticdir = new File(location+\"/processingfile\");" + "\r\n" + +" if(!staticdir.exists()) {" + "\r\n" + +" staticdir.mkdir();" + "\r\n" + +" }" + "\r\n" + +" Path copyLocation = Paths" + "\r\n" + +" .get(staticdir + File.separator + StringUtils.cleanPath(str+\".xlsx\"));" + "\r\n" + +" " + "\r\n" + +" Files.copy(file.getInputStream(), copyLocation, StandardCopyOption.REPLACE_EXISTING);" + "\r\n" + +" " + "\r\n" + +" " + "\r\n" + +" TemplateFileUpload exceldata= new TemplateFileUpload();" + "\r\n" + +" exceldata.setFile_location(location);" + "\r\n" + +" " + "\r\n" + +" exceldata.setFile_name(file.getOriginalFilename());" + "\r\n" + +" exceldata.setFile_changed_name(str);" + "\r\n" + +" exceldata.setFile_type(file_type);" + "\r\n" + +" exceldata.setUser_id(user_id);" + "\r\n" + +" repo.save(exceldata);" + "\r\n" + +" " + "\r\n" + +" System.out.println(\"-----------------------saving data----------------\");" + "\r\n" + +" return location;" + "\r\n" + +" } catch (Exception e) {" + "\r\n" + +" e.printStackTrace();" + "\r\n" + +" throw new RuntimeException(\"Could not store file \" + file.getOriginalFilename()" + "\r\n" + +" + \". Please try again!\");" + "\r\n" + +" }" + "\r\n" + +" " + "\r\n" + +" }" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplateFileUpload.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplateFileUpload.java new file mode 100644 index 0000000..fd00751 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplateFileUpload.java @@ -0,0 +1,27 @@ +"package com.realnet.template.entity;" + "\r\n" + +"" + "\r\n" + +"import javax.persistence.Entity;" + "\r\n" + +"import javax.persistence.GeneratedValue;" + "\r\n" + +"import javax.persistence.GenerationType;" + "\r\n" + +"import javax.persistence.Id;" + "\r\n" + +"" + "\r\n" + +"import lombok.AllArgsConstructor;" + "\r\n" + +"import lombok.Data;" + "\r\n" + +"import lombok.NoArgsConstructor;" + "\r\n" + +"" + "\r\n" + +"@Data" + "\r\n" + +"@Entity" + "\r\n" + +"@AllArgsConstructor" + "\r\n" + +"@NoArgsConstructor" + "\r\n" + +"public class TemplateFileUpload {" + "\r\n" + +" @Id" + "\r\n" + +" @GeneratedValue(strategy = GenerationType.IDENTITY)" + "\r\n" + +" private Long id;" + "\r\n" + +" " + "\r\n" + +" private Long user_id;" + "\r\n" + +" private String file_name;" + "\r\n" + +" private String file_changed_name;" + "\r\n" + +" private String file_location;" + "\r\n" + +" private String file_type;" + "\r\n" + +" private Integer status;" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplatedataRepo.java b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplatedataRepo.java new file mode 100644 index 0000000..48525fa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/extracted-files/template (1)_1676960834933/static_code/SE_TemplatedataRepo.java @@ -0,0 +1,9 @@ +"package com.realnet.template.repository;" + "\r\n" + +"" + "\r\n" + +"import org.springframework.data.jpa.repository.JpaRepository;" + "\r\n" + +"" + "\r\n" + +"import com.realnet.template.entity.TemplateFileUpload;" + "\r\n" + +"" + "\r\n" + +"public interface TemplatedataRepo extends JpaRepository{" + "\r\n" + +"" + "\r\n" + +"}" \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/Abc_1665647440047_back.zip b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/Abc_1665647440047_back.zip new file mode 100644 index 0000000..e35579f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/Abc_1665647440047_back.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/bugTracker (2).zip b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/bugTracker (2).zip new file mode 100644 index 0000000..af928fe Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/bugTracker (2).zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/entityevents.zip b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/entityevents.zip new file mode 100644 index 0000000..c59e943 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/entityevents.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/model.zip b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/model.zip new file mode 100644 index 0000000..ee66204 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/model.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/template (1).zip b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/template (1).zip new file mode 100644 index 0000000..36d50e7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/cns-portal/code-extractor/zip-uploads/template (1).zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/dump.sql b/pro103ab-back-b/authsec_springboot/backend/dump.sql new file mode 100755 index 0000000..5f51259 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/dump.sql @@ -0,0 +1,508 @@ + +DROP TABLE IF EXISTS `accounts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `accounts` ( + `id` bigint NOT NULL, + `companyname` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `managing_work` varchar(255) DEFAULT NULL, + `mobile` bigint DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `pancard` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `working` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + +/*!40000 ALTER TABLE `accounts` DISABLE KEYS */; +INSERT INTO `accounts` VALUES (1,'test','test@gmail.com','w',123456789,'kk','kk','test','w'); +/*!40000 ALTER TABLE `accounts` ENABLE KEYS */; + +DROP TABLE IF EXISTS `app_user_log`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `app_user_log` ( + `log_id` bigint NOT NULL, + `created_on` datetime DEFAULT NULL, + `generate_log` varchar(255) DEFAULT NULL, + `log_file_name` varchar(255) DEFAULT NULL, + `log_level` varchar(255) DEFAULT NULL, + `user_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`log_id`), + UNIQUE KEY `UK_tl3or0c0pxxdvigxponlgee18` (`user_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `app_user_log` DISABLE KEYS */; +INSERT INTO `app_user_log` VALUES (1,'2023-06-09 17:39:20','Y','sysadmin1686312560.log','info','sysadmin'); +/*!40000 ALTER TABLE `app_user_log` ENABLE KEYS */; + + +DROP TABLE IF EXISTS `app_user_log_sequence`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `app_user_log_sequence` ( + `next_val` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +/*!40000 ALTER TABLE `app_user_log_sequence` DISABLE KEYS */; +INSERT INTO `app_user_log_sequence` VALUES (2),(2),(2),(2),(2),(2),(2),(2),(2),(1); +/*!40000 ALTER TABLE `app_user_log_sequence` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `logs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `logs` ( + `user_id` bigint NOT NULL, + `dated` varchar(255) DEFAULT NULL, + `lavel` varchar(255) DEFAULT NULL, + `logger` varchar(255) DEFAULT NULL, + `message` varchar(255) DEFAULT NULL, + PRIMARY KEY (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + +/*!40000 ALTER TABLE `role` DISABLE KEYS */; +INSERT INTO `role` VALUES (1,'ADMIN','ROLE_ADMIN'),(2,'Developer','ROLE_Developer'),(3,'USER','ROLE_USER'),(5,'DEVEOPS','ROLE_DEVEOPS'); +/*!40000 ALTER TABLE `role` ENABLE KEYS */; + + + + +/*!40000 ALTER TABLE `sec_menu_det` DISABLE KEYS */; +INSERT INTO `sec_menu_det` VALUES (1116,'2023-01-25 10:25:50','2023-01-25 10:25:50',3000,'security','lock',0,'Security','sec3000','Enable'),(1117,'2023-01-25 10:42:02','2023-02-04 15:34:25',3010,'usermaintance',NULL,1116,'User Maintance','U1000','Enable'),(1118,'2023-01-25 11:12:27','2023-02-04 15:34:36',3020,'usergrpmaintance',NULL,1116,'User Group Maintance','U2000','Enable'),(1523,'2023-02-04 11:15:57','2023-02-04 15:34:45',3030,'menumaintance',NULL,1116,'Menu Maintance','M3000','Enable'),(1524,'2023-02-04 11:16:52','2023-02-04 15:34:54',3040,'menuaccess',NULL,1116,'Menu Access Control','MA4000','Enable'),(1525,'2023-02-04 11:17:31','2023-02-04 15:35:06',3050,'systemparameters',NULL,1116,'System Parameters','SP5000','Enable'),(1526,'2023-02-04 11:18:04','2023-02-04 15:35:14',3060,'accesstype',NULL,1116,'Access Type','A6000','Enable'),(1528,'2023-02-04 13:31:48','2023-02-04 15:33:02',1010,'incident-new',NULL,1527,'Incident','I1000','Enable'),(1529,'2023-02-04 13:33:03','2023-02-04 15:33:12',1020,'incident-overview',NULL,1527,'Overview','O2000','Enable'),(1530,'2023-02-04 13:34:42','2023-02-04 15:33:21',1030,'sureboard2',NULL,1527,'Issueboard','I3000','Enable'),(1531,'2023-02-04 13:35:27','2023-02-04 15:33:36',1040,'change-request',NULL,1527,'Change Request','C4000','Enable'),(1532,'2023-02-04 13:36:01','2023-02-10 02:25:13',1050,'problem-creation',NULL,1527,'Problem Request','P5000','Enable'),(1534,'2023-02-04 13:56:22','2023-02-04 15:34:07',2010,'Sr_priority2_t',NULL,1533,'Priority','P1000','Enable'),(1535,'2023-02-04 17:12:27','2023-02-04 17:12:27',2020,'Sr_urgency_t',NULL,1533,'Urgency','Su2000','Enable'),(1536,'2023-02-04 17:13:22','2023-02-04 17:13:22',2030,'Sr_impact2_t',NULL,1533,'Impact','Sm3000','Enable'),(1537,'2023-02-04 17:14:01','2023-02-04 17:14:01',2040,'Sr_category2_t',NULL,1533,'Category','Sc4000','Enable'),(1538,'2023-02-04 17:14:31','2023-02-04 17:14:31',2050,'Sr_State_t',NULL,1533,'State','S5000','Enable'),(1539,'2023-02-04 17:15:12','2023-02-09 13:25:27',2070,'Sr_customer_t',NULL,1533,'Customer','c7000','Enable'),(1540,'2023-02-04 17:16:23','2023-02-14 13:15:27',2060,'Sr_Contact_type_t',NULL,1533,'Contact','C6000','Enable'),(1541,'2023-02-04 17:17:22','2023-02-04 17:17:22',2080,'Sr_handler_t',NULL,1533,'Handler','H8000','Enable'),(1543,'2023-02-08 15:07:14','2023-03-01 05:51:41',4010,'sequence',NULL,1542,'Define Sequence','SE1000','Enable'),(1544,'2023-02-16 10:14:33','2023-02-16 10:14:33',4020,'bugtracker',NULL,1542,'Bug Tracker','B1000','Enable'),(1545,'2023-02-16 11:00:25','2023-02-16 11:00:25',4030,'datamanagemennt',NULL,1542,'Data Management','M3000','Enable'),(1550,'2023-03-01 06:10:35','2023-03-01 06:10:35',2090,'projects',NULL,1533,'Projects','P2000','Enable'),(1551,'2023-03-01 07:14:27','2023-03-01 07:14:27',4040,'applysequence',NULL,1542,'Apply Sequence','As3000','Enable'),(1552,'2023-06-05 14:14:21','2023-06-05 14:14:21',2000,'dash','dashboard',0,'dashboard','dashboard','Enable'),(1553,'2023-06-05 14:16:48','2023-06-17 03:53:20',1000,'DashboardTesting',NULL,1552,'dashboard1','dashboard','Enable'),(1554,'2023-06-11 10:55:12','2023-06-11 10:55:12',2000,'Dashtest',NULL,1552,'das2','2000','Enable'),(1555,'2023-10-10 12:50:55','2024-01-19 14:33:06',1000,'project','flag',0,'project','project','Enable'),(1556,'2023-10-11 11:03:39','2023-10-11 11:03:39',4000,'superadmin','King',0,'Super Admin','Super Admin','Enable'),(1557,'2023-10-11 11:04:17','2023-10-11 11:04:17',4100,'extension',NULL,1556,'Code Extension','CodeExtension','Enable'),(1558,'2023-10-25 16:31:26','2023-10-25 16:31:26',5000,'test','tools',0,'Vault','Vault','Enable'),(1559,'2023-10-25 16:32:18','2023-10-25 16:32:18',5001,'Access_Point',NULL,1558,'Access Point','Access Point','Enable'),(1560,'2023-10-25 17:34:39','2023-10-25 17:34:39',6000,'crm','employee-group',0,'CRM','crm','Enable'),(1561,'2023-10-25 17:35:21','2023-10-25 17:35:21',6001,'Calls',NULL,1560,'Calls','Calls','Enable'),(1562,'2023-10-25 17:35:43','2023-10-25 17:35:43',6002,'Campaign',NULL,1560,'Campaign','Campaign','Enable'),(1563,'2023-10-25 17:35:57','2023-10-25 17:35:57',6003,'Company',NULL,1560,'Company','Company','Enable'),(1564,'2023-10-25 17:36:16','2023-10-25 17:36:16',6004,'Contact',NULL,1560,'Contact','Contact','Enable'),(1565,'2023-10-25 17:36:32','2023-10-25 17:36:32',6005,'Dealer',NULL,1560,'Dealer','Dealer','Enable'),(1566,'2023-10-25 17:36:48','2023-10-25 17:36:48',6006,'Deals',NULL,1560,'Deals','Deals','Enable'),(1567,'2023-10-25 17:37:00','2023-10-25 17:37:00',6007,'Documents',NULL,1560,'Documents','Documents','Enable'),(1568,'2023-10-25 17:37:25','2023-10-25 17:37:25',6008,'Leads',NULL,1560,'Leads','Leads','Enable'),(1569,'2023-10-25 17:37:41','2023-10-25 17:37:41',6009,'Meetings',NULL,1560,'Meetings','Meetings','Enable'),(1570,'2023-10-25 17:39:36','2023-10-25 17:39:36',6010,'Product',NULL,1560,'Product','Product','Enable'),(1571,'2023-10-25 17:39:51','2023-10-25 17:39:51',6011,'Tasks',NULL,1560,'Tasks','Tasks','Enable'),(1572,'2023-11-01 18:43:22','2023-11-03 11:42:38',4000,'SequenceGenerator',NULL,1116,'Document Sequence','Document Sequrnce','Enable'),(1574,'2023-12-04 11:53:00','2023-12-04 18:49:58',1000,'Teacher_Registration',NULL,1573,'Teacher Registration','Teacher','Enable'),(1575,'2023-12-04 11:53:15','2023-12-04 18:50:25',1000,'Student_registration',NULL,1573,'Student Registration','Student','Enable'),(1576,'2023-12-04 18:50:53','2023-12-04 18:50:53',3000,'Courses_name',NULL,1573,'course','course','Enable'),(1577,'2024-01-27 15:39:15','2024-03-20 19:46:19',7000,'Transactions','King',0,'Transactions','Transactions','Enable'),(1579,'2024-02-01 16:26:28','2024-02-07 16:03:10',4300,'apiregistery',NULL,1556,'Api Registery','Api Registery','Enable'),(1580,'2024-02-02 10:05:03','2024-02-02 10:05:03',4200,'tokenregistery',NULL,1556,'Token Registery','Token Registery','Enable'),(1582,'2024-02-03 10:25:51','2024-02-03 10:25:51',8000,'test','test',0,'test','test','Enable'),(1588,'2024-02-07 16:03:53','2024-02-07 16:03:53',4400,'survey-form',NULL,1556,'Survey Form','SurveyForm','Enable'),(1593,'2024-02-24 15:02:22','2024-02-24 15:02:22',4500,'datamanage','data-cluster',0,'Data Management','DataManagement','Enable'),(1594,'2024-02-24 15:03:01','2024-02-24 15:03:01',4501,'datamanagement',NULL,1593,'Data Management','DataManagement','Enable'),(1595,'2024-02-24 15:03:34','2024-02-24 15:03:34',4502,'validationrule',NULL,1593,'Validaiton Rule','ValidaitonRule','Enable'),(1596,'2024-02-24 15:03:58','2024-02-24 15:03:58',4503,'mappingrule',NULL,1593,'Mapping Rule','MappingRule','Enable'),(1601,'2024-03-20 19:46:01','2024-03-20 19:46:37',9000,'Masters','data-cluster',0,'Masters','Masters','Enable'); +/*!40000 ALTER TABLE `sec_menu_det` ENABLE KEYS */; + + + +/*!40000 ALTER TABLE `sec_user_group` DISABLE KEYS */; +INSERT INTO `sec_user_group` VALUES (1,NULL,NULL,'add',30,'sysadmin','E',NULL,'2023-03-01 05:54:10'),(41,NULL,'2023-02-28 13:05:54','check',20,'users','Disable',NULL,'2023-02-28 13:30:14'); +/*!40000 ALTER TABLE `sec_user_group` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `sec_user_group_id`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_user_group_id` ( + `next_val` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `sec_user_group_id` DISABLE KEYS */; +INSERT INTO `sec_user_group_id` VALUES (59),(59),(40),(40),(40),(40),(40),(40); +/*!40000 ALTER TABLE `sec_user_group_id` ENABLE KEYS */; + + + +/*!40000 ALTER TABLE `sys_accounts` DISABLE KEYS */; +INSERT INTO `sys_accounts` VALUES (1,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `sys_accounts` ENABLE KEYS */; + + +/*!40000 ALTER TABLE `sec_users` DISABLE KEYS */; +INSERT INTO `sec_users` (`user_id`, `is_complete`, `about`, `accesstype`, `active`, `change_passw`, `checknumber`, `country`, `createby`, `createdate`, `customer_id`, `days_mth`, `dep_string`, `email`, `expiry_date`, `first_login`, `full_name`, `is_blocked`, `lang_code`, `last_pwd_changed_date`, `mob_no`, `no_days_mth`, `notification`, `password1`, `password2`, `password3`, `password4`, `photo`, `photo_name`, `provider`, `pwd_changed_cnt`, `random_no`, `short_name`, `status`, `title`, `updateby`, `updatedate`, `user_passw`, `user_name`, `usr_grp_id`, `working`, `account_id`, `department_code`, `position_code`, `usr_grp`) VALUES (10007307, true, NULL, NULL, true, 'test3', NULL, NULL, NULL, '2024-09-03 19:32:38', NULL, NULL, NULL, 'sysadmin', NULL, NULL, 'sysadmin', false, NULL, '2024-09-03 19:32:38', '1234567890', NULL, NULL, 'admin123', NULL, NULL, NULL, NULL, NULL, NULL, 7, NULL, NULL, NULL, NULL, NULL, NULL, '$2b$10$8iFnL/cKTTmclSD1BZh8UeP0ZKKEzZ2hbTsrRcgy3kMinDRdxN7xe', 'sysadmin', NULL, NULL, 1, NULL, NULL, 1); +/*!40000 ALTER TABLE `sec_users` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `sec_user_sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_user_sessions` ( + `client_ip` varchar(255) NOT NULL, + `session_id` varchar(255) NOT NULL, + `user_id` bigint NOT NULL, + `last_access_date` datetime DEFAULT NULL, + `logintime` datetime DEFAULT NULL, + `logouttime` datetime DEFAULT NULL, + `macid` varchar(255) DEFAULT NULL, + PRIMARY KEY (`client_ip`,`session_id`,`user_id`), + KEY `FKp9jm02b501ugvjvfhas5sskfq` (`user_id`), + CONSTRAINT `FKp9jm02b501ugvjvfhas5sskfq` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `sec_user_sessions` DISABLE KEYS */; +/*!40000 ALTER TABLE `sec_user_sessions` ENABLE KEYS */; + + + + +DROP TABLE IF EXISTS `sec_grp_menu_access`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_grp_menu_access` ( + `menu_item_id` bigint NOT NULL, + `usr_grp` bigint NOT NULL, + `createby` varchar(255) DEFAULT NULL, + `created_at` datetime DEFAULT NULL, + `isdisable` varchar(255) DEFAULT NULL, + `item_seq` bigint DEFAULT NULL, + `m_create` varchar(255) DEFAULT NULL, + `m_delete` varchar(255) DEFAULT NULL, + `m_edit` varchar(255) DEFAULT NULL, + `m_query` varchar(255) DEFAULT NULL, + `m_visible` varchar(255) DEFAULT NULL, + `main_menu_action_name` varchar(255) DEFAULT NULL, + `main_menu_icon_name` varchar(255) DEFAULT NULL, + `menu_id` bigint DEFAULT NULL, + `menu_item_desc` varchar(255) DEFAULT NULL, + `mexport` varchar(255) DEFAULT NULL, + `module_name` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `updateby` varchar(255) DEFAULT NULL, + `updated_at` datetime DEFAULT NULL, + PRIMARY KEY (`menu_item_id`,`usr_grp`), + KEY `FKtj8mtsrhc4m4acbrvjnnyvglm` (`usr_grp`), + CONSTRAINT `FKmkev6w9umgp6fg2afatibhq1x` FOREIGN KEY (`menu_item_id`) REFERENCES `sec_menu_det` (`menu_item_id`), + CONSTRAINT `FKtj8mtsrhc4m4acbrvjnnyvglm` FOREIGN KEY (`usr_grp`) REFERENCES `sec_user_group` (`usr_grp`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + +/*!40000 ALTER TABLE `sec_grp_menu_access` DISABLE KEYS */; +INSERT INTO `sec_grp_menu_access` VALUES (1116,41,NULL,'2024-01-17 18:56:05','true',3000,'true','true','true','true','true','security','lock',0,'Security','true','sec3000','Enable',NULL,'2024-01-17 18:56:05'),(1117,41,NULL,'2024-01-17 18:56:07','true',3010,'true','true','true','true','true','usermaintance',NULL,1116,'User Maintance','true','U1000','Enable',NULL,'2024-01-17 18:56:07'),(1118,41,NULL,'2024-01-17 18:56:11','true',3020,'true','true','true','true','true','usergrpmaintance',NULL,1116,'User Group Maintance','true','U2000','Enable',NULL,'2024-01-17 18:56:11'),(1523,41,NULL,'2024-01-17 18:56:14','true',3030,'true','true','true','true','true','menumaintance',NULL,1116,'Menu Maintance','true','M3000','Enable',NULL,'2024-01-17 18:56:14'),(1524,41,NULL,'2024-01-17 18:56:16','true',3040,'true','true','true','true','true','menuaccess',NULL,1116,'Menu Access Control','true','MA4000','Enable',NULL,'2024-01-17 18:56:16'),(1525,41,NULL,'2024-01-17 18:56:18','true',3050,'true','true','true','true','true','systemparameters',NULL,1116,'System Parameters','true','SP5000','Enable',NULL,'2024-01-17 18:56:18'),(1526,41,NULL,'2024-01-17 18:56:19','true',3060,'true','true','true','true','true','accesstype',NULL,1116,'Access Type','true','A6000','Enable',NULL,'2024-01-17 18:56:19'),(1572,41,NULL,'2024-01-17 18:56:21','true',4000,'true','true','true','true','true','SequenceGenerator',NULL,1116,'Document Sequence','true','Document Sequrnce','Enable',NULL,'2024-01-17 18:56:21'),(1577,1,NULL,'2024-01-27 15:40:46','true',7000,'true','true','true','true','true','Transactions','King',0,'Transactions','true','Transactions','Enable',NULL,'2024-01-27 15:40:46'),(1601,1,NULL,'2024-03-20 20:06:50','true',9000,'true','true','true','true','true','Masters','data-cluster',0,'Masters','true','Masters','Enable',NULL,'2024-03-20 20:06:50'); +/*!40000 ALTER TABLE `sec_grp_menu_access` ENABLE KEYS */; + + + + +DROP TABLE IF EXISTS `sec_users_sequencs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_users_sequencs` ( + `next_val` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `sec_users_sequencs` DISABLE KEYS */; +INSERT INTO `sec_users_sequencs` VALUES (10007321),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300); +/*!40000 ALTER TABLE `sec_users_sequencs` ENABLE KEYS */; + + + + +DROP TABLE IF EXISTS `sec_workspace`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_workspace` ( + `id` int NOT NULL AUTO_INCREMENT, + `account_id` bigint DEFAULT NULL, + `created_at` datetime NOT NULL, + `created_by` bigint DEFAULT NULL, + `updated_at` datetime NOT NULL, + `updated_by` bigint DEFAULT NULL, + `is_active` varchar(255) DEFAULT NULL, + `description` varchar(255) DEFAULT NULL, + `is_default` varchar(255) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + `owner_id` varchar(255) DEFAULT NULL, + `project_id` int DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +DROP TABLE IF EXISTS `sec_workspace_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_workspace_users` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `account_id` bigint DEFAULT NULL, + `created_at` datetime NOT NULL, + `created_by` bigint DEFAULT NULL, + `updated_at` datetime NOT NULL, + `updated_by` bigint DEFAULT NULL, + `project_id` int DEFAULT NULL, + `user_id` bigint DEFAULT NULL, + `user_name` varchar(255) DEFAULT NULL, + `user_role` varchar(255) DEFAULT NULL, + `worksapce_id` int NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `secuser_roles` DISABLE KEYS */; +INSERT INTO `secuser_roles` VALUES (10007307,1); +/*!40000 ALTER TABLE `secuser_roles` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `sys_accounts_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_accounts_users` ( + `sys_accounts_id` bigint NOT NULL, + `users_user_id` bigint NOT NULL, + UNIQUE KEY `UK_8dxppqkque5ehofdy83bntgks` (`users_user_id`), + KEY `FKs9o1t4hyiyq2y330p0d2evf2a` (`sys_accounts_id`), + CONSTRAINT `FKdkc60wy8v55ylspegueinngjx` FOREIGN KEY (`users_user_id`) REFERENCES `sec_users` (`user_id`), + CONSTRAINT `FKs9o1t4hyiyq2y330p0d2evf2a` FOREIGN KEY (`sys_accounts_id`) REFERENCES `sys_accounts` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `sys_accounts_users` DISABLE KEYS */; +/*!40000 ALTER TABLE `sys_accounts_users` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `user_list`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_list` ( + `id` bigint NOT NULL, + `about` varchar(255) DEFAULT NULL, + `account_id` varchar(255) DEFAULT NULL, + `address1` varchar(255) DEFAULT NULL, + `address2` varchar(255) DEFAULT NULL, + `checknumber` varchar(255) DEFAULT NULL, + `company` varchar(255) DEFAULT NULL, + `country` varchar(255) DEFAULT NULL, + `created_at` varchar(255) DEFAULT NULL, + `created_by` varchar(255) DEFAULT NULL, + `default_customer_id` varchar(255) DEFAULT NULL, + `department` varchar(255) DEFAULT NULL, + `dob` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `enable_beta_testing` bit(1) NOT NULL, + `enable_renewal` bit(1) NOT NULL, + `firstname` varchar(255) DEFAULT NULL, + `fullname` varchar(255) DEFAULT NULL, + `gender` varchar(255) DEFAULT NULL, + `is_active` bit(1) NOT NULL, + `is_blocked` bit(1) NOT NULL, + `lastname` varchar(255) DEFAULT NULL, + `managing_work` varchar(255) DEFAULT NULL, + `menu_group` int NOT NULL, + `name` varchar(255) DEFAULT NULL, + `other_roles` varchar(255) DEFAULT NULL, + `pancard` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + `photos` varchar(255) DEFAULT NULL, + `postal` varchar(255) DEFAULT NULL, + `role` varchar(255) DEFAULT NULL, + `secret_answer` varchar(255) DEFAULT NULL, + `secret_question` varchar(255) DEFAULT NULL, + `security_provider_id` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `updated_at` varchar(255) DEFAULT NULL, + `updated_by` varchar(255) DEFAULT NULL, + `user_id` varchar(255) DEFAULT NULL, + `username` varchar(255) DEFAULT NULL, + `working` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `user_list` DISABLE KEYS */; +/*!40000 ALTER TABLE `user_list` ENABLE KEYS */; + + + + +DROP TABLE IF EXISTS `userloginhist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `userloginhist` ( + `create_by` varchar(255) DEFAULT NULL, + `create_date` datetime DEFAULT NULL, + `expiry_reminder` bigint DEFAULT NULL, + `last_login_date` datetime DEFAULT NULL, + `last_password_chg_date` datetime DEFAULT NULL, + `last_password_fail_no` bigint DEFAULT NULL, + `update_by` varchar(255) DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + `user_id` bigint NOT NULL, + PRIMARY KEY (`user_id`), + CONSTRAINT `FK2a2xifc15js82mjl20honhdfr` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +DROP TABLE IF EXISTS `userpasswlog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `userpasswlog` ( + `create_date` datetime NOT NULL, + `user_id` bigint NOT NULL, + `user_passw` varchar(255) NOT NULL, + `create_by` varchar(255) DEFAULT NULL, + `update_by` varchar(255) DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + PRIMARY KEY (`create_date`,`user_id`,`user_passw`), + KEY `FKpd759n25auh4bw5ri0xikikia` (`user_id`), + CONSTRAINT `FKpd759n25auh4bw5ri0xikikia` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `userpasswlog` DISABLE KEYS */; +/*!40000 ALTER TABLE `userpasswlog` ENABLE KEYS */; + + + + + +DROP TABLE IF EXISTS `dashboard`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dashboard` ( + `id` int NOT NULL AUTO_INCREMENT, + `account_id` bigint DEFAULT NULL, + `created_at` datetime NOT NULL, + `created_by` bigint DEFAULT NULL, + `updated_at` datetime NOT NULL, + `updated_by` bigint DEFAULT NULL, + `extn1` varchar(255) DEFAULT NULL, + `extn10` varchar(255) DEFAULT NULL, + `extn11` varchar(255) DEFAULT NULL, + `extn12` varchar(255) DEFAULT NULL, + `extn13` varchar(255) DEFAULT NULL, + `extn14` varchar(255) DEFAULT NULL, + `extn15` varchar(255) DEFAULT NULL, + `extn2` varchar(255) DEFAULT NULL, + `extn3` varchar(255) DEFAULT NULL, + `extn4` varchar(255) DEFAULT NULL, + `extn5` varchar(255) DEFAULT NULL, + `extn6` varchar(255) DEFAULT NULL, + `extn7` varchar(255) DEFAULT NULL, + `extn8` varchar(255) DEFAULT NULL, + `extn9` varchar(255) DEFAULT NULL, + `isdashboard` bit(1) NOT NULL, + `model` varchar(5000) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `dashboard` DISABLE KEYS */; +INSERT INTO `dashboard` VALUES (1,NULL,'2023-12-04 12:11:04',NULL,'2023-12-04 13:05:56',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_binary '','[{\"charttitle\":\"index1\",\"type\":\"Index\",\"cols\":5,\"rows\":5,\"x\":0,\"y\":0,\"chartid\":3,\"component\":\"Index\",\"name\":\"Index\",\"slices\":false,\"donut\":false,\"chartcolor\":false,\"chartlegend\":false,\"showlabel\":false,\"Read Only\":false,\"selectedIcon\":\"IconData(U+0EE2A)\",\"charturl\":\"\",\"chartparameter\":\"\",\"datasource\":\"Default\"},{\"charttitle\":\"Index2\",\"type\":\"Index\",\"cols\":5,\"rows\":5,\"x\":0,\"y\":0,\"chartid\":4,\"component\":\"Index\",\"name\":\"Index\"},{\"charttitle\":\"Index3\",\"type\":\"Index\",\"cols\":5,\"rows\":5,\"x\":0,\"y\":0,\"chartid\":5,\"component\":\"Index\",\"name\":\"Index\"},{\"charttitle\":\"Doughnut Chart\",\"type\":\"Doughnut Chart\",\"cols\":5,\"rows\":5,\"x\":0,\"y\":0,\"chartid\":6,\"component\":\"Doughnut Chart\",\"name\":\"Doughnut Chart\",\"slices\":false,\"donut\":false,\"chartcolor\":false,\"chartlegend\":false,\"showlabel\":false,\"Read Only\":false,\"charturl\":\"http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3\",\"chartparameter\":\"\",\"datasource\":\"Default\",\"selectedIcon\":\"IconData(U+0EE29)\"},{\"cols\": 4, \"rows\": 5, \"x\": 0, \"y\": 0, \"chartid\": 1, \"name\": \"Line Chart\", \"fieldName\": null, \"showlabel\": true, \"chartcolor\": null, \"chartlegend\": true, \"charturl\": \"http://43.205.154.152:30179/entityBuilder/Gaurav_testing\",\"xAxis\": \"name\",\"donut\": null, \"chartparameter\": null, \"datastore\": null,\"datasource\": null,\"id\": null,\"slices\": null,\"yAxis\": [\"pincode\"],\"charttitle\": \"Live Details\"}]','myfirstdashboard'); +/*!40000 ALTER TABLE `dashboard` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `dashboard_builder_t`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dashboard_builder_t` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `dashboardname` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `dashboard_builder_t` DISABLE KEYS */; +/*!40000 ALTER TABLE `dashboard_builder_t` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `dashboard_schedule_t`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dashboard_schedule_t` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `attachment` varchar(255) DEFAULT NULL, + `cc` varchar(255) DEFAULT NULL, + `cron` varchar(255) DEFAULT NULL, + `end_time` datetime DEFAULT NULL, + `every` varchar(255) DEFAULT NULL, + `gateway` varchar(255) DEFAULT NULL, + `gatewaydone` varchar(255) DEFAULT NULL, + `replacement_string` varchar(255) DEFAULT NULL, + `send_to` varchar(255) DEFAULT NULL, + `start_time` datetime DEFAULT NULL, + `template` varchar(255) DEFAULT NULL, + `type` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `dashboard_schedule_t` DISABLE KEYS */; +/*!40000 ALTER TABLE `dashboard_schedule_t` ENABLE KEYS */; + + + +DROP TABLE IF EXISTS `dashboardaxis`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `dashboardaxis` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `april` varchar(255) DEFAULT NULL, + `feb` varchar(255) DEFAULT NULL, + `jan` varchar(255) DEFAULT NULL, + `march` varchar(255) DEFAULT NULL, + `may` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `dashboardaxis` DISABLE KEYS */; +INSERT INTO `dashboardaxis` VALUES (1,'5','10','25','3',NULL),(3,'5000','15000','10000','30000',NULL),(4,'5000','15000','10000','30000',NULL),(5,'5000','15000','5','30000',NULL),(6,'5000','15000','10000','30000','2000'),(7,'23','20','25','30','20'),(8,'23','20','25','30','99'),(9,'23','20','25','30','20'); +/*!40000 ALTER TABLE `dashboardaxis` ENABLE KEYS */; + + + +/*!40000 ALTER TABLE `system_paramaters` DISABLE KEYS */; +INSERT INTO `system_paramaters` VALUES (1,'test1',0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,_binary '',NULL,0,0,0,NULL,NULL,NULL,0,NULL,0,0,0,NULL,NULL,NULL,NULL,0,0); +/*!40000 ALTER TABLE `system_paramaters` ENABLE KEYS */; + + +DROP TABLE IF EXISTS `sys_param_upload`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_param_upload` ( + `attachment_id` int NOT NULL, + `attachment` longblob, + `attachment_filename` varchar(255) DEFAULT NULL, + `attachment_type` varchar(255) DEFAULT NULL, + `cancel_status` varchar(255) NOT NULL, + `external_flag` varchar(255) DEFAULT NULL, + `updated_by` varchar(255) DEFAULT NULL, + `sys_param_entity_id` int DEFAULT NULL, + PRIMARY KEY (`attachment_id`), + KEY `FKl1h7bcgpr1y10ydiqw849vq99` (`sys_param_entity_id`), + CONSTRAINT `FKl1h7bcgpr1y10ydiqw849vq99` FOREIGN KEY (`sys_param_entity_id`) REFERENCES `system_paramaters` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + + + +/*!40000 ALTER TABLE `sys_param_upload` DISABLE KEYS */; +/*!40000 ALTER TABLE `sys_param_upload` ENABLE KEYS */; + + +-- Dump completed on 2024-01-27 15:45:01 \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/hs_err_pid6816.log b/pro103ab-back-b/authsec_springboot/backend/hs_err_pid6816.log new file mode 100644 index 0000000..4aa7edd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/hs_err_pid6816.log @@ -0,0 +1,857 @@ +# +# There is insufficient memory for the Java Runtime Environment to continue. +# Native memory allocation (mmap) failed to map 258998272 bytes for G1 virtual space +# Possible reasons: +# The system is out of physical RAM or swap space +# The process is running with CompressedOops enabled, and the Java Heap may be blocking the growth of the native heap +# Possible solutions: +# Reduce memory load on the system +# Increase physical memory or swap space +# Check if swap backing store is full +# Decrease Java heap size (-Xmx/-Xms) +# Decrease number of Java threads +# Decrease Java thread stack sizes (-Xss) +# Set larger code cache with -XX:ReservedCodeCacheSize= +# JVM is running with Unscaled Compressed Oops mode in which the Java heap is +# placed in the first 4GB address space. The Java Heap base address is the +# maximum limit for the native heap growth. Please use -XX:HeapBaseMinAddress +# to set the Java Heap base and to place the Java Heap above 4GB virtual address. +# This output file may be truncated or incomplete. +# +# Out of Memory Error (./open/src/hotspot/os/windows/os_windows.cpp:3321), pid=6816, tid=7380 +# +# JRE version: OpenJDK Runtime Environment (15.0.2+7) (build 15.0.2+7-27) +# Java VM: OpenJDK 64-Bit Server VM (15.0.2+7-27, mixed mode, tiered, compressed oops, g1 gc, windows-amd64) +# No core dump will be written. Minidumps are not enabled by default on client versions of Windows +# + +--------------- S U M M A R Y ------------ + +Command Line: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52447 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost -Dspring.jmx.enabled=true -Dspring.application.admin.enabled=true -XX:TieredStopAtLevel=1 -Dspring.boot.project.name=backend -Dfile.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages com.realnet.RealNetApp --spring.output.ansi.enabled=always + +Host: Intel(R) Core(TM) i5-10210U CPU @ 1.60GHz, 8 cores, 7G, Windows 10 , 64 bit Build 19041 (10.0.19041.1889) +Time: Sat Oct 1 12:47:37 2022 India Standard Time elapsed time: 7190.426722 seconds (0d 1h 59m 50s) + +--------------- T H R E A D --------------- + +Current thread (0x0000022579a517b0): VMThread "VM Thread" [stack: 0x0000005178000000,0x0000005178100000] [id=7380] + +Stack: [0x0000005178000000,0x0000005178100000] +[error occurred during error reporting (printing stack bounds), id 0xc0000005, EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x00000225000010ad] + +Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code) +V [jvm.dll+0x62ae9a] +V [jvm.dll+0x7817a9] +V [jvm.dll+0x782f03] +V [jvm.dll+0x7834c5] +V [jvm.dll+0x78347b] +V [jvm.dll+0x62a2b9] +V [jvm.dll+0x62aa88] +C [ntdll.dll+0xa235f] +C [ntdll.dll+0x514a4] +C [ntdll.dll+0xa0e8e] +C 0x00000225000010ad + +VM_Operation (0x000000517a7fe270): G1CollectForAllocation, mode: safepoint, requested by thread 0x000002250f7af090 + + +--------------- P R O C E S S --------------- + +Threads class SMR info: +_java_thread_list=0x0000022511157d10, length=35, elements={ +0x0000022579a59180, 0x000002257a295010, 0x000002257a282db0, 0x000002257a283770, +0x000002257a2c27b0, 0x000002257a2c59e0, 0x000002257a2b1240, 0x00000225799ec0f0, +0x000002257a525cf0, 0x000002257ae597c0, 0x000002257ae64180, 0x000002257ae61b20, +0x000002257aed5cb0, 0x000002257d9eeff0, 0x000002257d9efe60, 0x000002257d9ece40, +0x000002257d9ed310, 0x000002257d9ee180, 0x000002257d9ed7e0, 0x000002250f7af090, +0x000002250f7b1710, 0x000002250f7afa30, 0x000002250f7b0d70, 0x000002250f7aff00, +0x000002250f7b1be0, 0x000002250f7b03d0, 0x000002250f7ad3b0, 0x000002250f7ac070, +0x000002250f7b20b0, 0x000002250f7b2580, 0x000002250f7ac540, 0x000002250f7b1240, +0x000002250f7b2f20, 0x000002250f7b08a0, 0x00000225798d3150 +} + +Java Threads: ( => current thread ) + 0x0000022579a59180 JavaThread "Reference Handler" daemon [_thread_blocked, id=13212, stack(0x0000005178100000,0x0000005178200000)] + 0x000002257a295010 JavaThread "Finalizer" daemon [_thread_blocked, id=2780, stack(0x0000005178200000,0x0000005178300000)] + 0x000002257a282db0 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2844, stack(0x0000005178300000,0x0000005178400000)] + 0x000002257a283770 JavaThread "Attach Listener" daemon [_thread_blocked, id=5488, stack(0x0000005178400000,0x0000005178500000)] + 0x000002257a2c27b0 JavaThread "Service Thread" daemon [_thread_blocked, id=4264, stack(0x0000005178500000,0x0000005178600000)] + 0x000002257a2c59e0 JavaThread "C1 CompilerThread0" daemon [_thread_blocked, id=15236, stack(0x0000005178600000,0x0000005178700000)] + 0x000002257a2b1240 JavaThread "Sweeper thread" daemon [_thread_blocked, id=17268, stack(0x0000005178700000,0x0000005178800000)] + 0x00000225799ec0f0 JavaThread "Common-Cleaner" daemon [_thread_blocked, id=4196, stack(0x0000005178800000,0x0000005178900000)] + 0x000002257a525cf0 JavaThread "Notification Thread" daemon [_thread_blocked, id=12716, stack(0x0000005178900000,0x0000005178a00000)] + 0x000002257ae597c0 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=5236, stack(0x0000005178a00000,0x0000005178b00000)] + 0x000002257ae64180 JavaThread "RMI TCP Accept-52447" daemon [_thread_in_native, id=14720, stack(0x0000005178b00000,0x0000005178c00000)] + 0x000002257ae61b20 JavaThread "RMI TCP Accept-0" daemon [_thread_in_native, id=9868, stack(0x0000005178c00000,0x0000005178d00000)] + 0x000002257aed5cb0 JavaThread "RMI Scheduler(0)" daemon [_thread_blocked, id=10268, stack(0x0000005178f00000,0x0000005179000000)] + 0x000002257d9eeff0 JavaThread "mysql-cj-abandoned-connection-cleanup" daemon [_thread_blocked, id=4324, stack(0x0000005179900000,0x0000005179a00000)] + 0x000002257d9efe60 JavaThread "HikariPool-1 housekeeper" daemon [_thread_blocked, id=14616, stack(0x000000517a300000,0x000000517a400000)] + 0x000002257d9ece40 JavaThread "Catalina-utility-1" [_thread_blocked, id=16064, stack(0x000000517a400000,0x000000517a500000)] + 0x000002257d9ed310 JavaThread "Catalina-utility-2" [_thread_blocked, id=5460, stack(0x000000517a500000,0x000000517a600000)] + 0x000002257d9ee180 JavaThread "container-0" [_thread_blocked, id=9248, stack(0x000000517a600000,0x000000517a700000)] + 0x000002257d9ed7e0 JavaThread "Live Reload Server" daemon [_thread_in_native, id=1116, stack(0x000000517a800000,0x000000517a900000)] + 0x000002250f7af090 JavaThread "File Watcher" daemon [_thread_blocked, id=16340, stack(0x000000517a700000,0x000000517a800000)] + 0x000002250f7b1710 JavaThread "http-nio-9191-BlockPoller" daemon [_thread_blocked, id=16692, stack(0x000000517a900000,0x000000517aa00000)] + 0x000002250f7afa30 JavaThread "http-nio-9191-exec-1" daemon [_thread_blocked, id=5556, stack(0x000000517aa00000,0x000000517ab00000)] + 0x000002250f7b0d70 JavaThread "http-nio-9191-exec-2" daemon [_thread_blocked, id=14708, stack(0x000000517ab00000,0x000000517ac00000)] + 0x000002250f7aff00 JavaThread "http-nio-9191-exec-3" daemon [_thread_blocked, id=13008, stack(0x000000517ac00000,0x000000517ad00000)] + 0x000002250f7b1be0 JavaThread "http-nio-9191-exec-4" daemon [_thread_blocked, id=13096, stack(0x000000517ad00000,0x000000517ae00000)] + 0x000002250f7b03d0 JavaThread "http-nio-9191-exec-5" daemon [_thread_blocked, id=14108, stack(0x000000517ae00000,0x000000517af00000)] + 0x000002250f7ad3b0 JavaThread "http-nio-9191-exec-6" daemon [_thread_blocked, id=8704, stack(0x000000517af00000,0x000000517b000000)] + 0x000002250f7ac070 JavaThread "http-nio-9191-exec-7" daemon [_thread_blocked, id=4628, stack(0x000000517b000000,0x000000517b100000)] + 0x000002250f7b20b0 JavaThread "http-nio-9191-exec-8" daemon [_thread_blocked, id=5404, stack(0x000000517b100000,0x000000517b200000)] + 0x000002250f7b2580 JavaThread "http-nio-9191-exec-9" daemon [_thread_blocked, id=10000, stack(0x000000517b200000,0x000000517b300000)] + 0x000002250f7ac540 JavaThread "http-nio-9191-exec-10" daemon [_thread_blocked, id=4308, stack(0x000000517b300000,0x000000517b400000)] + 0x000002250f7b1240 JavaThread "http-nio-9191-ClientPoller" daemon [_thread_blocked, id=13388, stack(0x000000517b400000,0x000000517b500000)] + 0x000002250f7b2f20 JavaThread "http-nio-9191-Acceptor" daemon [_thread_in_native, id=13888, stack(0x000000517b500000,0x000000517b600000)] + 0x000002250f7b08a0 JavaThread "DestroyJavaVM" [_thread_blocked, id=6624, stack(0x0000005177a00000,0x0000005177b00000)] + 0x00000225798d3150 JavaThread "HikariPool-1 connection closer" daemon [_thread_blocked, id=4052, stack(0x0000005178e00000,0x0000005178f00000)] + +Other Threads: +=>0x0000022579a517b0 VMThread "VM Thread" [stack: 0x0000005178000000,0x0000005178100000] [id=7380] + 0x000002256e840090 WatcherThread [stack: 0x0000005178d00000,0x0000005178e00000] [id=3596] + 0x000002256e87e610 GCTaskThread "GC Thread#0" [stack: 0x0000005177b00000,0x0000005177c00000] [id=14008] + 0x000002257af52e90 GCTaskThread "GC Thread#1" [stack: 0x0000005179200000,0x0000005179300000] [id=9240] + 0x000002257af554d0 GCTaskThread "GC Thread#2" [stack: 0x0000005179300000,0x0000005179400000] [id=5240] + 0x000002257af51b70 GCTaskThread "GC Thread#3" [stack: 0x0000005179a00000,0x0000005179b00000] [id=1644] + 0x000002257af531c0 GCTaskThread "GC Thread#4" [stack: 0x0000005179b00000,0x0000005179c00000] [id=16524] + 0x000002257af551a0 GCTaskThread "GC Thread#5" [stack: 0x0000005179c00000,0x0000005179d00000] [id=3664] + 0x000002257af51ea0 GCTaskThread "GC Thread#6" [stack: 0x0000005179d00000,0x0000005179e00000] [id=16160] + 0x000002257af534f0 GCTaskThread "GC Thread#7" [stack: 0x0000005179e00000,0x0000005179f00000] [id=14136] + 0x000002256e88fa80 ConcurrentGCThread "G1 Main Marker" [stack: 0x0000005177c00000,0x0000005177d00000] [id=2952] + 0x000002256e8906f0 ConcurrentGCThread "G1 Conc#0" [stack: 0x0000005177d00000,0x0000005177e00000] [id=6148] + 0x000002257af54b40 ConcurrentGCThread "G1 Conc#1" [stack: 0x0000005179f00000,0x000000517a000000] [id=8824] + 0x000002256e8f8c60 ConcurrentGCThread "G1 Refine#0" [stack: 0x0000005177e00000,0x0000005177f00000] [id=2460] + 0x000002257b6ef9f0 ConcurrentGCThread "G1 Refine#1" [stack: 0x0000005179400000,0x0000005179500000] [id=2916] + 0x000002257b6efd50 ConcurrentGCThread "G1 Refine#2" [stack: 0x0000005179500000,0x0000005179600000] [id=15184] + 0x000002257b6f00b0 ConcurrentGCThread "G1 Refine#3" [stack: 0x0000005179600000,0x0000005179700000] [id=10480] + 0x000002250f535480 ConcurrentGCThread "G1 Refine#4" [stack: 0x0000005177700000,0x0000005177800000] [id=8708] + 0x000002250f536200 ConcurrentGCThread "G1 Refine#5" [stack: 0x0000005177800000,0x0000005177900000] [id=2300] + 0x000002250f534dc0 ConcurrentGCThread "G1 Refine#6" [stack: 0x0000005177900000,0x0000005177a00000] [id=7800] + 0x000002256e8f98e0 ConcurrentGCThread "G1 Young RemSet Sampling" [stack: 0x0000005177f00000,0x0000005178000000] [id=6548] + +Threads with active compile tasks: + +VM state: at safepoint (normal execution) + +VM Mutex/Monitor currently owned by a thread: ([mutex/lock_event]) +[0x000002256e83a3b0] Threads_lock - owner thread: 0x0000022579a517b0 +[0x000002256e839ab0] Heap_lock - owner thread: 0x000002250f7af090 + +Heap address: 0x0000000083000000, size: 2000 MB, Compressed Oops mode: 32-bit +CDS disabled. +Compressed class space mapped at: 0x0000000100000000-0x0000000140000000, size: 1073741824 +Narrow klass base: 0x0000000000000000, Narrow klass shift: 3, Narrow klass range: 0x140000000 + +GC Precious Log: + CPUs: 8 total, 8 available + Memory: 7995M + Large Page Support: Disabled + NUMA Support: Disabled + Compressed Oops: Enabled (32-bit) + Heap Region Size: 1M + Heap Min Capacity: 8M + Heap Initial Capacity: 126M + Heap Max Capacity: 2000M + Pre-touch: Disabled + Parallel Workers: 8 + Concurrent Workers: 2 + Concurrent Refinement Workers: 8 + Periodic GC: Disabled + +Heap: + garbage-first heap total 505856K, used 109623K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K + +Heap Regions: E=young(eden), S=young(survivor), O=old, HS=humongous(starts), HC=humongous(continues), CS=collection set, F=free, OA=open archive, CA=closed archive, TAMS=top-at-mark-start (previous, next) +| 0|0x0000000083000000, 0x0000000083100000, 0x0000000083100000|100%|HS| |TAMS 0x0000000083100000, 0x0000000083000000| Complete +| 1|0x0000000083100000, 0x0000000083200000, 0x0000000083200000|100%| O| |TAMS 0x0000000083200000, 0x0000000083100000| Untracked +| 2|0x0000000083200000, 0x0000000083300000, 0x0000000083300000|100%| O| |TAMS 0x0000000083300000, 0x0000000083200000| Untracked +| 3|0x0000000083300000, 0x0000000083400000, 0x0000000083400000|100%| O| |TAMS 0x0000000083400000, 0x0000000083300000| Untracked +| 4|0x0000000083400000, 0x0000000083500000, 0x0000000083500000|100%| O| |TAMS 0x0000000083500000, 0x0000000083400000| Untracked +| 5|0x0000000083500000, 0x0000000083600000, 0x0000000083600000|100%| O| |TAMS 0x0000000083600000, 0x0000000083500000| Untracked +| 6|0x0000000083600000, 0x0000000083700000, 0x0000000083700000|100%| O| |TAMS 0x0000000083700000, 0x0000000083600000| Untracked +| 7|0x0000000083700000, 0x0000000083800000, 0x0000000083800000|100%| O| |TAMS 0x0000000083800000, 0x0000000083700000| Untracked +| 8|0x0000000083800000, 0x0000000083900000, 0x0000000083900000|100%| O| |TAMS 0x0000000083900000, 0x0000000083800000| Untracked +| 9|0x0000000083900000, 0x00000000839ffff8, 0x0000000083a00000| 99%| O| |TAMS 0x0000000083900000, 0x0000000083900000| Untracked +| 10|0x0000000083a00000, 0x0000000083b00000, 0x0000000083b00000|100%| O| |TAMS 0x0000000083b00000, 0x0000000083a00000| Untracked +| 11|0x0000000083b00000, 0x0000000083c00000, 0x0000000083c00000|100%| O| |TAMS 0x0000000083c00000, 0x0000000083b00000| Untracked +| 12|0x0000000083c00000, 0x0000000083d00000, 0x0000000083d00000|100%| O| |TAMS 0x0000000083d00000, 0x0000000083c00000| Untracked +| 13|0x0000000083d00000, 0x0000000083e00000, 0x0000000083e00000|100%| O| |TAMS 0x0000000083e00000, 0x0000000083d00000| Untracked +| 14|0x0000000083e00000, 0x0000000083f00000, 0x0000000083f00000|100%| O| |TAMS 0x0000000083f00000, 0x0000000083e00000| Untracked +| 15|0x0000000083f00000, 0x0000000084000000, 0x0000000084000000|100%| O| |TAMS 0x0000000083f00000, 0x0000000083f00000| Untracked +| 16|0x0000000084000000, 0x0000000084100000, 0x0000000084100000|100%| O| |TAMS 0x0000000084000000, 0x0000000084000000| Untracked +| 17|0x0000000084100000, 0x0000000084200000, 0x0000000084200000|100%| O| |TAMS 0x0000000084100000, 0x0000000084100000| Untracked +| 18|0x0000000084200000, 0x0000000084201800, 0x0000000084300000| 0%| O| |TAMS 0x0000000084200000, 0x0000000084200000| Untracked +| 19|0x0000000084300000, 0x0000000084300000, 0x0000000084400000| 0%| F| |TAMS 0x0000000084300000, 0x0000000084300000| Untracked +| 20|0x0000000084400000, 0x0000000084400000, 0x0000000084500000| 0%| F| |TAMS 0x0000000084400000, 0x0000000084400000| Untracked +| 21|0x0000000084500000, 0x0000000084500000, 0x0000000084600000| 0%| F| |TAMS 0x0000000084500000, 0x0000000084500000| Untracked +| 22|0x0000000084600000, 0x0000000084700000, 0x0000000084700000|100%| O| |TAMS 0x0000000084700000, 0x0000000084600000| Untracked +| 23|0x0000000084700000, 0x0000000084800000, 0x0000000084800000|100%| O| |TAMS 0x0000000084800000, 0x0000000084700000| Untracked +| 24|0x0000000084800000, 0x0000000084800000, 0x0000000084900000| 0%| F| |TAMS 0x0000000084800000, 0x0000000084800000| Untracked +| 25|0x0000000084900000, 0x0000000084900000, 0x0000000084a00000| 0%| F| |TAMS 0x0000000084900000, 0x0000000084900000| Untracked +| 26|0x0000000084a00000, 0x0000000084b00000, 0x0000000084b00000|100%| O| |TAMS 0x0000000084b00000, 0x0000000084a00000| Untracked +| 27|0x0000000084b00000, 0x0000000084b00000, 0x0000000084c00000| 0%| F| |TAMS 0x0000000084b00000, 0x0000000084b00000| Untracked +| 28|0x0000000084c00000, 0x0000000084d00000, 0x0000000084d00000|100%| O| |TAMS 0x0000000084d00000, 0x0000000084c00000| Untracked +| 29|0x0000000084d00000, 0x0000000084d00000, 0x0000000084e00000| 0%| F| |TAMS 0x0000000084d00000, 0x0000000084d00000| Untracked +| 30|0x0000000084e00000, 0x0000000084f00000, 0x0000000084f00000|100%| O| |TAMS 0x0000000084f00000, 0x0000000084e00000| Untracked +| 31|0x0000000084f00000, 0x0000000084f00000, 0x0000000085000000| 0%| F| |TAMS 0x0000000084f00000, 0x0000000084f00000| Untracked +| 32|0x0000000085000000, 0x0000000085100000, 0x0000000085100000|100%| O| |TAMS 0x0000000085100000, 0x0000000085000000| Untracked +| 33|0x0000000085100000, 0x0000000085200000, 0x0000000085200000|100%| O| |TAMS 0x0000000085200000, 0x0000000085100000| Untracked +| 34|0x0000000085200000, 0x0000000085300000, 0x0000000085300000|100%| O| |TAMS 0x0000000085300000, 0x0000000085200000| Untracked +| 35|0x0000000085300000, 0x0000000085400000, 0x0000000085400000|100%| O| |TAMS 0x0000000085400000, 0x0000000085300000| Untracked +| 36|0x0000000085400000, 0x0000000085500000, 0x0000000085500000|100%| O| |TAMS 0x0000000085500000, 0x0000000085400000| Untracked +| 37|0x0000000085500000, 0x0000000085600000, 0x0000000085600000|100%| O| |TAMS 0x0000000085600000, 0x0000000085500000| Untracked +| 38|0x0000000085600000, 0x0000000085700000, 0x0000000085700000|100%| O| |TAMS 0x0000000085700000, 0x0000000085600000| Untracked +| 39|0x0000000085700000, 0x0000000085800000, 0x0000000085800000|100%| O| |TAMS 0x0000000085800000, 0x0000000085700000| Untracked +| 40|0x0000000085800000, 0x0000000085900000, 0x0000000085900000|100%| O| |TAMS 0x0000000085900000, 0x0000000085800000| Untracked +| 41|0x0000000085900000, 0x0000000085a00000, 0x0000000085a00000|100%| O| |TAMS 0x0000000085a00000, 0x0000000085900000| Untracked +| 42|0x0000000085a00000, 0x0000000085b00000, 0x0000000085b00000|100%| O| |TAMS 0x0000000085b00000, 0x0000000085a00000| Untracked +| 43|0x0000000085b00000, 0x0000000085c00000, 0x0000000085c00000|100%| O| |TAMS 0x0000000085c00000, 0x0000000085b00000| Untracked +| 44|0x0000000085c00000, 0x0000000085d00000, 0x0000000085d00000|100%| O| |TAMS 0x0000000085d00000, 0x0000000085c00000| Untracked +| 45|0x0000000085d00000, 0x0000000085d00000, 0x0000000085e00000| 0%| F| |TAMS 0x0000000085d00000, 0x0000000085d00000| Untracked +| 46|0x0000000085e00000, 0x0000000085e00000, 0x0000000085f00000| 0%| F| |TAMS 0x0000000085e00000, 0x0000000085e00000| Untracked +| 47|0x0000000085f00000, 0x0000000086000000, 0x0000000086000000|100%| O| |TAMS 0x0000000086000000, 0x0000000085f00000| Untracked +| 48|0x0000000086000000, 0x0000000086100000, 0x0000000086100000|100%| O| |TAMS 0x0000000086100000, 0x0000000086000000| Untracked +| 49|0x0000000086100000, 0x0000000086200000, 0x0000000086200000|100%| O| |TAMS 0x0000000086200000, 0x0000000086100000| Untracked +| 50|0x0000000086200000, 0x0000000086300000, 0x0000000086300000|100%| O| |TAMS 0x0000000086300000, 0x0000000086200000| Untracked +| 51|0x0000000086300000, 0x0000000086400000, 0x0000000086400000|100%| O| |TAMS 0x0000000086400000, 0x0000000086300000| Untracked +| 52|0x0000000086400000, 0x0000000086500000, 0x0000000086500000|100%| O| |TAMS 0x0000000086500000, 0x0000000086400000| Untracked +| 53|0x0000000086500000, 0x0000000086600000, 0x0000000086600000|100%| O| |TAMS 0x0000000086600000, 0x0000000086500000| Untracked +| 54|0x0000000086600000, 0x0000000086700000, 0x0000000086700000|100%| O| |TAMS 0x0000000086700000, 0x0000000086600000| Untracked +| 55|0x0000000086700000, 0x0000000086800000, 0x0000000086800000|100%| O| |TAMS 0x0000000086800000, 0x0000000086700000| Untracked +| 56|0x0000000086800000, 0x0000000086900000, 0x0000000086900000|100%| O| |TAMS 0x0000000086900000, 0x0000000086800000| Untracked +| 57|0x0000000086900000, 0x0000000086a00000, 0x0000000086a00000|100%| O| |TAMS 0x0000000086a00000, 0x0000000086900000| Untracked +| 58|0x0000000086a00000, 0x0000000086a00000, 0x0000000086b00000| 0%| F| |TAMS 0x0000000086a00000, 0x0000000086a00000| Untracked +| 59|0x0000000086b00000, 0x0000000086c00000, 0x0000000086c00000|100%| O| |TAMS 0x0000000086c00000, 0x0000000086b00000| Untracked +| 60|0x0000000086c00000, 0x0000000086d00000, 0x0000000086d00000|100%| O| |TAMS 0x0000000086d00000, 0x0000000086c00000| Untracked +| 61|0x0000000086d00000, 0x0000000086e00000, 0x0000000086e00000|100%| O| |TAMS 0x0000000086e00000, 0x0000000086d00000| Untracked +| 62|0x0000000086e00000, 0x0000000086f00000, 0x0000000086f00000|100%| O| |TAMS 0x0000000086f00000, 0x0000000086e00000| Untracked +| 63|0x0000000086f00000, 0x0000000086f00000, 0x0000000087000000| 0%| F| |TAMS 0x0000000086f00000, 0x0000000086f00000| Untracked +| 64|0x0000000087000000, 0x0000000087100000, 0x0000000087100000|100%| O| |TAMS 0x0000000087100000, 0x0000000087000000| Untracked +| 65|0x0000000087100000, 0x0000000087200000, 0x0000000087200000|100%| O| |TAMS 0x0000000087200000, 0x0000000087100000| Untracked +| 66|0x0000000087200000, 0x0000000087200000, 0x0000000087300000| 0%| F| |TAMS 0x0000000087200000, 0x0000000087200000| Untracked +| 67|0x0000000087300000, 0x0000000087300000, 0x0000000087400000| 0%| F| |TAMS 0x0000000087300000, 0x0000000087300000| Untracked +| 68|0x0000000087400000, 0x0000000087500000, 0x0000000087500000|100%| O| |TAMS 0x0000000087500000, 0x0000000087400000| Untracked +| 69|0x0000000087500000, 0x0000000087600000, 0x0000000087600000|100%| O| |TAMS 0x0000000087600000, 0x0000000087500000| Untracked +| 70|0x0000000087600000, 0x0000000087600000, 0x0000000087700000| 0%| F| |TAMS 0x0000000087600000, 0x0000000087600000| Untracked +| 71|0x0000000087700000, 0x0000000087800000, 0x0000000087800000|100%| O| |TAMS 0x0000000087800000, 0x0000000087700000| Untracked +| 72|0x0000000087800000, 0x0000000087900000, 0x0000000087900000|100%| O| |TAMS 0x0000000087900000, 0x0000000087800000| Untracked +| 73|0x0000000087900000, 0x0000000087a00000, 0x0000000087a00000|100%| O| |TAMS 0x0000000087a00000, 0x0000000087900000| Untracked +| 74|0x0000000087a00000, 0x0000000087b00000, 0x0000000087b00000|100%| O| |TAMS 0x0000000087b00000, 0x0000000087a00000| Untracked +| 75|0x0000000087b00000, 0x0000000087c00000, 0x0000000087c00000|100%| O| |TAMS 0x0000000087c00000, 0x0000000087b00000| Untracked +| 76|0x0000000087c00000, 0x0000000087d00000, 0x0000000087d00000|100%| O| |TAMS 0x0000000087d00000, 0x0000000087c00000| Untracked +| 77|0x0000000087d00000, 0x0000000087e00000, 0x0000000087e00000|100%| O| |TAMS 0x0000000087e00000, 0x0000000087d00000| Untracked +| 78|0x0000000087e00000, 0x0000000087e00000, 0x0000000087f00000| 0%| F| |TAMS 0x0000000087e00000, 0x0000000087e00000| Untracked +| 79|0x0000000087f00000, 0x0000000088000000, 0x0000000088000000|100%| O| |TAMS 0x0000000088000000, 0x0000000087f00000| Untracked +| 80|0x0000000088000000, 0x0000000088100000, 0x0000000088100000|100%| O| |TAMS 0x0000000088100000, 0x0000000088000000| Untracked +| 81|0x0000000088100000, 0x0000000088200000, 0x0000000088200000|100%| O| |TAMS 0x0000000088200000, 0x0000000088100000| Untracked +| 82|0x0000000088200000, 0x0000000088300000, 0x0000000088300000|100%| O| |TAMS 0x0000000088300000, 0x0000000088200000| Untracked +| 83|0x0000000088300000, 0x0000000088400000, 0x0000000088400000|100%| O| |TAMS 0x0000000088400000, 0x0000000088300000| Untracked +| 84|0x0000000088400000, 0x0000000088400000, 0x0000000088500000| 0%| F| |TAMS 0x0000000088400000, 0x0000000088400000| Untracked +| 85|0x0000000088500000, 0x0000000088600000, 0x0000000088600000|100%| O| |TAMS 0x0000000088600000, 0x0000000088500000| Untracked +| 86|0x0000000088600000, 0x0000000088700000, 0x0000000088700000|100%| O| |TAMS 0x0000000088700000, 0x0000000088600000| Untracked +| 87|0x0000000088700000, 0x0000000088700000, 0x0000000088800000| 0%| F| |TAMS 0x0000000088700000, 0x0000000088700000| Untracked +| 88|0x0000000088800000, 0x0000000088900000, 0x0000000088900000|100%| O| |TAMS 0x0000000088900000, 0x0000000088800000| Untracked +| 89|0x0000000088900000, 0x0000000088a00000, 0x0000000088a00000|100%| O| |TAMS 0x0000000088a00000, 0x0000000088900000| Untracked +| 90|0x0000000088a00000, 0x0000000088b00000, 0x0000000088b00000|100%| O| |TAMS 0x0000000088b00000, 0x0000000088a00000| Untracked +| 91|0x0000000088b00000, 0x0000000088c00000, 0x0000000088c00000|100%| O| |TAMS 0x0000000088c00000, 0x0000000088b00000| Untracked +| 92|0x0000000088c00000, 0x0000000088d00000, 0x0000000088d00000|100%| O| |TAMS 0x0000000088d00000, 0x0000000088c00000| Untracked +| 93|0x0000000088d00000, 0x0000000088e00000, 0x0000000088e00000|100%| O| |TAMS 0x0000000088e00000, 0x0000000088d00000| Untracked +| 94|0x0000000088e00000, 0x0000000088f00000, 0x0000000088f00000|100%| O| |TAMS 0x0000000088f00000, 0x0000000088e00000| Untracked +| 95|0x0000000088f00000, 0x0000000089000000, 0x0000000089000000|100%| O| |TAMS 0x0000000089000000, 0x0000000088f00000| Untracked +| 96|0x0000000089000000, 0x0000000089100000, 0x0000000089100000|100%| O| |TAMS 0x0000000089100000, 0x0000000089000000| Untracked +| 97|0x0000000089100000, 0x0000000089200000, 0x0000000089200000|100%| O| |TAMS 0x0000000089200000, 0x0000000089100000| Untracked +| 98|0x0000000089200000, 0x0000000089300000, 0x0000000089300000|100%| O| |TAMS 0x0000000089300000, 0x0000000089200000| Untracked +| 99|0x0000000089300000, 0x0000000089400000, 0x0000000089400000|100%| O| |TAMS 0x0000000089400000, 0x0000000089300000| Untracked +| 100|0x0000000089400000, 0x0000000089500000, 0x0000000089500000|100%| O| |TAMS 0x0000000089500000, 0x0000000089400000| Untracked +| 101|0x0000000089500000, 0x0000000089600000, 0x0000000089600000|100%| O| |TAMS 0x0000000089600000, 0x0000000089500000| Untracked +| 102|0x0000000089600000, 0x0000000089700000, 0x0000000089700000|100%| O| |TAMS 0x0000000089700000, 0x0000000089600000| Untracked +| 103|0x0000000089700000, 0x0000000089800000, 0x0000000089800000|100%| O| |TAMS 0x0000000089800000, 0x0000000089700000| Untracked +| 104|0x0000000089800000, 0x0000000089900000, 0x0000000089900000|100%| O| |TAMS 0x0000000089900000, 0x0000000089800000| Untracked +| 105|0x0000000089900000, 0x0000000089a00000, 0x0000000089a00000|100%| O| |TAMS 0x0000000089a00000, 0x0000000089900000| Untracked +| 106|0x0000000089a00000, 0x0000000089a00000, 0x0000000089b00000| 0%| F| |TAMS 0x0000000089a00000, 0x0000000089a00000| Untracked +| 107|0x0000000089b00000, 0x0000000089b00000, 0x0000000089c00000| 0%| F| |TAMS 0x0000000089b00000, 0x0000000089b00000| Untracked +| 108|0x0000000089c00000, 0x0000000089d00000, 0x0000000089d00000|100%| O| |TAMS 0x0000000089d00000, 0x0000000089c00000| Untracked +| 109|0x0000000089d00000, 0x0000000089e00000, 0x0000000089e00000|100%| O| |TAMS 0x0000000089e00000, 0x0000000089d00000| Untracked +| 110|0x0000000089e00000, 0x0000000089f00000, 0x0000000089f00000|100%| O| |TAMS 0x0000000089f00000, 0x0000000089e00000| Untracked +| 111|0x0000000089f00000, 0x000000008a000000, 0x000000008a000000|100%| O| |TAMS 0x000000008a000000, 0x0000000089f00000| Untracked +| 112|0x000000008a000000, 0x000000008a100000, 0x000000008a100000|100%| O| |TAMS 0x000000008a0d5800, 0x000000008a000000| Untracked +| 113|0x000000008a100000, 0x000000008a200000, 0x000000008a200000|100%| O| |TAMS 0x000000008a100000, 0x000000008a100000| Untracked +| 114|0x000000008a200000, 0x000000008a300000, 0x000000008a300000|100%| O| |TAMS 0x000000008a200000, 0x000000008a200000| Untracked +| 115|0x000000008a300000, 0x000000008a400000, 0x000000008a400000|100%| O| |TAMS 0x000000008a300000, 0x000000008a300000| Untracked +| 116|0x000000008a400000, 0x000000008a500000, 0x000000008a500000|100%| O| |TAMS 0x000000008a400000, 0x000000008a400000| Untracked +| 117|0x000000008a500000, 0x000000008a600000, 0x000000008a600000|100%| O| |TAMS 0x000000008a500000, 0x000000008a500000| Untracked +| 118|0x000000008a600000, 0x000000008a700000, 0x000000008a700000|100%| O| |TAMS 0x000000008a600000, 0x000000008a600000| Untracked +| 119|0x000000008a700000, 0x000000008a800000, 0x000000008a800000|100%| O| |TAMS 0x000000008a700000, 0x000000008a700000| Untracked +| 120|0x000000008a800000, 0x000000008a900000, 0x000000008a900000|100%| O| |TAMS 0x000000008a800000, 0x000000008a800000| Untracked +| 121|0x000000008a900000, 0x000000008aa00000, 0x000000008aa00000|100%| O| |TAMS 0x000000008a900000, 0x000000008a900000| Untracked +| 122|0x000000008aa00000, 0x000000008ab00000, 0x000000008ab00000|100%| O| |TAMS 0x000000008aa00000, 0x000000008aa00000| Untracked +| 123|0x000000008ab00000, 0x000000008ac00000, 0x000000008ac00000|100%| O| |TAMS 0x000000008ab00000, 0x000000008ab00000| Untracked +| 124|0x000000008ac00000, 0x000000008ad00000, 0x000000008ad00000|100%| O| |TAMS 0x000000008ac00000, 0x000000008ac00000| Untracked +| 125|0x000000008ad00000, 0x000000008ae00000, 0x000000008ae00000|100%| O| |TAMS 0x000000008ad00000, 0x000000008ad00000| Untracked +| 126|0x000000008ae00000, 0x000000008af00000, 0x000000008af00000|100%| O| |TAMS 0x000000008ae00000, 0x000000008ae00000| Untracked +| 127|0x000000008af00000, 0x000000008b000000, 0x000000008b000000|100%| O| |TAMS 0x000000008af00000, 0x000000008af00000| Untracked +| 128|0x000000008b000000, 0x000000008b000000, 0x000000008b100000| 0%| F| |TAMS 0x000000008b000000, 0x000000008b000000| Untracked +| 129|0x000000008b100000, 0x000000008b100000, 0x000000008b200000| 0%| F| |TAMS 0x000000008b100000, 0x000000008b100000| Untracked +| 130|0x000000008b200000, 0x000000008b200000, 0x000000008b300000| 0%| F| |TAMS 0x000000008b200000, 0x000000008b200000| Untracked +| 131|0x000000008b300000, 0x000000008b300000, 0x000000008b400000| 0%| F| |TAMS 0x000000008b300000, 0x000000008b300000| Untracked +| 132|0x000000008b400000, 0x000000008b400000, 0x000000008b500000| 0%| F| |TAMS 0x000000008b400000, 0x000000008b400000| Untracked +| 133|0x000000008b500000, 0x000000008b500000, 0x000000008b600000| 0%| F| |TAMS 0x000000008b500000, 0x000000008b500000| Untracked +| 134|0x000000008b600000, 0x000000008b600000, 0x000000008b700000| 0%| F| |TAMS 0x000000008b600000, 0x000000008b600000| Untracked +| 135|0x000000008b700000, 0x000000008b700000, 0x000000008b800000| 0%| F| |TAMS 0x000000008b700000, 0x000000008b700000| Untracked +| 136|0x000000008b800000, 0x000000008b800000, 0x000000008b900000| 0%| F| |TAMS 0x000000008b800000, 0x000000008b800000| Untracked +| 137|0x000000008b900000, 0x000000008b900000, 0x000000008ba00000| 0%| F| |TAMS 0x000000008b900000, 0x000000008b900000| Untracked +| 138|0x000000008ba00000, 0x000000008ba00000, 0x000000008bb00000| 0%| F| |TAMS 0x000000008ba00000, 0x000000008ba00000| Untracked +| 139|0x000000008bb00000, 0x000000008bb00000, 0x000000008bc00000| 0%| F| |TAMS 0x000000008bb00000, 0x000000008bb00000| Untracked +| 140|0x000000008bc00000, 0x000000008bc00000, 0x000000008bd00000| 0%| F| |TAMS 0x000000008bc00000, 0x000000008bc00000| Untracked +| 141|0x000000008bd00000, 0x000000008bd00000, 0x000000008be00000| 0%| F| |TAMS 0x000000008bd00000, 0x000000008bd00000| Untracked +| 142|0x000000008be00000, 0x000000008be00000, 0x000000008bf00000| 0%| F| |TAMS 0x000000008be00000, 0x000000008be00000| Untracked +| 143|0x000000008bf00000, 0x000000008bf00000, 0x000000008c000000| 0%| F| |TAMS 0x000000008bf00000, 0x000000008bf00000| Untracked +| 144|0x000000008c000000, 0x000000008c000000, 0x000000008c100000| 0%| F| |TAMS 0x000000008c000000, 0x000000008c000000| Untracked +| 145|0x000000008c100000, 0x000000008c100000, 0x000000008c200000| 0%| F| |TAMS 0x000000008c100000, 0x000000008c100000| Untracked +| 146|0x000000008c200000, 0x000000008c200000, 0x000000008c300000| 0%| F| |TAMS 0x000000008c200000, 0x000000008c200000| Untracked +| 147|0x000000008c300000, 0x000000008c300000, 0x000000008c400000| 0%| F| |TAMS 0x000000008c300000, 0x000000008c300000| Untracked +| 148|0x000000008c400000, 0x000000008c400000, 0x000000008c500000| 0%| F| |TAMS 0x000000008c400000, 0x000000008c400000| Untracked +| 149|0x000000008c500000, 0x000000008c500000, 0x000000008c600000| 0%| F| |TAMS 0x000000008c500000, 0x000000008c500000| Untracked +| 150|0x000000008c600000, 0x000000008c600000, 0x000000008c700000| 0%| F| |TAMS 0x000000008c600000, 0x000000008c600000| Untracked +| 151|0x000000008c700000, 0x000000008c700000, 0x000000008c800000| 0%| F| |TAMS 0x000000008c700000, 0x000000008c700000| Untracked +| 152|0x000000008c800000, 0x000000008c800000, 0x000000008c900000| 0%| F| |TAMS 0x000000008c800000, 0x000000008c800000| Untracked +| 153|0x000000008c900000, 0x000000008c900000, 0x000000008ca00000| 0%| F| |TAMS 0x000000008c900000, 0x000000008c900000| Untracked +| 154|0x000000008ca00000, 0x000000008ca00000, 0x000000008cb00000| 0%| F| |TAMS 0x000000008ca00000, 0x000000008ca00000| Untracked +| 155|0x000000008cb00000, 0x000000008cb00000, 0x000000008cc00000| 0%| F| |TAMS 0x000000008cb00000, 0x000000008cb00000| Untracked +| 156|0x000000008cc00000, 0x000000008cc00000, 0x000000008cd00000| 0%| F| |TAMS 0x000000008cc00000, 0x000000008cc00000| Untracked +| 157|0x000000008cd00000, 0x000000008cd00000, 0x000000008ce00000| 0%| F| |TAMS 0x000000008cd00000, 0x000000008cd00000| Untracked +| 158|0x000000008ce00000, 0x000000008ce00000, 0x000000008cf00000| 0%| F| |TAMS 0x000000008ce00000, 0x000000008ce00000| Untracked +| 159|0x000000008cf00000, 0x000000008cf00000, 0x000000008d000000| 0%| F| |TAMS 0x000000008cf00000, 0x000000008cf00000| Untracked +| 160|0x000000008d000000, 0x000000008d000000, 0x000000008d100000| 0%| F| |TAMS 0x000000008d000000, 0x000000008d000000| Untracked +| 161|0x000000008d100000, 0x000000008d100000, 0x000000008d200000| 0%| F| |TAMS 0x000000008d100000, 0x000000008d100000| Untracked +| 162|0x000000008d200000, 0x000000008d200000, 0x000000008d300000| 0%| F| |TAMS 0x000000008d200000, 0x000000008d200000| Untracked +| 163|0x000000008d300000, 0x000000008d300000, 0x000000008d400000| 0%| F| |TAMS 0x000000008d300000, 0x000000008d300000| Untracked +| 164|0x000000008d400000, 0x000000008d400000, 0x000000008d500000| 0%| F| |TAMS 0x000000008d400000, 0x000000008d400000| Untracked +| 165|0x000000008d500000, 0x000000008d500000, 0x000000008d600000| 0%| F| |TAMS 0x000000008d500000, 0x000000008d500000| Untracked +| 166|0x000000008d600000, 0x000000008d600000, 0x000000008d700000| 0%| F| |TAMS 0x000000008d600000, 0x000000008d600000| Untracked +| 167|0x000000008d700000, 0x000000008d700000, 0x000000008d800000| 0%| F| |TAMS 0x000000008d700000, 0x000000008d700000| Untracked +| 168|0x000000008d800000, 0x000000008d800000, 0x000000008d900000| 0%| F| |TAMS 0x000000008d800000, 0x000000008d800000| Untracked +| 169|0x000000008d900000, 0x000000008d900000, 0x000000008da00000| 0%| F| |TAMS 0x000000008d900000, 0x000000008d900000| Untracked +| 170|0x000000008da00000, 0x000000008da00000, 0x000000008db00000| 0%| F| |TAMS 0x000000008da00000, 0x000000008da00000| Untracked +| 171|0x000000008db00000, 0x000000008db00000, 0x000000008dc00000| 0%| F| |TAMS 0x000000008db00000, 0x000000008db00000| Untracked +| 172|0x000000008dc00000, 0x000000008dc00000, 0x000000008dd00000| 0%| F| |TAMS 0x000000008dc00000, 0x000000008dc00000| Untracked +| 173|0x000000008dd00000, 0x000000008dd00000, 0x000000008de00000| 0%| F| |TAMS 0x000000008dd00000, 0x000000008dd00000| Untracked +| 174|0x000000008de00000, 0x000000008de00000, 0x000000008df00000| 0%| F| |TAMS 0x000000008de00000, 0x000000008de00000| Untracked +| 175|0x000000008df00000, 0x000000008df00000, 0x000000008e000000| 0%| F| |TAMS 0x000000008df00000, 0x000000008df00000| Untracked +| 176|0x000000008e000000, 0x000000008e000000, 0x000000008e100000| 0%| F| |TAMS 0x000000008e000000, 0x000000008e000000| Untracked +| 177|0x000000008e100000, 0x000000008e100000, 0x000000008e200000| 0%| F| |TAMS 0x000000008e100000, 0x000000008e100000| Untracked +| 178|0x000000008e200000, 0x000000008e200000, 0x000000008e300000| 0%| F| |TAMS 0x000000008e200000, 0x000000008e200000| Untracked +| 179|0x000000008e300000, 0x000000008e300000, 0x000000008e400000| 0%| F| |TAMS 0x000000008e300000, 0x000000008e300000| Untracked +| 180|0x000000008e400000, 0x000000008e400000, 0x000000008e500000| 0%| F| |TAMS 0x000000008e400000, 0x000000008e400000| Untracked +| 181|0x000000008e500000, 0x000000008e500000, 0x000000008e600000| 0%| F| |TAMS 0x000000008e500000, 0x000000008e500000| Untracked +| 182|0x000000008e600000, 0x000000008e600000, 0x000000008e700000| 0%| F| |TAMS 0x000000008e600000, 0x000000008e600000| Untracked +| 183|0x000000008e700000, 0x000000008e700000, 0x000000008e800000| 0%| F| |TAMS 0x000000008e700000, 0x000000008e700000| Untracked +| 184|0x000000008e800000, 0x000000008e800000, 0x000000008e900000| 0%| F| |TAMS 0x000000008e800000, 0x000000008e800000| Untracked +| 185|0x000000008e900000, 0x000000008e900000, 0x000000008ea00000| 0%| F| |TAMS 0x000000008e900000, 0x000000008e900000| Untracked +| 186|0x000000008ea00000, 0x000000008ea00000, 0x000000008eb00000| 0%| F| |TAMS 0x000000008ea00000, 0x000000008ea00000| Untracked +| 187|0x000000008eb00000, 0x000000008eb00000, 0x000000008ec00000| 0%| F| |TAMS 0x000000008eb00000, 0x000000008eb00000| Untracked +| 188|0x000000008ec00000, 0x000000008ec00000, 0x000000008ed00000| 0%| F| |TAMS 0x000000008ec00000, 0x000000008ec00000| Untracked +| 189|0x000000008ed00000, 0x000000008ed00000, 0x000000008ee00000| 0%| F| |TAMS 0x000000008ed00000, 0x000000008ed00000| Untracked +| 190|0x000000008ee00000, 0x000000008ee00000, 0x000000008ef00000| 0%| F| |TAMS 0x000000008ee00000, 0x000000008ee00000| Untracked +| 191|0x000000008ef00000, 0x000000008ef00000, 0x000000008f000000| 0%| F| |TAMS 0x000000008ef00000, 0x000000008ef00000| Untracked +| 192|0x000000008f000000, 0x000000008f000000, 0x000000008f100000| 0%| F| |TAMS 0x000000008f000000, 0x000000008f000000| Untracked +| 193|0x000000008f100000, 0x000000008f100000, 0x000000008f200000| 0%| F| |TAMS 0x000000008f100000, 0x000000008f100000| Untracked +| 194|0x000000008f200000, 0x000000008f200000, 0x000000008f300000| 0%| F| |TAMS 0x000000008f200000, 0x000000008f200000| Untracked +| 195|0x000000008f300000, 0x000000008f300000, 0x000000008f400000| 0%| F| |TAMS 0x000000008f300000, 0x000000008f300000| Untracked +| 196|0x000000008f400000, 0x000000008f400000, 0x000000008f500000| 0%| F| |TAMS 0x000000008f400000, 0x000000008f400000| Untracked +| 197|0x000000008f500000, 0x000000008f500000, 0x000000008f600000| 0%| F| |TAMS 0x000000008f500000, 0x000000008f500000| Untracked +| 198|0x000000008f600000, 0x000000008f600000, 0x000000008f700000| 0%| F| |TAMS 0x000000008f600000, 0x000000008f600000| Untracked +| 199|0x000000008f700000, 0x000000008f700000, 0x000000008f800000| 0%| F| |TAMS 0x000000008f700000, 0x000000008f700000| Untracked +| 200|0x000000008f800000, 0x000000008f800000, 0x000000008f900000| 0%| F| |TAMS 0x000000008f800000, 0x000000008f800000| Untracked +| 201|0x000000008f900000, 0x000000008f900000, 0x000000008fa00000| 0%| F| |TAMS 0x000000008f900000, 0x000000008f900000| Untracked +| 202|0x000000008fa00000, 0x000000008fa00000, 0x000000008fb00000| 0%| F| |TAMS 0x000000008fa00000, 0x000000008fa00000| Untracked +| 203|0x000000008fb00000, 0x000000008fb00000, 0x000000008fc00000| 0%| F| |TAMS 0x000000008fb00000, 0x000000008fb00000| Untracked +| 204|0x000000008fc00000, 0x000000008fc00000, 0x000000008fd00000| 0%| F| |TAMS 0x000000008fc00000, 0x000000008fc00000| Untracked +| 205|0x000000008fd00000, 0x000000008fd00000, 0x000000008fe00000| 0%| F| |TAMS 0x000000008fd00000, 0x000000008fd00000| Untracked +| 206|0x000000008fe00000, 0x000000008fe00000, 0x000000008ff00000| 0%| F| |TAMS 0x000000008fe00000, 0x000000008fe00000| Untracked +| 207|0x000000008ff00000, 0x000000008ff00000, 0x0000000090000000| 0%| F| |TAMS 0x000000008ff00000, 0x000000008ff00000| Untracked +| 208|0x0000000090000000, 0x0000000090000000, 0x0000000090100000| 0%| F| |TAMS 0x0000000090000000, 0x0000000090000000| Untracked +| 209|0x0000000090100000, 0x0000000090100000, 0x0000000090200000| 0%| F| |TAMS 0x0000000090100000, 0x0000000090100000| Untracked +| 210|0x0000000090200000, 0x0000000090200000, 0x0000000090300000| 0%| F| |TAMS 0x0000000090200000, 0x0000000090200000| Untracked +| 211|0x0000000090300000, 0x0000000090300000, 0x0000000090400000| 0%| F| |TAMS 0x0000000090300000, 0x0000000090300000| Untracked +| 212|0x0000000090400000, 0x0000000090400000, 0x0000000090500000| 0%| F| |TAMS 0x0000000090400000, 0x0000000090400000| Untracked +| 213|0x0000000090500000, 0x0000000090500000, 0x0000000090600000| 0%| F| |TAMS 0x0000000090500000, 0x0000000090500000| Untracked +| 214|0x0000000090600000, 0x0000000090600000, 0x0000000090700000| 0%| F| |TAMS 0x0000000090600000, 0x0000000090600000| Untracked +| 215|0x0000000090700000, 0x0000000090700000, 0x0000000090800000| 0%| F| |TAMS 0x0000000090700000, 0x0000000090700000| Untracked +| 216|0x0000000090800000, 0x0000000090800000, 0x0000000090900000| 0%| F| |TAMS 0x0000000090800000, 0x0000000090800000| Untracked +| 217|0x0000000090900000, 0x0000000090900000, 0x0000000090a00000| 0%| F| |TAMS 0x0000000090900000, 0x0000000090900000| Untracked +| 218|0x0000000090a00000, 0x0000000090a00000, 0x0000000090b00000| 0%| F| |TAMS 0x0000000090a00000, 0x0000000090a00000| Untracked +| 219|0x0000000090b00000, 0x0000000090b00000, 0x0000000090c00000| 0%| F| |TAMS 0x0000000090b00000, 0x0000000090b00000| Untracked +| 220|0x0000000090c00000, 0x0000000090c00000, 0x0000000090d00000| 0%| F| |TAMS 0x0000000090c00000, 0x0000000090c00000| Untracked +| 221|0x0000000090d00000, 0x0000000090d00000, 0x0000000090e00000| 0%| F| |TAMS 0x0000000090d00000, 0x0000000090d00000| Untracked +| 222|0x0000000090e00000, 0x0000000090e00000, 0x0000000090f00000| 0%| F| |TAMS 0x0000000090e00000, 0x0000000090e00000| Untracked +| 223|0x0000000090f00000, 0x0000000090f00000, 0x0000000091000000| 0%| F| |TAMS 0x0000000090f00000, 0x0000000090f00000| Untracked +| 224|0x0000000091000000, 0x0000000091000000, 0x0000000091100000| 0%| F| |TAMS 0x0000000091000000, 0x0000000091000000| Untracked +| 225|0x0000000091100000, 0x0000000091100000, 0x0000000091200000| 0%| F| |TAMS 0x0000000091100000, 0x0000000091100000| Untracked +| 226|0x0000000091200000, 0x0000000091200000, 0x0000000091300000| 0%| F| |TAMS 0x0000000091200000, 0x0000000091200000| Untracked +| 227|0x0000000091300000, 0x0000000091300000, 0x0000000091400000| 0%| F| |TAMS 0x0000000091300000, 0x0000000091300000| Untracked +| 228|0x0000000091400000, 0x0000000091400000, 0x0000000091500000| 0%| F| |TAMS 0x0000000091400000, 0x0000000091400000| Untracked +| 229|0x0000000091500000, 0x0000000091500000, 0x0000000091600000| 0%| F| |TAMS 0x0000000091500000, 0x0000000091500000| Untracked +| 230|0x0000000091600000, 0x0000000091600000, 0x0000000091700000| 0%| F| |TAMS 0x0000000091600000, 0x0000000091600000| Untracked +| 231|0x0000000091700000, 0x0000000091700000, 0x0000000091800000| 0%| F| |TAMS 0x0000000091700000, 0x0000000091700000| Untracked +| 232|0x0000000091800000, 0x0000000091800000, 0x0000000091900000| 0%| F| |TAMS 0x0000000091800000, 0x0000000091800000| Untracked +| 233|0x0000000091900000, 0x0000000091900000, 0x0000000091a00000| 0%| F| |TAMS 0x0000000091900000, 0x0000000091900000| Untracked +| 234|0x0000000091a00000, 0x0000000091a00000, 0x0000000091b00000| 0%| F| |TAMS 0x0000000091a00000, 0x0000000091a00000| Untracked +| 235|0x0000000091b00000, 0x0000000091b0c6f0, 0x0000000091c00000| 4%| S|CS|TAMS 0x0000000091b00000, 0x0000000091b00000| Complete +| 236|0x0000000091c00000, 0x0000000091c00000, 0x0000000091d00000| 0%| F| |TAMS 0x0000000091c00000, 0x0000000091c00000| Untracked +| 237|0x0000000091d00000, 0x0000000091d00000, 0x0000000091e00000| 0%| F| |TAMS 0x0000000091d00000, 0x0000000091d00000| Untracked +| 238|0x0000000091e00000, 0x0000000091e00000, 0x0000000091f00000| 0%| F| |TAMS 0x0000000091e00000, 0x0000000091e00000| Untracked +| 239|0x0000000091f00000, 0x0000000091f00000, 0x0000000092000000| 0%| F| |TAMS 0x0000000091f00000, 0x0000000091f00000| Untracked +| 240|0x0000000092000000, 0x0000000092000000, 0x0000000092100000| 0%| F| |TAMS 0x0000000092000000, 0x0000000092000000| Untracked +| 241|0x0000000092100000, 0x0000000092100000, 0x0000000092200000| 0%| F| |TAMS 0x0000000092100000, 0x0000000092100000| Untracked +| 242|0x0000000092200000, 0x0000000092200000, 0x0000000092300000| 0%| F| |TAMS 0x0000000092200000, 0x0000000092200000| Untracked +| 243|0x0000000092300000, 0x0000000092300000, 0x0000000092400000| 0%| F| |TAMS 0x0000000092300000, 0x0000000092300000| Untracked +| 244|0x0000000092400000, 0x0000000092400000, 0x0000000092500000| 0%| F| |TAMS 0x0000000092400000, 0x0000000092400000| Untracked +| 245|0x0000000092500000, 0x0000000092500000, 0x0000000092600000| 0%| F| |TAMS 0x0000000092500000, 0x0000000092500000| Untracked +| 246|0x0000000092600000, 0x0000000092600000, 0x0000000092700000| 0%| F| |TAMS 0x0000000092600000, 0x0000000092600000| Untracked + +Card table byte_map: [0x0000022572960000,0x0000022572d50000] _byte_map_base: 0x0000022572548000 + +Marking Bits (Prev, Next): (CMBitMap*) 0x000002256e87eec0, (CMBitMap*) 0x000002256e87ee80 + Prev Bits: [0x0000022575080000, 0x0000022576fc0000) + Next Bits: [0x0000022573140000, 0x0000022575080000) + +Polling page: 0x000002256e000000 + +Metaspace: + +Usage: + Non-class: 90.02 MB capacity, 89.02 MB ( 99%) used, 826.88 KB ( <1%) free+waste, 193.69 KB ( <1%) overhead. + Class: 13.68 MB capacity, 13.16 MB ( 96%) used, 446.24 KB ( 3%) free+waste, 79.12 KB ( <1%) overhead. + Both: 103.70 MB capacity, 102.19 MB ( 99%) used, 1.24 MB ( 1%) free+waste, 272.81 KB ( <1%) overhead. + +Virtual space: + Non-class space: 92.00 MB reserved, 90.17 MB ( 98%) committed + Class space: 1.00 GB reserved, 13.75 MB ( 1%) committed + Both: 1.09 GB reserved, 103.92 MB ( 9%) committed + +Chunk freelists: + Non-Class: 26.00 KB + Class: 12.00 KB + Both: 38.00 KB + +MaxMetaspaceSize: 17179869184.00 GB +CompressedClassSpaceSize: 1.00 GB + +CodeHeap 'non-profiled nmethods': size=238336Kb used=29635Kb max_used=29635Kb free=208700Kb + bounds [0x0000022500740000, 0x0000022502440000, 0x000002250f000000] +CodeHeap 'non-nmethods': size=7424Kb used=1403Kb max_used=1403Kb free=6020Kb + bounds [0x0000022500000000, 0x0000022500270000, 0x0000022500740000] + total_blobs=18391 nmethods=17678 adapters=639 + compilation: enabled + stopped_count=0, restarted_count=0 + full_count=0 + +Compilation events (20 events): +Event: 5890.706 Thread 0x000002257a2c59e0 18301 ! 1 sun.rmi.transport.Transport::serviceCall (349 bytes) +Event: 5891.217 Thread 0x000002257a2c59e0 nmethod 18301 0x0000022502426710 code [0x0000022502426ce0, 0x0000022502428b28] +Event: 5950.695 Thread 0x000002257a2c59e0 18309 1 sun.rmi.server.UnicastServerRef::unmarshalCustomCallData (31 bytes) +Event: 5950.702 Thread 0x000002257a2c59e0 nmethod 18309 0x000002250242ae10 code [0x000002250242afe0, 0x000002250242b288] +Event: 5950.702 Thread 0x000002257a2c59e0 18310 1 sun.rmi.transport.ConnectionInputStream::registerRefs (71 bytes) +Event: 5950.716 Thread 0x000002257a2c59e0 nmethod 18310 0x000002250242b410 code [0x000002250242b620, 0x000002250242b938] +Event: 5950.716 Thread 0x000002257a2c59e0 18311 ! 1 sun.rmi.transport.ConnectionInputStream::done (145 bytes) +Event: 5950.737 Thread 0x000002257a2c59e0 nmethod 18311 0x000002250242bb10 code [0x000002250242bde0, 0x000002250242d028] +Event: 6010.700 Thread 0x000002257a2c59e0 18312 1 java.net.InetSocketAddress::getAddress (8 bytes) +Event: 6010.700 Thread 0x000002257a2c59e0 nmethod 18312 0x000002250242db10 code [0x000002250242dca0, 0x000002250242dd58] +Event: 6265.740 Thread 0x000002257a2c59e0 18313 s! 1 java.net.Socket::close (47 bytes) +Event: 6265.740 Thread 0x000002257a2c59e0 nmethod 18313 0x000002250242de10 code [0x000002250242dfc0, 0x000002250242e2f8] +Event: 6360.856 Thread 0x000002257a2c59e0 18314 1 java.util.Collections::reverse (125 bytes) +Event: 6360.862 Thread 0x000002257a2c59e0 nmethod 18314 0x000002250242e490 code [0x000002250242e6c0, 0x000002250242ea48] +Event: 6490.769 Thread 0x000002257a2c59e0 18315 1 java.net.ServerSocket::isBound (5 bytes) +Event: 6490.769 Thread 0x000002257a2c59e0 nmethod 18315 0x000002250242ec90 code [0x000002250242ee20, 0x000002250242eed8] +Event: 6747.010 Thread 0x000002257a2c59e0 18316 1 java.util.concurrent.SynchronousQueue$TransferStack::awaitFulfill (169 bytes) +Event: 6747.383 Thread 0x000002257a2c59e0 nmethod 18316 0x000002250242ef90 code [0x000002250242f220, 0x000002250242ff98] +Event: 6793.452 Thread 0x000002257a2c59e0 18317 s 1 com.zaxxer.hikari.pool.HikariPool::fillPool (78 bytes) +Event: 6793.697 Thread 0x000002257a2c59e0 nmethod 18317 0x0000022502430590 code [0x0000022502430760, 0x0000022502430a28] + +GC Heap History (20 events): +Event: 6175.390 GC heap after +{Heap after GC invocations=162 (full 0): + garbage-first heap total 252928K, used 109784K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6315.685 GC heap before +{Heap before GC invocations=162 (full 0): + garbage-first heap total 252928K, used 225496K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6315.691 GC heap after +{Heap after GC invocations=163 (full 0): + garbage-first heap total 252928K, used 109802K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6452.947 GC heap before +{Heap before GC invocations=163 (full 0): + garbage-first heap total 252928K, used 225514K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6452.951 GC heap after +{Heap after GC invocations=164 (full 0): + garbage-first heap total 252928K, used 109747K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6584.252 GC heap before +{Heap before GC invocations=164 (full 0): + garbage-first heap total 252928K, used 225459K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6584.353 GC heap after +{Heap after GC invocations=165 (full 0): + garbage-first heap total 252928K, used 109779K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6724.122 GC heap before +{Heap before GC invocations=165 (full 0): + garbage-first heap total 252928K, used 225491K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6724.302 GC heap after +{Heap after GC invocations=166 (full 0): + garbage-first heap total 252928K, used 109770K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6893.026 GC heap before +{Heap before GC invocations=166 (full 0): + garbage-first heap total 252928K, used 225482K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 114 young (116736K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6919.432 GC heap after +{Heap after GC invocations=167 (full 0): + garbage-first heap total 252928K, used 109731K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 6984.248 GC heap before +{Heap before GC invocations=167 (full 0): + garbage-first heap total 252928K, used 120995K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7027.223 GC heap after +{Heap after GC invocations=168 (full 0): + garbage-first heap total 252928K, used 109826K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104639K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7084.006 GC heap before +{Heap before GC invocations=168 (full 0): + garbage-first heap total 252928K, used 121090K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7087.733 GC heap after +{Heap after GC invocations=169 (full 0): + garbage-first heap total 252928K, used 109663K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7100.806 GC heap before +{Heap before GC invocations=169 (full 0): + garbage-first heap total 252928K, used 120927K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7101.906 GC heap after +{Heap after GC invocations=170 (full 0): + garbage-first heap total 252928K, used 109704K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7117.151 GC heap before +{Heap before GC invocations=170 (full 0): + garbage-first heap total 252928K, used 120968K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7120.742 GC heap after +{Heap after GC invocations=171 (full 0): + garbage-first heap total 252928K, used 109844K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 1 young (1024K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} +Event: 7174.869 GC heap before +{Heap before GC invocations=171 (full 0): + garbage-first heap total 252928K, used 121108K [0x0000000083000000, 0x0000000100000000) + region size 1024K, 12 young (12288K), 1 survivors (1024K) + Metaspace used 104640K, capacity 106186K, committed 106416K, reserved 1142784K + class space used 13478K, capacity 14004K, committed 14080K, reserved 1048576K +} + +Deoptimization events (18 events): +Event: 34.247 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a1433c sp=0x00000051798fccf0 +Event: 34.247 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fc248 mode 0 +Event: 41.141 Thread 0x000002257b705830 DEOPT PACKING pc=0x00000225011fa5dc sp=0x00000051798f5ec0 +Event: 41.141 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f5360 mode 0 +Event: 46.535 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a2d6d2 sp=0x00000051798f7600 +Event: 46.535 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f6b08 mode 3 +Event: 46.535 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500a29b25 sp=0x00000051798f75c0 +Event: 46.535 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798f6b08 mode 3 +Event: 53.173 Thread 0x000002257b705830 DEOPT PACKING pc=0x000002250188e47c sp=0x00000051798fbbd0 +Event: 53.173 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fb128 mode 0 +Event: 53.173 Thread 0x000002257b705830 DEOPT PACKING pc=0x000002250188e47c sp=0x00000051798fd390 +Event: 53.173 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fc8e8 mode 0 +Event: 53.710 Thread 0x000002257b705830 DEOPT PACKING pc=0x0000022500cf2fa4 sp=0x00000051798fe0a0 +Event: 53.710 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fd720 mode 0 +Event: 55.827 Thread 0x000002257b705830 DEOPT PACKING pc=0x00000225008b00cc sp=0x00000051798fbeb0 +Event: 55.827 Thread 0x000002257b705830 DEOPT UNPACKING pc=0x000002250004e23f sp=0x00000051798fb3d8 mode 0 +Event: 534.201 Thread 0x000002250f7ac070 DEOPT PACKING pc=0x0000022501c44398 sp=0x000000517b0fe110 +Event: 534.205 Thread 0x000002250f7ac070 DEOPT UNPACKING pc=0x000002250004e23f sp=0x000000517b0fd6b0 mode 3 + +Classes unloaded (14 events): +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8dc40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor38' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8e040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor37' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8ec40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor36' +Event: 49.060 Thread 0x0000022579a517b0 Unloading class 0x0000000100a88440 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor35' +Event: 50.471 Thread 0x0000022579a517b0 Unloading class 0x0000000100a8a040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor39' +Event: 51.854 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor41' +Event: 51.854 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor40' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13440 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor48' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor47' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b13c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor46' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b16c40 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor45' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b14840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor44' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b15040 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor43' +Event: 57.958 Thread 0x0000022579a517b0 Unloading class 0x0000000100b15840 'jdk/internal/reflect/GeneratedSerializationConstructorAccessor42' + +Classes redefined (0 events): +No events + +Internal exceptions (20 events): +Event: 59.740 Thread 0x000002257b705830 Exception (0x00000000907e7e00) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.792 Thread 0x000002257b705830 Exception (0x00000000903c29d8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.793 Thread 0x000002257b705830 Exception (0x00000000903f4b48) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.921 Thread 0x000002257b705830 Exception (0x000000008fb7cc10) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.922 Thread 0x000002257b705830 Exception (0x000000008fbaefc8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.946 Thread 0x000002257b705830 Exception (0x000000008faafc28) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 59.946 Thread 0x000002257b705830 Exception (0x000000008fae1dd8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.015 Thread 0x000002257b705830 Exception (0x000000008f6728c8) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.016 Thread 0x000002257b705830 Exception (0x000000008f6a4c48) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.169 Thread 0x000002257b705830 Exception (0x000000008ea5b1e0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 60.170 Thread 0x000002257b705830 Exception (0x000000008ea8d560) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] +Event: 72.831 Thread 0x000002250f7aff00 Exception (0x0000000091460a98) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1811.543 Thread 0x0000022511086690 Exception (0x000000008f781fa0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 1963.220 Thread 0x000002250f7ac070 Exception (0x0000000091f6b860) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1963.220 Thread 0x000002250f7b1be0 Exception (0x0000000091f6d478) +thrown [./open/src/hotspot/share/interpreter/linkResolver.cpp, line 782] +Event: 1985.373 Thread 0x000002250f7ad3b0 Exception (0x000000008cefe048) +thrown [./open/src/hotspot/share/classfile/systemDictionary.cpp, line 295] +Event: 1985.382 Thread 0x000002250f7ad3b0 Exception (0x000000008cd8d1a0) +thrown [./open/src/hotspot/share/classfile/systemDictionary.cpp, line 295] +Event: 3580.488 Thread 0x000002257c546460 Exception (0x000000008edaf398) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 5368.631 Thread 0x000002257a461050 Exception (0x000000008ed82a20) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 578] +Event: 5399.027 Thread 0x000002257a4646d0 Exception (0x000000008c1018d0) +thrown [./open/src/hotspot/share/prims/jni.cpp, line 599] + +Events (20 events): +Event: 6724.058 Executing VM operation: G1CollectForAllocation +Event: 6724.310 Executing VM operation: G1CollectForAllocation done +Event: 6888.343 Thread 0x000002250f7aca10 Thread exited: 0x000002250f7aca10 +Event: 6892.528 Executing VM operation: G1CollectForAllocation +Event: 6919.698 Executing VM operation: G1CollectForAllocation done +Event: 6919.738 Executing VM operation: HandshakeAllThreads +Event: 6920.191 Executing VM operation: HandshakeAllThreads done +Event: 6973.947 Executing VM operation: G1CollectForAllocation +Event: 7028.276 Executing VM operation: G1CollectForAllocation done +Event: 7028.310 Executing VM operation: HandshakeAllThreads +Event: 7030.417 Executing VM operation: HandshakeAllThreads done +Event: 7035.662 Thread 0x000002257aed8660 Thread exited: 0x000002257aed8660 +Event: 7083.953 Executing VM operation: G1CollectForAllocation +Event: 7087.733 Executing VM operation: G1CollectForAllocation done +Event: 7100.593 Executing VM operation: G1CollectForAllocation +Event: 7101.953 Executing VM operation: G1CollectForAllocation done +Event: 7115.017 Executing VM operation: G1CollectForAllocation +Event: 7120.743 Executing VM operation: G1CollectForAllocation done +Event: 7134.573 Executing VM operation: G1CollectForAllocation +Event: 7172.257 Thread 0x00000225798d3150 Thread added: 0x00000225798d3150 + + +Dynamic libraries: +0x00007ff67fa40000 - 0x00007ff67fa4d000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\javaw.exe +0x00007ffd21630000 - 0x00007ffd21828000 C:\Windows\SYSTEM32\ntdll.dll +0x00007ffd20cf0000 - 0x00007ffd20dad000 C:\Windows\System32\KERNEL32.DLL +0x00007ffd1ef80000 - 0x00007ffd1f24e000 C:\Windows\System32\KERNELBASE.dll +0x00007ffd1f250000 - 0x00007ffd1f350000 C:\Windows\System32\ucrtbase.dll +0x00007ffd17600000 - 0x00007ffd17619000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\VCRUNTIME140.dll +0x00007ffcfb0e0000 - 0x00007ffcfb0f8000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\jli.dll +0x00007ffd207f0000 - 0x00007ffd20990000 C:\Windows\System32\USER32.dll +0x00007ffd1f3f0000 - 0x00007ffd1f412000 C:\Windows\System32\win32u.dll +0x00007ffcff210000 - 0x00007ffcff4aa000 C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e\COMCTL32.dll +0x00007ffd20080000 - 0x00007ffd200aa000 C:\Windows\System32\GDI32.dll +0x00007ffd21270000 - 0x00007ffd2130e000 C:\Windows\System32\msvcrt.dll +0x00007ffd1f420000 - 0x00007ffd1f52b000 C:\Windows\System32\gdi32full.dll +0x00007ffd1f350000 - 0x00007ffd1f3ed000 C:\Windows\System32\msvcp_win.dll +0x00007ffd20050000 - 0x00007ffd20080000 C:\Windows\System32\IMM32.DLL +0x00007ffd175f0000 - 0x00007ffd175fc000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\vcruntime140_1.dll +0x00007ffd01db0000 - 0x00007ffd01e41000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\msvcp140.dll +0x00007ffc94a10000 - 0x00007ffc9556e000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\server\jvm.dll +0x00007ffd21540000 - 0x00007ffd215ee000 C:\Windows\System32\ADVAPI32.dll +0x00007ffd20c50000 - 0x00007ffd20cec000 C:\Windows\System32\sechost.dll +0x00007ffd213f0000 - 0x00007ffd21515000 C:\Windows\System32\RPCRT4.dll +0x00007ffd200b0000 - 0x00007ffd200b8000 C:\Windows\System32\PSAPI.DLL +0x00007ffcfe4f0000 - 0x00007ffcfe517000 C:\Windows\SYSTEM32\WINMM.dll +0x00007ffd18d50000 - 0x00007ffd18d5a000 C:\Windows\SYSTEM32\VERSION.dll +0x00007ffcfeea0000 - 0x00007ffcfeea9000 C:\Windows\SYSTEM32\WSOCK32.dll +0x00007ffd21370000 - 0x00007ffd213db000 C:\Windows\System32\WS2_32.dll +0x00007ffd1d550000 - 0x00007ffd1d562000 C:\Windows\SYSTEM32\kernel.appcore.dll +0x00007ffd19760000 - 0x00007ffd1976a000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\jimage.dll +0x00007ffd1cac0000 - 0x00007ffd1cca4000 C:\Windows\SYSTEM32\DBGHELP.DLL +0x00007ffd02ee0000 - 0x00007ffd02f0c000 C:\Windows\SYSTEM32\dbgcore.DLL +0x00007ffd1eec0000 - 0x00007ffd1ef42000 C:\Windows\System32\bcryptPrimitives.dll +0x00007ffcf86a0000 - 0x00007ffcf86c5000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\java.dll +0x00007ffcf8680000 - 0x00007ffcf8698000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\zip.dll +0x00007ffd1f770000 - 0x00007ffd1feb3000 C:\Windows\System32\SHELL32.dll +0x00007ffd1cda0000 - 0x00007ffd1d535000 C:\Windows\SYSTEM32\windows.storage.dll +0x00007ffd20f10000 - 0x00007ffd21264000 C:\Windows\System32\combase.dll +0x00007ffd1e750000 - 0x00007ffd1e780000 C:\Windows\SYSTEM32\Wldp.dll +0x00007ffd20b40000 - 0x00007ffd20bed000 C:\Windows\System32\SHCORE.dll +0x00007ffd201e0000 - 0x00007ffd20235000 C:\Windows\System32\shlwapi.dll +0x00007ffd1ec90000 - 0x00007ffd1ecaf000 C:\Windows\SYSTEM32\profapi.dll +0x00007ffcf8660000 - 0x00007ffcf8679000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\net.dll +0x00007ffd16de0000 - 0x00007ffd16eea000 C:\Windows\SYSTEM32\WINHTTP.dll +0x00007ffd1e4b0000 - 0x00007ffd1e51a000 C:\Windows\system32\mswsock.dll +0x00007ffcd7b20000 - 0x00007ffcd7b32000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\nio.dll +0x00007ffcdbaa0000 - 0x00007ffcdbaa9000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\management.dll +0x00007ffcd79d0000 - 0x00007ffcd79db000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\management_ext.dll +0x00007ffcfedd0000 - 0x00007ffcfede7000 C:\Windows\system32\napinsp.dll +0x00007ffcfedb0000 - 0x00007ffcfedcb000 C:\Windows\system32\pnrpnsp.dll +0x00007ffd19410000 - 0x00007ffd19425000 C:\Windows\system32\wshbth.dll +0x00007ffd18010000 - 0x00007ffd1802d000 C:\Windows\system32\NLAapi.dll +0x00007ffd1e170000 - 0x00007ffd1e1ab000 C:\Windows\SYSTEM32\IPHLPAPI.DLL +0x00007ffd1e1b0000 - 0x00007ffd1e27a000 C:\Windows\SYSTEM32\DNSAPI.dll +0x00007ffd213e0000 - 0x00007ffd213e8000 C:\Windows\System32\NSI.dll +0x00007ffcfed90000 - 0x00007ffcfeda2000 C:\Windows\System32\winrnr.dll +0x00007ffd01720000 - 0x00007ffd0172a000 C:\Windows\System32\rasadhlp.dll +0x00007ffd06860000 - 0x00007ffd068e0000 C:\Windows\System32\fwpuclnt.dll +0x00007ffd1ef50000 - 0x00007ffd1ef77000 C:\Windows\System32\bcrypt.dll +0x00007ffd1e690000 - 0x00007ffd1e6a8000 C:\Windows\SYSTEM32\CRYPTSP.dll +0x00007ffd1dde0000 - 0x00007ffd1de14000 C:\Windows\system32\rsaenh.dll +0x00007ffd1ec10000 - 0x00007ffd1ec3e000 C:\Windows\SYSTEM32\USERENV.dll +0x00007ffd1e650000 - 0x00007ffd1e65c000 C:\Windows\SYSTEM32\CRYPTBASE.dll +0x00007ffd17450000 - 0x00007ffd17467000 C:\Windows\SYSTEM32\dhcpcsvc6.DLL +0x00007ffd17bf0000 - 0x00007ffd17c0d000 C:\Windows\SYSTEM32\dhcpcsvc.DLL +0x00007ffd15e50000 - 0x00007ffd15e60000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\verify.dll +0x00007ffcfb0d0000 - 0x00007ffcfb0dd000 C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\sunmscapi.dll +0x00007ffd1f530000 - 0x00007ffd1f686000 C:\Windows\System32\CRYPT32.dll +0x00007ffd1e820000 - 0x00007ffd1e847000 C:\Windows\SYSTEM32\ncrypt.dll +0x00007ffd1e7e0000 - 0x00007ffd1e81b000 C:\Windows\SYSTEM32\NTASN1.dll + +dbghelp: loaded successfully - version: 4.0.5 - missing functions: none +symbol engine: initialized successfully - sym options: 0x614 - pdb path: .;C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin;C:\Windows\SYSTEM32;C:\Windows\WinSxS\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.19041.1110_none_60b5254171f9507e;C:\Users\hp\Downloads\sts-4.10.0.RELEASE\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre\bin\server + +VM Arguments: +jvm_args: -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=52447 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=localhost -Dspring.jmx.enabled=true -Dspring.application.admin.enabled=true -XX:TieredStopAtLevel=1 -Dspring.boot.project.name=backend -Dfile.encoding=UTF-8 -XX:+ShowCodeDetailsInExceptionMessages +java_command: com.realnet.RealNetApp --spring.output.ansi.enabled=always +java_class_path (initial): G:\foldername\backend\target\classes;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-mail\2.2.5.RELEASE\spring-boot-starter-mail-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter\2.2.5.RELEASE\spring-boot-starter-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-logging\2.2.5.RELEASE\spring-boot-starter-logging-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;C:\Users\hp\.m2\repository\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;C:\Users\hp\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.12.1\log4j-to-slf4j-2.12.1.jar;C:\Users\hp\.m2\repository\org\apache\logging\log4j\log4j-api\2.12.1\log4j-api-2.12.1.jar;C:\Users\hp\.m2\repository\org\slf4j\jul-to-slf4j\1.7.30\jul-to-slf4j-1.7.30.jar;C:\Users\hp\.m2\repository\org\yaml\snakeyaml\1.25\snakeyaml-1.25.jar;C:\Users\hp\.m2\repository\org\springframework\spring-context-support\5.2.4.RELEASE\spring-context-support-5.2.4.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\spring-context\5.2.4.RELEASE\spring-context-5.2.4.RELEASE.jar;C:\Users\hp\.m2\repository\com\sun\mail\jakarta.mail\1.6.4\jakarta.mail-1.6.4.jar;C:\Users\hp\.m2\repository\com\sun\activation\jakarta.activation\1.2.2\jakarta.activation-1.2.2.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-web\2.2.5.RELEASE\spring-boot-starter-web-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\org\springframework\boot\spring-boot-starter-json\2.2.5.RELEASE\spring-boot-starter-json-2.2.5.RELEASE.jar;C:\Users\hp\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.10.2\jackson-datatype-jdk8-2.10.2.jar;C:\Users\hp\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.10.2\jackson-module-parameter-names-2.10.2.jar;C:\Users\hp\.m2\repository\org\springframework\spring-web\5.2.4.RELEASE\spring-web- +Launcher Type: SUN_STANDARD + +[Global flags] + intx CICompilerCount = 4 {product} {ergonomic} + uint ConcGCThreads = 2 {product} {ergonomic} + uint G1ConcRefinementThreads = 8 {product} {ergonomic} + size_t G1HeapRegionSize = 1048576 {product} {ergonomic} + uintx GCDrainStackTargetSize = 64 {product} {ergonomic} + size_t InitialHeapSize = 132120576 {product} {ergonomic} + bool ManagementServer = true {product} {command line} + size_t MarkStackSize = 4194304 {product} {ergonomic} + size_t MaxHeapSize = 2097152000 {product} {ergonomic} + size_t MaxNewSize = 1258291200 {product} {ergonomic} + size_t MinHeapDeltaBytes = 1048576 {product} {ergonomic} + size_t MinHeapSize = 8388608 {product} {ergonomic} + uintx NonNMethodCodeHeapSize = 7549744 {pd product} {ergonomic} + uintx NonProfiledCodeHeapSize = 244108496 {pd product} {ergonomic} + uintx ProfiledCodeHeapSize = 0 {pd product} {ergonomic} + uintx ReservedCodeCacheSize = 251658240 {pd product} {ergonomic} + bool SegmentedCodeCache = true {product} {ergonomic} + bool ShowCodeDetailsInExceptionMessages = true {manageable} {command line} + size_t SoftMaxHeapSize = 2097152000 {manageable} {ergonomic} + intx TieredStopAtLevel = 1 {product} {command line} + bool UseCompressedClassPointers = true {lp64_product} {ergonomic} + bool UseCompressedOops = true {lp64_product} {ergonomic} + bool UseG1GC = true {product} {ergonomic} + bool UseLargePagesIndividualAllocation = false {pd product} {ergonomic} + +Logging: +Log output configuration: + #0: stdout all=warning uptime,level,tags + #1: stderr all=off uptime,level,tags + +Environment Variables: +JAVA_HOME=F:\Java +PATH=C:/Users/hp/Downloads/sts-4.10.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin/server;C:/Users/hp/Downloads/sts-4.10.0.RELEASE//plugins/org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955/jre/bin;C:\Program Files\Common Files\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\dotnet\;C:\ProgramData\chocolatey\bin;C:\Users\hp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Program Files\nodejs\;C:\Program Files\MySQL\MySQL Shell 8.0\bin\;C:\Python39\Scripts\;C:\Python39\;C:\Users\hp\AppData\Local\Programs\Python\Python39\Scripts\;C:\Users\hp\AppData\Local\Programs\Python\Python39\;C:\Users\hp\AppData\Local\Microsoft\WindowsApps;C:\Users\hp\.dotnet\tools;C:\Users\hp\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\hp\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\hp\AppData\Local\GitHubDesktop\bin;F:\Java\bin;F:\Java\bin;C:\Program Files\MongoDB\Server\4.4\bin;C:\Users\hp\AppData\Roaming\npm;C:\Users\hp\Downloads\sts-4.10.0.RELEASE; +USERNAME=hp +OS=Windows_NT +PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 12, GenuineIntel + + + +--------------- S Y S T E M --------------- + +OS: + Windows 10 , 64 bit Build 19041 (10.0.19041.1889) +OS uptime: 0 days 3:07 hours +HyperV virtualization detected + +CPU: total 8 (initial active 8) (4 cores per cpu, 2 threads per core) family 6 model 142 stepping 12 microcode 0xde, cmov, cx8, fxsr, mmx, sse, sse2, sse3, ssse3, sse4.1, sse4.2, popcnt, vzeroupper, avx, avx2, aes, clmul, erms, 3dnowpref, lzcnt, ht, tsc, tscinvbit, bmi1, bmi2, adx, fma, clflush, clflushopt + +Memory: 4k page, system-wide physical 7995M (594M free) +TotalPageFile size 28028M (AvailPageFile size 1M) +current process WorkingSet (physical memory assigned to process): 35M, peak: 467M +current process commit charge ("private bytes"): 521M, peak: 768M + +vm_info: OpenJDK 64-Bit Server VM (15.0.2+7-27) for windows-amd64 JRE (15.0.2+7-27), built on Dec 7 2020 20:02:38 by "mach5one" with unknown MS VC++:1925 + +END. diff --git a/pro103ab-back-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log b/pro103ab-back-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log new file mode 100644 index 0000000..256a545 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/logs/ExceptionLogs/Error.log @@ -0,0 +1,45 @@ +2023-04-07T15:38:10.368+0530 ERROR Login Failed No value present +2023-04-14T12:20:09.761+0530 ERROR Login Failed No value present +2023-04-14T12:40:11.030+0530 ERROR Login Failed No value present +2023-04-14T12:43:04.245+0530 ERROR Login Failed No value present +2023-04-14T12:43:18.179+0530 ERROR Login Failed No value present +2023-04-14T12:47:15.982+0530 ERROR Login Failed No value present +2023-04-14T12:47:47.907+0530 ERROR Login Failed No value present +2023-04-14T12:49:20.899+0530 ERROR Login Failed No value present +2023-04-14T12:49:39.712+0530 ERROR Login Failed No value present +2023-04-14T12:49:54.172+0530 ERROR Login Failed No value present +2023-04-14T12:49:56.507+0530 ERROR Login Failed No value present +2023-04-14T12:49:59.471+0530 ERROR Login Failed No value present +2023-04-14T13:06:48.375+0530 ERROR Login Failed No value present +2023-04-14T14:17:17.959+0530 ERROR Login Failed No value present +2023-04-14T14:19:17.702+0530 ERROR Login Failed No value present +2023-04-14T14:24:27.427+0530 ERROR Login Failed No value present +2023-04-14T14:24:34.106+0530 ERROR Login Failed No value present +2023-04-14T14:24:59.329+0530 ERROR Login Failed No value present +2023-04-14T15:45:42.775+0530 ERROR Login Failed No value present +2023-04-14T18:27:38.701+0530 ERROR Login Failed Bad credentials +2023-09-29T12:37:11.138+0530 ERROR Login Failed Bad credentials +2023-09-29T23:54:39.748+0530 ERROR Login Failed Bad credentials +2023-10-21T16:34:16.901+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:16.905+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.029+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:17.046+0530 ERROR Authentication Failed. Username or Password not valid. +2023-10-21T16:34:46.579+0530 ERROR Authentication Failed. Username or Password not valid. +2023-11-03T10:51:17.798+0530 ERROR Login Failed Bad credentials +2023-11-03T12:48:05.904+0530 ERROR Login Failed Error creating bean with name 'inMemoryDatabaseShutdownExecutor': Singleton bean creation not allowed while singletons of this factory are in destruction (Do not request a bean from a BeanFactory in a destroy method implementation!) +2023-11-20T19:33:52.278+0530 ERROR Login Failed Bad credentials +2023-11-29T12:24:44.472+0530 ERROR Login Failed Bad credentials +2023-11-30T10:02:24.935+0530 ERROR Login Failed Bad credentials +2023-12-02T17:12:48.378+0530 ERROR Login Failed Bad credentials +2023-12-02T17:19:07.149+0530 ERROR Login Failed Bad credentials +2023-12-04T19:36:38.738+0530 ERROR Login Failed No value present +2023-12-04T19:36:48.189+0530 ERROR Login Failed No value present +2023-12-04T23:47:26.784+0530 ERROR Login Failed Bad credentials +2023-12-04T23:53:25.084+0530 ERROR Login Failed Bad credentials +2023-12-20T22:55:47.256+0530 ERROR Login Failed Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection +2023-12-20T22:55:47.257+0530 ERROR Login Failed Unable to acquire JDBC Connection; nested exception is org.hibernate.exception.JDBCConnectionException: Unable to acquire JDBC Connection +2023-12-29T17:03:49.832+0530 ERROR Authentication Failed. Username or Password not valid. +2023-12-29T17:03:49.833+0530 ERROR Authentication Failed. Username or Password not valid. +2023-12-29T23:27:43.701+0530 ERROR Authentication Failed. Username or Password not valid. diff --git a/pro103ab-back-b/authsec_springboot/backend/logs/SYSADMIN1673073474.log b/pro103ab-back-b/authsec_springboot/backend/logs/SYSADMIN1673073474.log new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-back-b/authsec_springboot/backend/logs/sysadmin1686312560.log b/pro103ab-back-b/authsec_springboot/backend/logs/sysadmin1686312560.log new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-back-b/authsec_springboot/backend/pom.xml b/pro103ab-back-b/authsec_springboot/backend/pom.xml new file mode 100644 index 0000000..16214a9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/pom.xml @@ -0,0 +1,549 @@ + + 4.0.0 + com.realnet + app + jar + 1.0.0 + REAL IT SOLUTIONS + + 2.7.0 + UTF-8 + UTF-8 + 1.8 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.5.RELEASE + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-actuator + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.swagger + swagger-annotations + + + io.swagger + swagger-models + + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + com.google.code.gson + gson + 2.8.5 + + + io.swagger + swagger-annotations + 1.5.22 + + + io.swagger + swagger-models + 1.5.22 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + org.apache.pdfbox + pdfbox + 2.0.29 + + + + + + + + + + + mysql + mysql-connector-java + 8.0.28 + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + org.apache.poi + poi-ooxml + 3.8-beta4 + + + org.apache.poi + poi-scratchpad + 3.9 + + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.postgresql + postgresql + runtime + + + org.xerial + sqlite-jdbc + 3.25.2 + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework + spring-messaging + + + + org.springframework.boot + spring-boot-starter-cache + + + com.github.ben-manes.caffeine + caffeine + + + + com.h2database + h2 + runtime + + + org.slf4j + slf4j-api + + + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.3.3.RELEASE + + + + org.springframework.security + spring-security-oauth2-client + + + org.springframework.social + spring-social-google + 1.0.0.RELEASE + + + org.springframework.social + spring-social-linkedin + 1.0.2.RELEASE + + + + + io.jsonwebtoken + jjwt + 0.9.0 + + + com.google.guava + guava + 23.5-jre + + + joda-time + joda-time + 2.9.9 + + + + + + + + com.fasterxml.jackson.core + jackson-core + 2.12.1 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.modelmapper + modelmapper + 2.3.0 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + commons-io + commons-io + 2.7 + + + + net.lingala.zip4j + zip4j + 2.6.1 + + + org.json + json + 20171018 + + + org.projectlombok + lombok + 1.18.20 + provided + + + javax.xml.bind + jaxb-api + 2.3.0 + + + org.springframework.boot + spring-boot-devtools + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + org.apache.clerezza.ext + org.json.simple + 0.4 + + + commons-codec + commons-codec + 1.10 + + + org.springframework.boot + spring-boot-starter-webflux + + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + ooxml-schemas + 1.4 + + + + org.json + json + 20201115 + + + com.jcraft + jsch + 0.1.55 + + + org.json + json + 20201115 + + + + org.json + json + 20201115 + + + + com.twilio.sdk + twilio + 8.18.0 + + + + org.xhtmlrenderer + flying-saucer-pdf + 9.1.22 + + + + + com.lowagie + itext + 2.1.7 + + + + + + org.seleniumhq.selenium + selenium-java + 3.141.59 + + + + + com.itextpdf + itextpdf + 5.5.13.2 + + + + + org.postgresql + postgresql + 42.2.24 + + + + + org.mariadb.jdbc + mariadb-java-client + 3.1.2 + + + + + com.ibm.db2 + jcc + 11.5.5.0 + + + + + + redis.clients + jedis + 3.7.0 + + + + + + + + + + org.firebirdsql.jdbc + jaybird + 4.0.0.java11 + + + + + + + com.orientechnologies + orientdb-core + 3.2.19 + + + + + com.orientechnologies + orientdb-jdbc + 3.2.19 + + + + + software.amazon.awssdk + dynamodb + 2.17.102 + + + + + com.couchbase.client + java-client + 3.1.5 + + + io.projectreactor + reactor-core + 3.4.13 + + + + + org.neo4j + neo4j-jdbc-bolt + 5.0.0 + + + + + com.paytm.pg + paytm-checksum + 1.2.1 + + + + com.razorpay + razorpay-java + 1.4.4 + + + + + org.jsoup + jsoup + 1.14.3 + + + + org.springframework + spring-test + + + + + org.apache.pdfbox + pdfbox + 2.0.28 + + + + + org.apache.xmlgraphics + fop + 2.6 + + + + org.apache.commons + commons-csv + 1.4 + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + com.opencsv + opencsv + 5.5 + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java new file mode 100644 index 0000000..d5237e5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/BillingSequentialApi.java @@ -0,0 +1,304 @@ +//package com.realnet.Billing.Api.Controllers; +// +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map.Entry; +//import java.util.Optional; +//import java.util.Set; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Entitys.ServiceOrder_t; +//import com.realnet.Billing.Repositorys.ServiceOrder_Repository; +//import com.realnet.Billing.Services.ServiceOrder_Service; +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Customer_master.Entity.Customer_master_t; +//import com.realnet.Customer_master.Repository.Customer_master_Repository; +//import com.realnet.DocumentBuilder.Entity.DocumentBuilder_t; +//import com.realnet.DocumentBuilder.Entity.Document_builder_lines; +//import com.realnet.DocumentBuilder.Services.DocumentBuilder_Service; +//import com.realnet.DocumentBuilder.Services.StringReplacementService; +// +//@RestController +// +//public class BillingSequentialApi { +// +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository; +// +// @Autowired +// private DocumentBuilder_Service Service; +// +//// @Autowired +//// private Fileupload_helper fileuploadhelper; +// +// @Autowired +// private StringReplacementService replacementService; +// +// @Autowired +// private Customer_master_Repository customer_master_Repository; +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Value("${projectPath}") +// private String projectPath; +// +// public final String UPLOAD_DIREC = "/Files"; +// +// @Autowired +// private ServiceOrder_Service serviceOrder_Service; +// +// @GetMapping("/process-all-customers") +// public ResponseEntity processAllCustomers() { +// try { +// // Step 1: Create Service Orders for all customers +// List customers = customer_master_Repository.findAll(); +// for (Customer_master_t customer : customers) { +// serviceOrder_Service.createServiceOrderFromCustomer(customer); +// +// } +// +// // Step 2: Approve all pending service orders +// int updatedCount = serviceOrder_Service.approvePendingOrders(); +// +// // step 3: +// +// List autoApprovedServiceOrderIds = serviceOrder_Repository.findIdsByStatusOrderByAsc("AutoApproved"); +// +// // Process the service orders +// for (Long serviceOrderId : autoApprovedServiceOrderIds) { +// Optional serviceOrderOptional = serviceOrder_Repository.findById(serviceOrderId); +// +// if (serviceOrderOptional.isPresent()) { +// ServiceOrder_t serviceOrder = serviceOrderOptional.get(); +// String entityName = serviceOrder.getEntity(); +// +// // Fetch the corresponding customer(s) by entity name +// List customers1 = customer_master_Repository.findByEntityName(entityName); +// +// if (!customers1.isEmpty()) { +// // Assuming you want to process each customer found +// for (Customer_master_t customer : customers1) { +// // Now you have the serviceOrderId, entityName, and customer for processing +// String proformaInvoiceFileName = generateProformaInvoice(serviceOrderId); +// +// // step 4 +// sendEmailWithProformaInvoice(customer, proformaInvoiceFileName); +// } +// } else { +// // Handle the case where no customer was found for the given entity name +// } +// } else { +// // Handle the case where no service order was found for the given ID +// } +// } +// +// return ResponseEntity.ok("Processed all customers and generated invoices. " + updatedCount +// + " service orders were approved."); +// } catch (Exception e) { +// // Handle exceptions appropriately +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) +// .body("Error processing customers: " + e.getMessage()); +// } +// } +// +// private String generateProformaInvoice(Long serviceOrderId) throws Exception { +// +// long documentId = 98; +// HashMap map = new HashMap<>(); +// JsonParser parser = new JsonParser(); +// DocumentBuilder_t doc = Service.getdetailsbyId(documentId); +// String file_name = doc.getFile_name(); +// String file_path = doc.getFile_path(); +// +// String replacerule = ""; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// JsonObject getbodyobject = null; +// String ModifyfileName = null; +// +// // .....................// +// +// List docline = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : docline) { +// String model = line.getModel(); +// JsonParser parser1 = new JsonParser(); +// JsonArray jsonArray = parser1.parse(model).getAsJsonArray(); +// +// for (JsonElement element : jsonArray) { +// JsonObject jsonObject = element.getAsJsonObject(); +// if (jsonObject.has("name")) { +// ModifyfileName = jsonObject.get("name").getAsString(); +// break; // Break the loop once you find the first object with a "name" field +// } +// } +// +// if (ModifyfileName != null) { +// // Now 'nameValue' contains the value of the "name" field +// System.out.println("nameValue: " + ModifyfileName); +// break; // Break the outer loop as well, if needed +// } +// } +// +// if (ModifyfileName == null) { +// // Handle the case where no object with a "name" field was found +// System.out.println("No object with a 'name' field found."); +// } +// +// // long serviceOrderId = serviceOrderId2.getId(); +// ModifyfileName = ModifyfileName.replace("?", String.valueOf(serviceOrderId)); +// ModifyfileName = ModifyfileName + ".docx"; +// String newFilepath = replacementService.copyWordFile(file_path, file_name, file_path, ModifyfileName); +// +// // ..........................// +// +// List lines = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : lines) { +// String model = line.getModel(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Initialize")) { +// String a_uri = object.get("a_uri").toString().replaceAll("\"", ""); +// a_uri = a_uri.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +// +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// } +// } +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Mapper")) { +// String mapper = object.get("mappers").getAsString(); +// +// JsonElement parse = parser.parse(mapper); +// JsonArray mapArray = parse.getAsJsonArray(); +// for (JsonElement maps : mapArray) { +// JsonObject jsonObject = maps.getAsJsonObject(); +// startstring = jsonObject.get("start_string").toString().replaceAll("\"", ""); +// endstring = jsonObject.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = jsonObject.get("replace_with").toString().replaceAll("\"", ""); +// keyword = jsonObject.get("Keyword").toString().replaceAll("\"", ""); +// linestring = jsonObject.get("line_string").toString().replaceAll("\"", ""); +// operation = jsonObject.get("operation").toString().replaceAll("\"", ""); +// cellAddress = jsonObject.get("cellAddress").toString().replaceAll("\"", ""); +// Set> entrySet = getbodyobject.entrySet(); +// for (Entry entry : entrySet) { +// +// String key = entry.getKey().toString().replaceAll("\"", ""); +// String value = entry.getValue().toString().replaceAll("\"", ""); +// +// if (replaceWith.equalsIgnoreCase(key)) { +// replaceWith = value; +// break; +// } +// +// } +// +// if (operation.contains("replacebyfirstandlast")) { +// +// replacerule = replacementService.replacewithstartandend(file_path, file_name, startstring, +// endstring, replaceWith); +// +// } +// +// if (operation.contains("appending")) { +// replacerule = replacementService.appendToSlide(linestring, replaceWith, file_path, +// file_name); +// } +// +// if (operation.contains("linereplacement")) { +// replacerule = replacementService.linereplacementForPPT(file_path, file_name, keyword, +// replaceWith); +// } +// if (operation.contains("replacement")) { +// replacerule = replacementService.replacesting(newFilepath, file_name, keyword, replaceWith, +// ModifyfileName); +// +// } +// +// if (operation.contains("excelcellReplace")) { +// replacerule = replacementService.excelcellReplace(file_path, file_name, cellAddress, +// replaceWith); +// +// } +// +// } +// } +// +// } +// } +// +// return replacerule; +// +// } +// +// private void sendEmailWithProformaInvoice(Customer_master_t customer, String fileName) { +// +// Long id = customer.getId(); +// String email = customer.getEmail(); +// +// String gateway = "EMAIL"; +// String sendTo = email; +// String replacementString = "no"; +// String cc = email; +// String template = "PerfomaInvoice"; +// +// // Create a new Com_jobTable instance and set its values +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setJob_type("EMAIL"); // Set the job type to "EMAIL" +// comJobTable.setSend_to(sendTo); +// comJobTable.setGatewayName(gateway); +// comJobTable.setAttachment(fileName); +// comJobTable.setGatewaydone("N"); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setCc(cc); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setTemplate_name(template); +// // Save the Com_jobTable entity using your repository or service +// Com_jobTablerepo.save(comJobTable); +// +// } +// +// public ResponseEntity GET(String get) { +// RestTemplate restTemplate = new RestTemplate(); +// +// ResponseEntity u = restTemplate.getForEntity(get, Object.class); +// +// return u; +// +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java new file mode 100644 index 0000000..3d3a4d2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Api/Controllers/ServiceOrderApiController.java @@ -0,0 +1,403 @@ +//package com.realnet.Billing.Api.Controllers; +// +//import java.io.ByteArrayOutputStream; +//import java.util.HashMap; +//import java.util.List; +//import java.util.Map.Entry; +//import java.util.Optional; +//import java.util.Set; +// +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.xssf.usermodel.XSSFWorkbook; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.beans.factory.annotation.Value; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PutMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Entitys.Invoice_t; +//import com.realnet.Billing.Entitys.ServiceOrder_t; +//import com.realnet.Billing.Repositorys.ServiceOrder_Repository; +//import com.realnet.Billing.Services.ServiceOrder_Service; +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Customer_master.Entity.Customer_master_t; +//import com.realnet.Customer_master.Repository.Customer_master_Repository; +//import com.realnet.DocumentBuilder.Entity.DocumentBuilder_t; +//import com.realnet.DocumentBuilder.Entity.Document_builder_lines; +//import com.realnet.DocumentBuilder.Services.DocumentBuilder_Service; +//import com.realnet.DocumentBuilder.Services.StringReplacementService; +//import com.realnet.fileupload.helper.Fileupload_helper; +// +//@RestController +//@RequestMapping("/api/serviceorders") +//public class ServiceOrderApiController { +// +// @Autowired +// private ServiceOrder_Service serviceOrder_Service; +// +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository; +// +// @Autowired +// private DocumentBuilder_Service Service; +// +// @Autowired +// private Fileupload_helper fileuploadhelper; +// +// @Autowired +// private StringReplacementService replacementService; +// +// @Autowired +// private Customer_master_Repository customer_master_Repository; +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Value("${projectPath}") +// private String projectPath; +// +// public final String UPLOAD_DIREC = "/Files"; +// +// // based on the period autocomplete all pending status +// @GetMapping("/update-status") +// public ResponseEntity updateStatusForExpiredOrders() { +// int updatedCount = serviceOrder_Service.updateStatusForExpiredOrders(); +// return ResponseEntity.ok("Updated " + updatedCount + " orders"); +// } +// +// // download profoma invoice +// @GetMapping("/generate-excel/{id}") +// public ResponseEntity generateExcel(@PathVariable Long id) { +// ServiceOrder_t serviceOrder = serviceOrder_Service.findById(id); +// +// if (serviceOrder != null) { +// Workbook workbook = generateExcelForServiceOrder(serviceOrder); +// +// try { +// ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); +// workbook.write(outputStream); +// byte[] excelBytes = outputStream.toByteArray(); +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// headers.setContentDispositionFormData("attachment", "service_order.xlsx"); +// return new ResponseEntity<>(excelBytes, headers, HttpStatus.OK); +// } catch (Exception e) { +// // Handle exceptions +// } +// } +// +// return ResponseEntity.notFound().build(); +// } +// +// public Workbook generateExcelForServiceOrder(ServiceOrder_t serviceOrder) { +// Workbook workbook = new XSSFWorkbook(); +// Sheet sheet = workbook.createSheet("Service Order"); +// +// // Create header row +// Row headerRow = sheet.createRow(0); +// headerRow.createCell(0).setCellValue("Service Order ID"); +// headerRow.createCell(1).setCellValue("Service Order Seq"); +// +// // Add more header cells for other fields as needed... +// +// // Create data row +// Row dataRow = sheet.createRow(1); +// dataRow.createCell(0).setCellValue(serviceOrder.getId()); +// dataRow.createCell(1).setCellValue(serviceOrder.getServiceOrderSeq()); +// // Add more data cells for other fields as needed... +// +// return workbook; +// } +// +// // to HOLD status +//// @PutMapping("/change-service-order-status/{profomaInvoiceId}") +//// public ResponseEntity changeServiceOrderStatus(@PathVariable Long profomaInvoiceId) { +//// // Fetch the ProfomaInvoice by ID +//// ProfomaInvoice profomaInvoice = profomaInvoice_Service.findById(profomaInvoiceId); +//// +//// if (profomaInvoice != null) { +//// // Get the associated ServiceOrderId from ProfomaInvoice +//// Long serviceOrderId = profomaInvoice.getServiceOrderId(); +//// +//// // Fetch the associated ServiceOrder_t entity +//// ServiceOrder_t serviceOrder = serviceOrder_Service.findById(serviceOrderId); +//// +//// if (serviceOrder != null) { +//// // Update the status to "HOLD" +//// serviceOrder.setStatus("HOLD"); +//// serviceOrder_Service.saveData(serviceOrder); +//// +//// return ResponseEntity.ok("ServiceOrder status updated to HOLD"); +//// } +//// } +//// +//// return ResponseEntity.notFound().build(); +//// } +// +// // Auto Creation Service order to invoicecopyServiceOrderToInvoice api +// @GetMapping("/copyServiceOrderToInvoice") +// public List copyServiceOrderToInvoice() { +// List createdInvoice = serviceOrder_Service.createInvoicesForAutoApprovedServiceOrders(); +// return createdInvoice; +// } +// +////document status HOLD api (custmer hold) (old history table crude insert record),,service order release then it release hold +// @PutMapping("/updateHoldstatus/{id}") +// public ResponseEntity updateStatusById(@PathVariable Long id) { +// try { +// // Hardcode the new status value to "HOLD" +// serviceOrder_Service.updateStatusById(id, "HOLD"); +// return ResponseEntity.ok("Status updated to HOLD successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +////so release hold +// @PutMapping("/updateResolvestatus/{id}") +// public ResponseEntity updateStatusResolvedById(@PathVariable Long id) { +// try { +// +// serviceOrder_Service.updateStatusById(id, "RESOLVED"); +// return ResponseEntity.ok("Status updated to HOLD successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +// @PutMapping("/updateCustomerApprovedestatus/{id}") +// public ResponseEntity updateStatusCustomerApprovedById(@PathVariable Long id) { +// try { +// +// serviceOrder_Service.updateStatusById(id, "CustomerApproved"); +// return ResponseEntity.ok("Status updated to Approvec successfully"); +// } catch (Exception e) { +// // Handle exceptions, e.g., if the entity with the given ID is not found +// return ResponseEntity.badRequest().body("Failed to update status: " + e.getMessage()); +// } +// } +// +// @GetMapping("/customerGenerate") +// public void generateServiceOrder() { +// serviceOrder_Service.generateServiceOrders(); +// } +// +// @GetMapping("/approvePending") +// public ResponseEntity approvePendingOrders() { +// int updatedCount = serviceOrder_Service.approvePendingOrders(); +// return ResponseEntity.ok("Approved " + updatedCount + " pending orders"); +// } +// +// @GetMapping("/perfomaInvoiceCreation/{serviceOrderId}") +// public ResponseEntity perfomaInvoiceCreation(@PathVariable long serviceOrderId) throws Exception { +// +// long documentId = 98; +// HashMap map = new HashMap<>(); +// JsonParser parser = new JsonParser(); +// DocumentBuilder_t doc = Service.getdetailsbyId(documentId); +// String file_name = doc.getFile_name(); +// String file_path = doc.getFile_path(); +// +// String replacerule = ""; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// JsonObject getbodyobject = null; +// String ModifyfileName = null; +// +// // .....................// +// +// List docline = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : docline) { +// String model = line.getModel(); +// JsonParser parser1 = new JsonParser(); +// JsonArray jsonArray = parser1.parse(model).getAsJsonArray(); +// +// for (JsonElement element : jsonArray) { +// JsonObject jsonObject = element.getAsJsonObject(); +// if (jsonObject.has("name")) { +// ModifyfileName = jsonObject.get("name").getAsString(); +// break; // Break the loop once you find the first object with a "name" field +// } +// } +// +// if (ModifyfileName != null) { +// // Now 'nameValue' contains the value of the "name" field +// System.out.println("nameValue: " + ModifyfileName); +// break; // Break the outer loop as well, if needed +// } +// } +// +// if (ModifyfileName == null) { +// // Handle the case where no object with a "name" field was found +// System.out.println("No object with a 'name' field found."); +// } +// +// ModifyfileName = ModifyfileName.replace("?", String.valueOf(serviceOrderId)); +// ModifyfileName = ModifyfileName + ".docx"; +// String newFilepath = replacementService.copyWordFile(file_path, file_name, file_path, ModifyfileName); +// +// // ..........................// +// +// List lines = doc.getDocument_builder_lines(); +// +// for (Document_builder_lines line : lines) { +// String model = line.getModel(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Initialize")) { +// String a_uri = object.get("a_uri").toString().replaceAll("\"", ""); +// a_uri = a_uri.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +//// Object body = GET(a_uri).getBody(); +//// JsonElement getbody = parser.parse(body.toString()); +//// getbodyobject = getbody.getAsJsonObject(); +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// } +// } +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// String type = object.get("type").getAsString(); +// if (type.equalsIgnoreCase("Mapper")) { +// String mapper = object.get("mappers").getAsString(); +// +// JsonElement parse = parser.parse(mapper); +// JsonArray mapArray = parse.getAsJsonArray(); +// for (JsonElement maps : mapArray) { +// JsonObject jsonObject = maps.getAsJsonObject(); +// startstring = jsonObject.get("start_string").toString().replaceAll("\"", ""); +// endstring = jsonObject.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = jsonObject.get("replace_with").toString().replaceAll("\"", ""); +// keyword = jsonObject.get("Keyword").toString().replaceAll("\"", ""); +// linestring = jsonObject.get("line_string").toString().replaceAll("\"", ""); +// operation = jsonObject.get("operation").toString().replaceAll("\"", ""); +// cellAddress = jsonObject.get("cellAddress").toString().replaceAll("\"", ""); +// Set> entrySet = getbodyobject.entrySet(); +// for (Entry entry : entrySet) { +// +// String key = entry.getKey().toString().replaceAll("\"", ""); +// String value = entry.getValue().toString().replaceAll("\"", ""); +// +// if (replaceWith.equalsIgnoreCase(key)) { +// replaceWith = value; +// break; +// } +// +// } +// +// if (operation.contains("replacebyfirstandlast")) { +// +// replacerule = replacementService.replacewithstartandend(file_path, file_name, startstring, +// endstring, replaceWith); +// +// } +// +// if (operation.contains("appending")) { +// replacerule = replacementService.appendToSlide(linestring, replaceWith, file_path, +// file_name); +// } +// +// if (operation.contains("linereplacement")) { +// replacerule = replacementService.linereplacementForPPT(file_path, file_name, keyword, +// replaceWith); +// } +// if (operation.contains("replacement")) { +// replacerule = replacementService.replacesting(newFilepath, file_name, keyword, replaceWith, +// ModifyfileName); +// +// } +// +// if (operation.contains("excelcellReplace")) { +// replacerule = replacementService.excelcellReplace(file_path, file_name, cellAddress, +// replaceWith); +// +// } +// +// } +// } +// +// } +// } +// +// return new ResponseEntity<>(replacerule, HttpStatus.CREATED); +// } +// +// @GetMapping("/sendEmail/{id}/{fileName}") +// public ResponseEntity sendEmail(@PathVariable Long id, @PathVariable String fileName) { +// +// Optional customer_master_t = customer_master_Repository.findById(id); +// +// String email = null; +// if (customer_master_t.isPresent()) { +// Customer_master_t customer = customer_master_t.get(); +// email = customer.getEmail(); +// +// } +// +// String gateway = "EMAIL"; +// String sendTo = email; +// String replacementString = "no"; +// String cc = email; +// String template = "PerfomaInvoice"; +// +// // Create a new Com_jobTable instance and set its values +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setJob_type("EMAIL"); // Set the job type to "EMAIL" +// comJobTable.setSend_to(sendTo); +// comJobTable.setGatewayName(gateway); +// comJobTable.setAttachment(fileName); +// comJobTable.setGatewaydone("N"); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setCc(cc); +// comJobTable.setReplacement_string(replacementString); +// comJobTable.setTemplate_name(template); +// // Save the Com_jobTable entity using your repository or service +// Com_jobTablerepo.save(comJobTable); +// +// return new ResponseEntity<>("Email sent successfully and job data saved!", HttpStatus.OK); +// } +// +// public ResponseEntity GET(String get) { +// RestTemplate restTemplate = new RestTemplate(); +// +// ResponseEntity u = restTemplate.getForEntity(get, Object.class); +// +// return u; +// +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java new file mode 100644 index 0000000..adbc786 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalHistory_Controller.java @@ -0,0 +1,62 @@ +package com.realnet.Billing.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import com.realnet.Billing.Dto.ServiceOrderDto; +import com.realnet.Billing.Entitys.ApprovalHistory_t; +import com.realnet.Billing.Services.ApprovalHistory_Service; + +@RequestMapping(value = "/ApprovalHistory") +@RestController +public class ApprovalHistory_Controller { + + @Autowired + private ApprovalHistory_Service Service; + + @PostMapping("/ApprovalHistory") + public ApprovalHistory_t Savedata(@RequestBody ApprovalHistory_t data) { + ApprovalHistory_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/ApprovalHistory") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/ApprovalHistory/{id}") + public ApprovalHistory_t getdetailsbyId(@PathVariable Long id) { + ApprovalHistory_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ApprovalHistory/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/ApprovalHistory/{id}") + public ApprovalHistory_t update(@RequestBody ApprovalHistory_t data, @PathVariable Long id) { + ApprovalHistory_t update = Service.update(data, id); + return update; + } + +// @PutMapping("/updateServiceOrderStatus") +// public ResponseEntity updateServiceOrderStatus( +// @RequestParam Long serviceOrderId, +// @RequestParam String newStatus, +// @RequestParam String actionedBy, +// @RequestParam String comments +// ) { +// ServiceOrderDto updatedServiceOrder = Service.updateServiceOrderStatus(serviceOrderId, newStatus, actionedBy, comments); +// return new ResponseEntity<>(updatedServiceOrder, HttpStatus.OK); +// } +// +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java new file mode 100644 index 0000000..a7530a0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Controllers/ApprovalQueue_Controller.java @@ -0,0 +1,89 @@ +package com.realnet.Billing.Controllers; + +import com.realnet.Billing.Dto.ApprovalNote_SO; +import com.realnet.Billing.Dto.ApprovalQueue_SO; +import com.realnet.Billing.Repositorys.ApprovalReturnHistory_Repo; +import com.realnet.Billing.Services.ApprovalQueueService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Date; +import java.util.List; + +@RestController +@RequestMapping("/billing/approval") +public class ApprovalQueue_Controller { + + @Autowired + private ApprovalQueueService approvalQueueService; + + @PostMapping("/add") + public ResponseEntity addApprovalQueue( + @RequestBody ApprovalQueue_SO approvalQueueSOSO + ) { + return ResponseEntity.ok(approvalQueueService.saveApprovalQueue(approvalQueueSOSO)); + } + + @GetMapping("/getAll") + public List getAllApprovalQueue() { + return approvalQueueService.getAllApprovalQueue(); + } + + @GetMapping("/get/{id}") + public ResponseEntity getApprovalQueueById( + @PathVariable Long id) { + ApprovalQueue_SO approvalQueueSOSO = approvalQueueService.getApprovalQueueById(id); + if (approvalQueueSOSO != null) { + return ResponseEntity.ok(approvalQueueSOSO); + } else { + return ResponseEntity.notFound().build(); + } + } + + @GetMapping("/getall/{docSeq}") + public ResponseEntity> getAllQueueForDoc(@PathVariable Long docSeq) { + List approvalQueueSOSOList = approvalQueueService.getAllQueueForDocument(docSeq); + + if (approvalQueueSOSOList.isEmpty()) { + return ResponseEntity.notFound().build(); + } + + return ResponseEntity.ok(approvalQueueSOSOList); + } + + + @PutMapping("/update/{id}") + public ResponseEntity updateApprovalQueue( + @PathVariable Long id, @RequestBody ApprovalQueue_SO updatedApprovalQueueSOSO) { + ApprovalQueue_SO existingApprovalQueueSOSO = approvalQueueService.getApprovalQueueById(id); + if (existingApprovalQueueSOSO != null) { + existingApprovalQueueSOSO.setApprover(updatedApprovalQueueSOSO.getApprover()); + existingApprovalQueueSOSO.setActionType(updatedApprovalQueueSOSO.getActionType()); + existingApprovalQueueSOSO.setActionTaken(updatedApprovalQueueSOSO.getActionTaken()); + existingApprovalQueueSOSO.setComments(updatedApprovalQueueSOSO.getComments()); + existingApprovalQueueSOSO.setActionedAt(updatedApprovalQueueSOSO.getActionedAt()); + + ApprovalQueue_SO updatedQueue = approvalQueueService.saveApprovalQueue(existingApprovalQueueSOSO); + return ResponseEntity.ok(updatedQueue); + } else { + return ResponseEntity.notFound().build(); + } + } + + // ******************************************************************************* \\ + // History-Controller \\ + + @Autowired + private ApprovalReturnHistory_Repo returnHistoryRepo; + + @PostMapping("/return") + public ResponseEntity saveReturnResponse( + @RequestBody ApprovalNote_SO history + ){ + history.setActionDate(new Date()); + System.out.println(history); + return ResponseEntity.ok(returnHistoryRepo.save(history)); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java new file mode 100644 index 0000000..06752e8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalNote_SO.java @@ -0,0 +1,27 @@ +package com.realnet.Billing.Dto; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import lombok.Data; + +import javax.persistence.*; +import java.util.Date; + +@Entity +@Data +public class ApprovalNote_SO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String documentSeq; + private String actionTaken; + private String actionNote; + + private Date actionDate; + + @ManyToOne + @JoinColumn(name = "approval_queue_id") + @JsonBackReference + private ApprovalQueue_SO approvalQueueSO; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java new file mode 100644 index 0000000..dd2408d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ApprovalQueue_SO.java @@ -0,0 +1,44 @@ +package com.realnet.Billing.Dto; + +import java.util.Date; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; + +@Entity +@Data +public class ApprovalQueue_SO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String formCode; + private String documentSeq; + private String approver; + private String actionType; + private String actionTaken; + private String comments; + private Date actionedAt; + + private String tablename; + + @OneToMany(mappedBy = "approvalQueueSO", cascade = CascadeType.ALL) + @JsonManagedReference + private List history; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "service_order_id") +// @JsonBackReference + private Long service_order_id; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java new file mode 100644 index 0000000..6c39ead --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/BillingPeriodsResponse.java @@ -0,0 +1,32 @@ +package com.realnet.Billing.Dto; + + + +import java.util.Date; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Data +@Getter +@Setter +public class BillingPeriodsResponse { + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date periodStart; + + @JsonFormat(pattern = "yyyy-MM-dd") + private Date periodEnd; + + // Constructors, getters, setters + + + public BillingPeriodsResponse(Date periodStart, Date periodEnd) { + this.periodStart = periodStart; + this.periodEnd = periodEnd; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java new file mode 100644 index 0000000..da1cd76 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceOrderDto.java @@ -0,0 +1,22 @@ +package com.realnet.Billing.Dto; + +import lombok.Data; + +@Data +public class ServiceOrderDto { + private Long id; + private String orderType; + private String orderNo; + private String orderGenerationDate; + private String serviceRequestBy; + private String serviceRenderedFrom; + private String serviceRenderedTo; + private String contactNumber; + private String poNumber; + private String status; + private String remarks; + private String deliveryTerms; + // Other attributes as needed + + // Getters and setters +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java new file mode 100644 index 0000000..0fd18cc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Dto/ServiceWithDiscount.java @@ -0,0 +1,48 @@ +package com.realnet.Billing.Dto; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; + + +import lombok.Data; + +@Data +public class ServiceWithDiscount { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String memo; + private boolean active; + private String type; + private String period; + private String sellPrice; + private String selfCost; + + private String serviceCode; + private String hsnCodes; + private boolean exempt; + private boolean nonGst; + private String taxRateType; + private String tarrifCode; + private String hsn_sacNumber; + private String natureOfTrans; + private String productType; + + @Lob + private String inputJson; + + + private String disc; + + + private String gst ; + +} + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java new file mode 100644 index 0000000..5e2b19b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/ApprovalHistory_t.java @@ -0,0 +1,23 @@ +package com.realnet.Billing.Entitys; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class ApprovalHistory_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String document_type; + private Long document_id; + private String actioned_by; + private String action; + private String comments; + + private String approvalStatus; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java new file mode 100644 index 0000000..1317154 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/BillingPeriods_t.java @@ -0,0 +1,26 @@ +package com.realnet.Billing.Entitys; + +import lombok.*; + +import java.util.Date; + +import javax.persistence.*; + + +@Entity +@Data +public class BillingPeriods_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Date periodStart; + + private Date periodEnd; + + private Date dueDate; + + private String status; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java new file mode 100644 index 0000000..583b64d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Entitys/CustomerRates_t.java @@ -0,0 +1,32 @@ +package com.realnet.Billing.Entitys; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Who_column; + +import lombok.Data; + +@Entity +@Data +public class CustomerRates_t extends Who_column { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String rateCard; + private String destination; + private String numericPrefix; + private String sellRate; + private String blockMinDuration; + private String initBlockRate; + private String dateStart; + private String dateEnd; + private String enabled; + private String dateAdded; + private String dateModified; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java new file mode 100644 index 0000000..f3531ea --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Controller/BillingJobServiceController.java @@ -0,0 +1,325 @@ +//package com.realnet.Billing.Job.Controller; +// +//import java.sql.SQLException; +//import java.util.ArrayList; +//import java.util.HashMap; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpEntity; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.client.RestTemplate; +// +//import com.google.gson.JsonArray; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.Billing.Job.Entity.BillingJobEntity; +//import com.realnet.Billing.Job.Repository.BillingJobRepository; +// +//import com.realnet.utils.Port_Constant; +// +//@RestController +//@RequestMapping("/token/BillingWorkflow/surejob") +//public class BillingJobServiceController { +// Logger log = LoggerFactory.getLogger(BillingJobServiceController.class); +// +// @Autowired +// private BillingJobRepository jobrepo; +// +// @Autowired +// private BillingPerfomaWorkFlowLineRepository flowrepo; +// +// @Autowired +// private BillingPerfomaWorkFlowLineRepository line_repo; +// +// @Autowired +// private BillingTaxInvoiceWorkFlowLineRepository billingTaxInvoiceWorkFlowLineRepository; +// +// @Autowired +// BillingJobService service; +// +// @PostMapping("/assignJob") +// public ResponseEntity jobAssign() { +// BillingJobEntity obj = new BillingJobEntity(); +// BillingJobEntity obj2 = new BillingJobEntity(); +// // DataflowJobConsolidationEntity obj3 = new DataflowJobConsolidationEntity(); +// +// obj.setConnection_name(null); +// obj.setJob_type("PerfomaInvoice"); +// obj.setMethod("GET"); +// obj.setParameters(null); +// obj.setUrl("/token/PerfomaSequentialApi/executeWorkflow"); +// obj.setRef(null); +// jobrepo.save(obj); +// +// obj2.setConnection_name(null); +// obj2.setJob_type("TaxInvoice"); +// obj2.setMethod("GET"); +// obj2.setParameters(null); +// obj2.setRef(null); +// obj2.setUrl("/token/consolidation/MergeData"); +// jobrepo.save(obj2); +// +// return new ResponseEntity<>(obj2, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/getjob/{job_type}") +// public ResponseEntity getByJob(@PathVariable String job_type) { +// +// BillingJobEntity jobtype = jobrepo.getByJobType(job_type); +// return new ResponseEntity<>(jobtype, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/create_job/{id}") +// public ResponseEntity createjob(@PathVariable Long id) throws SQLException { +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// String title = ""; +// String node = ""; +// ArrayList list = new ArrayList<>(); +// BillingPerfomaWorkFlowLine lines = flowrepo.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +//// Iterator iterator = array.iterator(); +// +// List jobNamesList = new ArrayList<>(); +// +// for (JsonElement jsonElement : array) { +// +// JsonObject jsonObject = jsonElement.getAsJsonObject(); +// +// title = jsonObject.get("title").getAsString(); +// +// StringBuilder builder = new StringBuilder(); +// +// builder.append("no data"); +// System.out.println(builder.toString()); +// +// Map jobprodata = new HashMap(); +// jobprodata.put("jobName", title + "_" + System.currentTimeMillis()); +// jobprodata.put("jobGroup", "PerfomaInvoice"); +// +// jobprodata.put("startTime", "2022-12-26T13:02"); +// jobprodata.put("counter", "5"); +// jobprodata.put("repeatTime", "5"); +// jobprodata.put("cronExpression", "0/10 * * * * ?"); +// jobprodata.put("line_id", id.toString()); +// jobprodata.put("node_id", "null"); +// +// System.out.println(jobprodata); +// +// System.out.println(jobprodata); +// +// RestTemplate restTemplate = new RestTemplate(); +// String jobprourl2 = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.SURE_JOB_8089 +// + "/surejob/schedule"; +// HttpHeaders headers2 = getHeaders(); +// HttpEntity request2 = new HttpEntity(jobprodata, headers2); +// +// ResponseEntity res2 = restTemplate.postForEntity(jobprourl2, request2, Object.class); +// System.out.println(res2.getStatusCodeValue()); +// +// if (res2.getStatusCodeValue() == 200) { +// log.info("Gitea data inserted in sure job"); +// System.out.println(res2.getBody()); +// jobNamesList.add(jobprodata.get("jobName")); +// // jobNamesList.add(jobprodata.get("jobGroup")); +// +// } +// } +// +// return new ResponseEntity<>(jobNamesList, HttpStatus.ACCEPTED); +// } +// +// @GetMapping("/surejob/{id}") +// public ResponseEntity forjobscheduler(@PathVariable Long id) throws SQLException { +// +// ArrayList list = new ArrayList<>(); +// BillingPerfomaWorkFlowLine lines = flowrepo.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// BillingJobEntity job = null; +// +// Boolean auto_mapping = true; +// while (iterator.hasNext()) { +// +// Object next = iterator.next(); +// JsonElement parse = parser.parse(next.toString()); +// JsonObject jsonObject = parse.getAsJsonObject(); +// // int i = jsonObject.get("id").getAsInt(); +// +// +// job_type = "PerfomaInvoice"; +// +//// if (job_type.isEmpty() || job_type.contains("null") || job_type == null) { +//// job_type = jsonObject.get("type").toString().replaceAll("\"", ""); +//// } +// +// job = jobrepo.getByJobType(job_type); +// +// break; +//// } +// +// } +// return new ResponseEntity<>(job, HttpStatus.ACCEPTED); +// } +//// GET DATA FLOW LINE +// +// @GetMapping("/getline/{id}") +// public ResponseEntity getline(@PathVariable Long id) { +// +// return new ResponseEntity<>(line_repo.getSetuWorkflowlines(id), HttpStatus.ACCEPTED); +// +// } +// +// private HttpHeaders getHeaders() { +// HttpHeaders headers = new HttpHeaders(); +// headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); +// headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); +// return headers; +// } +// +// // Tax Invoice Job Start +// +// @GetMapping("/create_job/{id}") +// public ResponseEntity createjobforTaxInvoice(@PathVariable Long id) throws SQLException { +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// String title = ""; +// String node = ""; +// ArrayList list = new ArrayList<>(); +// BillingTaxInvoiceWorkFlowLine lines = billingTaxInvoiceWorkFlowLineRepository.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +//// Iterator iterator = array.iterator(); +// +// List jobNamesList = new ArrayList<>(); +// +// for (JsonElement jsonElement : array) { +// +// JsonObject jsonObject = jsonElement.getAsJsonObject(); +// +// title = jsonObject.get("title").getAsString(); +// +// StringBuilder builder = new StringBuilder(); +// +// builder.append("no data"); +// System.out.println(builder.toString()); +// +// Map jobprodata = new HashMap(); +// jobprodata.put("jobName", title + "_" + System.currentTimeMillis()); +// jobprodata.put("jobGroup", "TaxInvoice"); +// +// jobprodata.put("startTime", "2022-12-26T13:02"); +// jobprodata.put("counter", "5"); +// jobprodata.put("repeatTime", "5"); +// jobprodata.put("cronExpression", "0/10 * * * * ?"); +// jobprodata.put("line_id", id.toString()); +// jobprodata.put("node_id", "null"); +// +// System.out.println(jobprodata); +// +// System.out.println(jobprodata); +// +// RestTemplate restTemplate = new RestTemplate(); +// String jobprourl2 = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.SURE_JOB_8089 +// + "/surejob/schedule"; +// HttpHeaders headers2 = getHeaders(); +// HttpEntity request2 = new HttpEntity(jobprodata, headers2); +// +// ResponseEntity res2 = restTemplate.postForEntity(jobprourl2, request2, Object.class); +// System.out.println(res2.getStatusCodeValue()); +// +// if (res2.getStatusCodeValue() == 200) { +// log.info("Gitea data inserted in sure job"); +// System.out.println(res2.getBody()); +// jobNamesList.add(jobprodata.get("jobName")); +// // jobNamesList.add(jobprodata.get("jobGroup")); +// +// } +// } +// +// return new ResponseEntity<>(jobNamesList, HttpStatus.ACCEPTED); +// } +// +// +// +// +// +// +// +// +// +// @GetMapping("/surejob/taxInvoice/{id}") +// public ResponseEntity forjobschedulerInvoicetax(@PathVariable Long id) throws SQLException { +// +// ArrayList list = new ArrayList<>(); +// BillingTaxInvoiceWorkFlowLine lines = billingTaxInvoiceWorkFlowLineRepository.getSetuWorkflowlines(id); +// String str = lines.getModel(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String job_url = ""; +// String CRON_exp = ""; +// String job_type = ""; +// BillingJobEntity job = null; +// +// Boolean auto_mapping = true; +// while (iterator.hasNext()) { +// +// Object next = iterator.next(); +// JsonElement parse = parser.parse(next.toString()); +// JsonObject jsonObject = parse.getAsJsonObject(); +// // int i = jsonObject.get("id").getAsInt(); +// +// +// job_type = "TaxInvoice"; +// +//// if (job_type.isEmpty() || job_type.contains("null") || job_type == null) { +//// job_type = jsonObject.get("type").toString().replaceAll("\"", ""); +//// } +// +// job = jobrepo.getByJobType(job_type); +// +// break; +//// } +// +// } +// return new ResponseEntity<>(job, HttpStatus.ACCEPTED); +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java new file mode 100644 index 0000000..e8233d4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Entity/BillingJobEntity.java @@ -0,0 +1,25 @@ +package com.realnet.Billing.Job.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + + +@Data +@Entity +public class BillingJobEntity { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; + private String parameters; + private String url; + private String method; + private String connection_name; + private String job_type; + private String ref; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java new file mode 100644 index 0000000..2e36afa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Repository/BillingJobRepository.java @@ -0,0 +1,16 @@ +package com.realnet.Billing.Job.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Job.Entity.BillingJobEntity; + + + +@Repository +public interface BillingJobRepository extends JpaRepository { + + @Query(value = "SELECT * FROM billing_job_entity where job_type=?1", nativeQuery = true) + BillingJobEntity getByJobType(String jobtype); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java new file mode 100644 index 0000000..0e5e6e8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Job/Service/BillingJobService.java @@ -0,0 +1,23 @@ +//package com.realnet.Billing.Job.Service; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.realnet.DataConsolidation.Entity.DataflowJobConsolidationEntity; +//import com.realnet.DataConsolidation.Repository.DataflowJobConsolidationRepository; +// +// +//@Service +//public class BillingJobService { +// +// @Autowired +// private DataflowJobConsolidationRepository jobrepo; +// +// public DataflowJobConsolidationEntity getJobtype(String jobtype) { +// DataflowJobConsolidationEntity byJobType = jobrepo.getByJobType(jobtype); +// return byJobType; +// } +// +// +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java new file mode 100644 index 0000000..0c199f9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Billing.Repositorys; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Entitys.ApprovalHistory_t; + +@Repository +public interface ApprovalHistory_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java new file mode 100644 index 0000000..f9dc768 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.java @@ -0,0 +1,13 @@ +package com.realnet.Billing.Repositorys; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Billing.Dto.ApprovalQueue_SO; + +import java.util.List; + +@Repository +public interface ApprovalQueue_Repository extends JpaRepository { + List findByDocumentSeq(Long docid); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java new file mode 100644 index 0000000..1cd8631 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.java @@ -0,0 +1,9 @@ +package com.realnet.Billing.Repositorys; + +import com.realnet.Billing.Dto.ApprovalNote_SO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface ApprovalReturnHistory_Repo extends JpaRepository { +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java new file mode 100644 index 0000000..71808f0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalHistory_Service.java @@ -0,0 +1,140 @@ +package com.realnet.Billing.Services; + +import java.util.List; +import java.util.Optional; + +import javax.persistence.EntityNotFoundException; + +import org.modelmapper.ModelMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Billing.Dto.ServiceOrderDto; +import com.realnet.Billing.Entitys.ApprovalHistory_t; +import com.realnet.Billing.Repositorys.ApprovalHistory_Repository; + +@Service +public class ApprovalHistory_Service { + + @Autowired + private ApprovalHistory_Repository Repository; + +// @Autowired +// private ServiceOrder_Repository serviceOrder_Repository1; + + public ApprovalHistory_t Savedata(ApprovalHistory_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public ApprovalHistory_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public ApprovalHistory_t update(ApprovalHistory_t data, Long id) { + ApprovalHistory_t old = Repository.findById(id).get(); + old.setDocument_type(data.getDocument_type()); + old.setDocument_id(data.getDocument_id()); + old.setActioned_by(data.getActioned_by()); + old.setAction(data.getAction()); + old.setComments(data.getComments()); + final ApprovalHistory_t test = Repository.save(old); + return test; + } + +// public ServiceOrder_t updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, String comments) { +// try { +// Optional optionalServiceOrder = serviceOrder_Repository.findById(serviceOrderId); +// if (optionalServiceOrder.isEmpty()) { +// throw new EntityNotFoundException("Service Order not found with ID: " + serviceOrderId); +// } +// +// ServiceOrder_t serviceOrder = optionalServiceOrder.get(); +// serviceOrder.setStatus(newStatus); +// serviceOrder_Repository.save(serviceOrder); +// +// // Insert data into Approval History table +// ApprovalHistory_t approvalHistory = new ApprovalHistory_t(); +// approvalHistory.setDocument_type("ServiceOrder"); +// approvalHistory.setDocument_id(serviceOrderId); +// approvalHistory.setActioned_by(actionedBy); +// approvalHistory.setAction("Status Updated"); +// approvalHistory.setComments(comments); +// // Set other fields in the Approval History table as needed +// +// Repository.save(approvalHistory); +// +// return serviceOrder; +// } catch (EntityNotFoundException ex) { +// // Handle EntityNotFoundException (Service Order not found) +// // You can log the error, return a custom error response, or throw a new exception. +// throw ex; +// } catch (Exception ex) { +// // Handle other exceptions (e.g., database errors, unexpected issues) +// // You can log the error, return a custom error response, or throw a new exception. +// throw new RuntimeException("Error updating Service Order status.", ex); +// } +// } +// +// public ServiceOrderDto updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, String comments) { +// // ... existing code to update status ... +// +// +// +// // Convert ServiceOrder_t entity to ServiceOrderDto +// ServiceOrderDto serviceOrderDto = convertToDto(serviceOrder); +// +// return serviceOrderDto; +// } +// +// public ServiceOrderDto updateServiceOrderStatus(Long serviceOrderId, String newStatus, String actionedBy, +// String comments) { +// try { +// Optional optionalServiceOrder = serviceOrder_Repository.findById(serviceOrderId); +// if (!optionalServiceOrder.isPresent()) { +// throw new EntityNotFoundException("Service Order not found with ID: " + serviceOrderId); +// } +// +// ServiceOrder_t serviceOrder = optionalServiceOrder.get(); +// serviceOrder.setStatus(newStatus); +// serviceOrder_Repository.save(serviceOrder); +// +// // Insert data into Approval History table +// ApprovalHistory_t approvalHistory = new ApprovalHistory_t(); +// approvalHistory.setDocument_type("ServiceOrder"); +// approvalHistory.setDocument_id(serviceOrderId); +// approvalHistory.setActioned_by(actionedBy); +// approvalHistory.setAction("Status Updated"); +// approvalHistory.setComments(comments); +// // Set other fields in the Approval History table as needed +// +// Repository.save(approvalHistory); +// +// // Convert ServiceOrder_t entity to DTO and return +// return convertToDto(serviceOrder); +// } catch (EntityNotFoundException ex) { +// // Handle EntityNotFoundException (Service Order not found) +// // You can log the error, return a custom error response, or throw a new +// // exception. +// throw ex; +// } catch (Exception ex) { +// // Handle other exceptions (e.g., database errors, unexpected issues) +// // You can log the error, return a custom error response, or throw a new +// // exception. +// throw new RuntimeException("Error updating Service Order status.", ex); +// } +// } + +// private ServiceOrderDto convertToDto(ServiceOrder_t serviceOrder) { +// // Perform mapping from ServiceOrder_t entity to ServiceOrderDto +// ModelMapper modelMapper = new ModelMapper(); +// return modelMapper.map(serviceOrder, ServiceOrderDto.class); +// } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java new file mode 100644 index 0000000..0765f8b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Billing/Services/ApprovalQueueService.java @@ -0,0 +1,31 @@ +package com.realnet.Billing.Services; + +import com.realnet.Billing.Dto.ApprovalQueue_SO; +import com.realnet.Billing.Repositorys.ApprovalQueue_Repository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ApprovalQueueService { + + @Autowired + private ApprovalQueue_Repository approvalQueueRepository; + + public ApprovalQueue_SO saveApprovalQueue(ApprovalQueue_SO approvalQueueSOSO) { + return approvalQueueRepository.save(approvalQueueSOSO); + } + + public List getAllApprovalQueue() { + return approvalQueueRepository.findAll(); + } + + public ApprovalQueue_SO getApprovalQueueById(Long id) { + return approvalQueueRepository.findById(id).orElse(null); + } + + public List getAllQueueForDocument(Long docid) { + return approvalQueueRepository.findByDocumentSeq(docid); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java new file mode 100644 index 0000000..c1d165e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Entity/Builder_entity_t.java @@ -0,0 +1,21 @@ +package com.realnet.Builders.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Builder_entity_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String job_type; + private String job_name; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java new file mode 100644 index 0000000..16eb1a1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Repos/BuilderRepository.java @@ -0,0 +1,15 @@ +package com.realnet.Builders.Repos; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Builders.Entity.Builder_entity_t; + +@Repository +public interface BuilderRepository extends JpaRepository { + + @Query(value = "select * from builder_entity_t where job_name= ?1 && job_type=?2", nativeQuery = true) + Builder_entity_t findByjobTypeAndName(String job_name, String job_type); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java new file mode 100644 index 0000000..df685fd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Builders/Services/BuilderService.java @@ -0,0 +1,583 @@ +package com.realnet.Builders.Services; + +import java.io.IOException; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.dao.DataAccessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import com.realnet.Builders.Entity.Builder_entity_t; +import com.realnet.Builders.Repos.BuilderRepository; +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.Dashboard_lineRepository; +import com.realnet.Dashboard1.Service.HeaderService; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Services.Rpt_builder2_lines_Service; +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Services.Api_registery_headerService; +import com.realnet.api_registery.Services.Api_registery_lineService; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.service1.SecmenuDetailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class BuilderService { + + @Autowired + private SecmenuDetailService secmenuDetailService; + + @Autowired + private HeaderService headerService; + + @Autowired + private Dashboard_lineRepository dashboard_lineRepository; + + @Autowired + private Api_registery_headerService api_registery_headerService; + + @Autowired + private Api_registery_lineService api_registery_lineService; + + @Autowired + private BuilderRepository builderRepository; + + @Autowired + private Rpt_builder2_lines_Service rLinesService; + + @Autowired + private Rpt_builder2_Service reBuilder2Service; + + @Autowired + private AppUserServiceImpl userServiceImpl; + + public void callotherService() throws IOException { + + executeDump(true); + + // ADD OTHER SERVICE + + System.out.println("dashboard and menu inserted..."); + + } + +// add Custom sec menu detail + + public ResponseEntity addCustomMenu(String tableName, String MenuType) { + +// default menu that is Transcation + Long menuid = 1577l; + + if (MenuType.equalsIgnoreCase("Masters")) { + menuid = 1601l; + + } + + MenuDet menuDet = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(tableName, "Menu"); + + if (entity_t == null) { + System.out.println("now inserting menu"); + + menuDet = secmenuDetailService.customsecmenuadd(tableName, menuid); + + savebuilderentity(tableName, "Menu"); + } else { + System.out.println(tableName + " menu already have"); + + } + + return new ResponseEntity<>(menuDet, HttpStatus.CREATED); + } + +// add dashboard + public Dashbord_Header SaveDashboard(String dashboardname, String description, String model) { + + Dashbord_Header dash = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(dashboardname, "Dashboard"); + + if (entity_t == null) { + System.out.println("now inserting dashboard"); + + Dashbord_Header dashbord_Header = new Dashbord_Header(); + dashbord_Header.setDashboard_name(dashboardname); + dashbord_Header.setDescription(description); + dashbord_Header.setObject_type("form"); + dashbord_Header.setSub_object_type("only header"); + + dash = headerService.Savedata(dashbord_Header); + Dashbord1_Line line = new Dashbord1_Line(); + + line.setModel(model); + line.setHeader_id(dash.getId().toString()); + line.setDashbord_Header(dash); + dashboard_lineRepository.save(line); + + savebuilderentity(dashboardname, "Dashboard"); + + } else { + System.out.println(dashboardname + " dashboard already have"); + + } + + return dash; + } + +// add Report + public Rpt_builder2_t SaveReport(String reportName, String description, Boolean isSql, String model) { + + Rpt_builder2_t report = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(reportName, "Report"); + + if (entity_t == null) { + System.out.println("now inserting Report"); + + Rpt_builder2_t rp = new Rpt_builder2_t(); + rp.setReportName(reportName); + rp.setDescription(description); + rp.setIsSql(isSql); + + report = reBuilder2Service.Savedata(rp); + Rpt_builder2_lines_t line = new Rpt_builder2_lines_t(); + + line.setModel(model); + line.setHeader_id(report.getId().toString()); + line.setRpt_builder2_t(rp); + rLinesService.Savedata(line); + + savebuilderentity(reportName, "Report"); + + } else { + System.out.println(reportName + " Report already have"); + + } + + return report; + } + +// Add to api Registery + + public Api_registery_header SaveApiRegistery(String tableName) { + + Api_registery_header save = null; + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName(tableName, "Api_registery"); + + if (entity_t == null) { + System.out.println("now inserting apiregistery"); + + Api_registery_header api_registery_header = new Api_registery_header(); + + api_registery_header.setTable_name(tableName); + + save = api_registery_headerService.Savedata(api_registery_header); + + HashMap hashMap = new HashMap<>(); + + hashMap.put("GetAll", "/" + tableName + "/" + tableName); + hashMap.put("GetById", "/" + tableName + "/" + tableName + "{Id}"); + hashMap.put("Post", "/" + tableName + "/" + tableName); + hashMap.put("Put", "/" + tableName + "/" + tableName); + + Set> entrySet = hashMap.entrySet(); + + for (Entry entry : entrySet) { + + String Method = entry.getKey(); + String url = entry.getValue(); + + Api_registery_line registery_line = new Api_registery_line(); + + registery_line.setMethod(Method); + registery_line.setUrl(url); + registery_line.setHeader_id(save.getId()); + + api_registery_lineService.Savedata(registery_line); + + } + + savebuilderentity(tableName, "Api_registery"); + } else { + System.out.println(tableName + " all method already have"); + + } + + return save; + } + + private void savebuilderentity(String Job_name, String jobType) { + + Builder_entity_t builder_entity_t = new Builder_entity_t(); + + builder_entity_t.setJob_name(Job_name); + builder_entity_t.setJob_type(jobType); + builderRepository.save(builder_entity_t); + + } + + @Autowired + private JdbcTemplate jdbcTemplate; + + public ResponseEntity executeDump(Boolean execute) throws IOException { + // Check if execution is allowed + System.out.println(" dump executed start.."); + + Builder_entity_t entity_t = builderRepository.findByjobTypeAndName("SqlDump", "Execute"); + + List users = userServiceImpl.getAllUsers(); + if (entity_t != null || !users.isEmpty()) { + execute = false; + + } + if (!execute) { + System.out.println("Dump Already Executed...\n"); + return ResponseEntity.ok("Service not executed due to 'execute' flag being false."); + } + +// Path path = Paths.get(System.getProperty("user.dir")).resolve(filePath); + + // Check if file exists +// if (!Files.exists(path)) { +// return ResponseEntity.badRequest().body("File not found: " + filePath); +// } +// +// // File content ko read karo aur SQL commands extract karo +// String sql = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8); + + String sql = getSql(); + // SQL commands ko execute karo + + // Split statements by semicolon +// List sqlStatements = Arrays.stream(sql.split(";")).map(String::trim) +// .filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo +// .filter(statement -> !statement.startsWith("USE")) // "USE db;" ko ignore karo +// .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo +// .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo +// .collect(Collectors.toList()); + + List sqlStatements = Arrays.stream(sql.split("(?<=;)(?![^()]*\\))")) // Regular expression to split + // by semicolon not inside + // parentheses + .map(String::trim).filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo + .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo + .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo + .collect(Collectors.toList()); + + // Execute each statement + for (String statement : sqlStatements) { + try { + jdbcTemplate.execute(statement); + + System.out.println(statement + " executed.."); + + } catch (DataAccessException e) { + System.out.println("DataAccessException error inside.." + e); + + // Specific SQL execution error ko catch karo aur log karo + + } + } + + savebuilderentity("SqlDump", "Execute"); + + System.out.println("Dump executed executed.."); + + // File ko delete karo +// Files.delete(path); + + System.out.println("File delete successfully..."); + + return ResponseEntity.ok("Dump executed and file deleted successfully!"); + + } + + public String getSql() { + + String sql = " \n" + "DROP TABLE IF EXISTS `accounts`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `accounts` (\n" + + " `id` bigint NOT NULL,\n" + " `companyname` varchar(255) DEFAULT NULL,\n" + + " `email` varchar(255) DEFAULT NULL,\n" + " `managing_work` varchar(255) DEFAULT NULL,\n" + + " `mobile` bigint DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " `pancard` varchar(255) DEFAULT NULL,\n" + " `password` varchar(255) DEFAULT NULL,\n" + + " `working` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `accounts` DISABLE KEYS */;\n" + + "INSERT INTO `accounts` VALUES (1,'test','test@gmail.com','w',123456789,'kk','kk','test','w');\n" + + "/*!40000 ALTER TABLE `accounts` ENABLE KEYS */;\n" + "\n" + "DROP TABLE IF EXISTS `app_user_log`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `app_user_log` (\n" + + " `log_id` bigint NOT NULL,\n" + " `created_on` datetime DEFAULT NULL,\n" + + " `generate_log` varchar(255) DEFAULT NULL,\n" + " `log_file_name` varchar(255) DEFAULT NULL,\n" + + " `log_level` varchar(255) DEFAULT NULL,\n" + " `user_name` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`log_id`),\n" + " UNIQUE KEY `UK_tl3or0c0pxxdvigxponlgee18` (`user_name`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `app_user_log` DISABLE KEYS */;\n" + + "INSERT INTO `app_user_log` VALUES (1,'2023-06-09 17:39:20','Y','sysadmin1686312560.log','info','sysadmin');\n" + + "/*!40000 ALTER TABLE `app_user_log` ENABLE KEYS */;\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `app_user_log_sequence`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `app_user_log_sequence` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + + "/*!40000 ALTER TABLE `app_user_log_sequence` DISABLE KEYS */;\n" + + "INSERT INTO `app_user_log_sequence` VALUES (2),(2),(2),(2),(2),(2),(2),(2),(2),(1);\n" + + "/*!40000 ALTER TABLE `app_user_log_sequence` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `logs`;\n" + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `logs` (\n" + + " `user_id` bigint NOT NULL,\n" + " `dated` varchar(255) DEFAULT NULL,\n" + + " `lavel` varchar(255) DEFAULT NULL,\n" + " `logger` varchar(255) DEFAULT NULL,\n" + + " `message` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `role` DISABLE KEYS */;\n" + + "INSERT INTO `role` VALUES (1,'ADMIN','ROLE_ADMIN'),(2,'Developer','ROLE_Developer'),(3,'USER','ROLE_USER'),(5,'DEVEOPS','ROLE_DEVEOPS');\n" + + "/*!40000 ALTER TABLE `role` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_menu_det` DISABLE KEYS */;\n" + + "INSERT INTO `sec_menu_det` VALUES (1116,'2023-01-25 10:25:50','2023-01-25 10:25:50',3000,'security','lock',0,'Security','sec3000','Enable'),(1117,'2023-01-25 10:42:02','2023-02-04 15:34:25',3010,'usermaintance',NULL,1116,'User Maintance','U1000','Enable'),(1118,'2023-01-25 11:12:27','2023-02-04 15:34:36',3020,'usergrpmaintance',NULL,1116,'User Group Maintance','U2000','Enable'),(1523,'2023-02-04 11:15:57','2023-02-04 15:34:45',3030,'menumaintance',NULL,1116,'Menu Maintance','M3000','Enable'),(1524,'2023-02-04 11:16:52','2023-02-04 15:34:54',3040,'menuaccess',NULL,1116,'Menu Access Control','MA4000','Enable'),(1525,'2023-02-04 11:17:31','2023-02-04 15:35:06',3050,'systemparameters',NULL,1116,'System Parameters','SP5000','Enable'),(1526,'2023-02-04 11:18:04','2023-02-04 15:35:14',3060,'accesstype',NULL,1116,'Access Type','A6000','Enable'),(1528,'2023-02-04 13:31:48','2023-02-04 15:33:02',1010,'incident-new',NULL,1527,'Incident','I1000','Enable'),(1529,'2023-02-04 13:33:03','2023-02-04 15:33:12',1020,'incident-overview',NULL,1527,'Overview','O2000','Enable'),(1530,'2023-02-04 13:34:42','2023-02-04 15:33:21',1030,'sureboard2',NULL,1527,'Issueboard','I3000','Enable'),(1531,'2023-02-04 13:35:27','2023-02-04 15:33:36',1040,'change-request',NULL,1527,'Change Request','C4000','Enable'),(1532,'2023-02-04 13:36:01','2023-02-10 02:25:13',1050,'problem-creation',NULL,1527,'Problem Request','P5000','Enable'),(1534,'2023-02-04 13:56:22','2023-02-04 15:34:07',2010,'Sr_priority2_t',NULL,1533,'Priority','P1000','Enable'),(1535,'2023-02-04 17:12:27','2023-02-04 17:12:27',2020,'Sr_urgency_t',NULL,1533,'Urgency','Su2000','Enable'),(1536,'2023-02-04 17:13:22','2023-02-04 17:13:22',2030,'Sr_impact2_t',NULL,1533,'Impact','Sm3000','Enable'),(1537,'2023-02-04 17:14:01','2023-02-04 17:14:01',2040,'Sr_category2_t',NULL,1533,'Category','Sc4000','Enable'),(1538,'2023-02-04 17:14:31','2023-02-04 17:14:31',2050,'Sr_State_t',NULL,1533,'State','S5000','Enable'),(1539,'2023-02-04 17:15:12','2023-02-09 13:25:27',2070,'Sr_customer_t',NULL,1533,'Customer','c7000','Enable'),(1540,'2023-02-04 17:16:23','2023-02-14 13:15:27',2060,'Sr_Contact_type_t',NULL,1533,'Contact','C6000','Enable'),(1541,'2023-02-04 17:17:22','2023-02-04 17:17:22',2080,'Sr_handler_t',NULL,1533,'Handler','H8000','Enable'),(1543,'2023-02-08 15:07:14','2023-03-01 05:51:41',4010,'sequence',NULL,1542,'Define Sequence','SE1000','Enable'),(1544,'2023-02-16 10:14:33','2023-02-16 10:14:33',4020,'bugtracker',NULL,1542,'Bug Tracker','B1000','Enable'),(1545,'2023-02-16 11:00:25','2023-02-16 11:00:25',4030,'datamanagemennt',NULL,1542,'Data Management','M3000','Enable'),(1550,'2023-03-01 06:10:35','2023-03-01 06:10:35',2090,'projects',NULL,1533,'Projects','P2000','Enable'),(1551,'2023-03-01 07:14:27','2023-03-01 07:14:27',4040,'applysequence',NULL,1542,'Apply Sequence','As3000','Enable'),(1552,'2023-06-05 14:14:21','2023-06-05 14:14:21',2000,'dash','dashboard',0,'dashboard','dashboard','Enable'),(1553,'2023-06-05 14:16:48','2023-06-17 03:53:20',1000,'DashboardTesting',NULL,1552,'dashboard1','dashboard','Enable'),(1554,'2023-06-11 10:55:12','2023-06-11 10:55:12',2000,'Dashtest',NULL,1552,'das2','2000','Enable'),(1555,'2023-10-10 12:50:55','2024-01-19 14:33:06',1000,'project','flag',0,'project','project','Enable'),(1556,'2023-10-11 11:03:39','2023-10-11 11:03:39',4000,'superadmin','King',0,'Super Admin','Super Admin','Enable'),(1557,'2023-10-11 11:04:17','2023-10-11 11:04:17',4100,'extension',NULL,1556,'Code Extension','CodeExtension','Enable'),(1558,'2023-10-25 16:31:26','2023-10-25 16:31:26',5000,'test','tools',0,'Vault','Vault','Enable'),(1559,'2023-10-25 16:32:18','2023-10-25 16:32:18',5001,'Access_Point',NULL,1558,'Access Point','Access Point','Enable'),(1560,'2023-10-25 17:34:39','2023-10-25 17:34:39',6000,'crm','employee-group',0,'CRM','crm','Enable'),(1561,'2023-10-25 17:35:21','2023-10-25 17:35:21',6001,'Calls',NULL,1560,'Calls','Calls','Enable'),(1562,'2023-10-25 17:35:43','2023-10-25 17:35:43',6002,'Campaign',NULL,1560,'Campaign','Campaign','Enable'),(1563,'2023-10-25 17:35:57','2023-10-25 17:35:57',6003,'Company',NULL,1560,'Company','Company','Enable'),(1564,'2023-10-25 17:36:16','2023-10-25 17:36:16',6004,'Contact',NULL,1560,'Contact','Contact','Enable'),(1565,'2023-10-25 17:36:32','2023-10-25 17:36:32',6005,'Dealer',NULL,1560,'Dealer','Dealer','Enable'),(1566,'2023-10-25 17:36:48','2023-10-25 17:36:48',6006,'Deals',NULL,1560,'Deals','Deals','Enable'),(1567,'2023-10-25 17:37:00','2023-10-25 17:37:00',6007,'Documents',NULL,1560,'Documents','Documents','Enable'),(1568,'2023-10-25 17:37:25','2023-10-25 17:37:25',6008,'Leads',NULL,1560,'Leads','Leads','Enable'),(1569,'2023-10-25 17:37:41','2023-10-25 17:37:41',6009,'Meetings',NULL,1560,'Meetings','Meetings','Enable'),(1570,'2023-10-25 17:39:36','2023-10-25 17:39:36',6010,'Product',NULL,1560,'Product','Product','Enable'),(1571,'2023-10-25 17:39:51','2023-10-25 17:39:51',6011,'Tasks',NULL,1560,'Tasks','Tasks','Enable'),(1572,'2023-11-01 18:43:22','2023-11-03 11:42:38',4000,'SequenceGenerator',NULL,1116,'Document Sequence','Document Sequrnce','Enable'),(1574,'2023-12-04 11:53:00','2023-12-04 18:49:58',1000,'Teacher_Registration',NULL,1573,'Teacher Registration','Teacher','Enable'),(1575,'2023-12-04 11:53:15','2023-12-04 18:50:25',1000,'Student_registration',NULL,1573,'Student Registration','Student','Enable'),(1576,'2023-12-04 18:50:53','2023-12-04 18:50:53',3000,'Courses_name',NULL,1573,'course','course','Enable'),(1577,'2024-01-27 15:39:15','2024-03-20 19:46:19',7000,'Transactions','King',0,'Transactions','Transactions','Enable'),(1579,'2024-02-01 16:26:28','2024-02-07 16:03:10',4300,'apiregistery',NULL,1556,'Api Registery','Api Registery','Enable'),(1580,'2024-02-02 10:05:03','2024-02-02 10:05:03',4200,'tokenregistery',NULL,1556,'Token Registery','Token Registery','Enable'),(1582,'2024-02-03 10:25:51','2024-02-03 10:25:51',8000,'test','test',0,'test','test','Enable'),(1588,'2024-02-07 16:03:53','2024-02-07 16:03:53',4400,'survey-form',NULL,1556,'Survey Form','SurveyForm','Enable'),(1593,'2024-02-24 15:02:22','2024-02-24 15:02:22',4500,'datamanage','data-cluster',0,'Data Management','DataManagement','Enable'),(1594,'2024-02-24 15:03:01','2024-02-24 15:03:01',4501,'datamanagement',NULL,1593,'Data Management','DataManagement','Enable'),(1595,'2024-02-24 15:03:34','2024-02-24 15:03:34',4502,'validationrule',NULL,1593,'Validaiton Rule','ValidaitonRule','Enable'),(1596,'2024-02-24 15:03:58','2024-02-24 15:03:58',4503,'mappingrule',NULL,1593,'Mapping Rule','MappingRule','Enable'),(1601,'2024-03-20 19:46:01','2024-03-20 19:46:37',9000,'Masters','data-cluster',0,'Masters','Masters','Enable');\n" + + "/*!40000 ALTER TABLE `sec_menu_det` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_group` DISABLE KEYS */;\n" + + "INSERT INTO `sec_user_group` VALUES (1,NULL,NULL,'add',30,'sysadmin','E',NULL,'2023-03-01 05:54:10'),(41,NULL,'2023-02-28 13:05:54','check',20,'users','Disable',NULL,'2023-02-28 13:30:14');\n" + + "/*!40000 ALTER TABLE `sec_user_group` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_user_group_id`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_user_group_id` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_group_id` DISABLE KEYS */;\n" + + "INSERT INTO `sec_user_group_id` VALUES (59),(59),(40),(40),(40),(40),(40),(40);\n" + + "/*!40000 ALTER TABLE `sec_user_group_id` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_accounts` DISABLE KEYS */;\n" + + "INSERT INTO `sys_accounts` VALUES (1,NULL,NULL,NULL,NULL,NULL,NULL,NULL);\n" + + "/*!40000 ALTER TABLE `sys_accounts` ENABLE KEYS */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_users` DISABLE KEYS */;\n" + + "INSERT INTO `sec_users` (`user_id`, `is_complete`, `about`, `accesstype`, `active`, `change_passw`, `checknumber`, `country`, `createby`, `createdate`, `customer_id`, `days_mth`, `dep_string`, `email`, `expiry_date`, `first_login`, `full_name`, `is_blocked`, `lang_code`, `last_pwd_changed_date`, `mob_no`, `no_days_mth`, `notification`, `password1`, `password2`, `password3`, `password4`, `photo`, `photo_name`, `provider`, `pwd_changed_cnt`, `random_no`, `short_name`, `status`, `title`, `updateby`, `updatedate`, `user_passw`, `user_name`, `usr_grp_id`, `working`, `account_id`, `department_code`, `position_code`, `usr_grp`) VALUES (10007307, true, NULL, NULL, true, 'test3', NULL, NULL, NULL, '2024-09-03 19:32:38', NULL, NULL, NULL, 'sysadmin', NULL, NULL, 'sysadmin', false, NULL, '2024-09-03 19:32:38', '1234567890', NULL, NULL, 'admin123', NULL, NULL, NULL, NULL, NULL, NULL, 7, NULL, NULL, NULL, NULL, NULL, NULL, '$2b$10$8iFnL/cKTTmclSD1BZh8UeP0ZKKEzZ2hbTsrRcgy3kMinDRdxN7xe', 'sysadmin', NULL, NULL, 1, NULL, NULL, 1);\n" + + "/*!40000 ALTER TABLE `sec_users` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_user_sessions`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_user_sessions` (\n" + + " `client_ip` varchar(255) NOT NULL,\n" + " `session_id` varchar(255) NOT NULL,\n" + + " `user_id` bigint NOT NULL,\n" + " `last_access_date` datetime DEFAULT NULL,\n" + + " `logintime` datetime DEFAULT NULL,\n" + " `logouttime` datetime DEFAULT NULL,\n" + + " `macid` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`client_ip`,`session_id`,`user_id`),\n" + + " KEY `FKp9jm02b501ugvjvfhas5sskfq` (`user_id`),\n" + + " CONSTRAINT `FKp9jm02b501ugvjvfhas5sskfq` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_user_sessions` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sec_user_sessions` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_grp_menu_access`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_grp_menu_access` (\n" + + " `menu_item_id` bigint NOT NULL,\n" + " `usr_grp` bigint NOT NULL,\n" + + " `createby` varchar(255) DEFAULT NULL,\n" + " `created_at` datetime DEFAULT NULL,\n" + + " `isdisable` varchar(255) DEFAULT NULL,\n" + " `item_seq` bigint DEFAULT NULL,\n" + + " `m_create` varchar(255) DEFAULT NULL,\n" + " `m_delete` varchar(255) DEFAULT NULL,\n" + + " `m_edit` varchar(255) DEFAULT NULL,\n" + " `m_query` varchar(255) DEFAULT NULL,\n" + + " `m_visible` varchar(255) DEFAULT NULL,\n" + + " `main_menu_action_name` varchar(255) DEFAULT NULL,\n" + + " `main_menu_icon_name` varchar(255) DEFAULT NULL,\n" + " `menu_id` bigint DEFAULT NULL,\n" + + " `menu_item_desc` varchar(255) DEFAULT NULL,\n" + " `mexport` varchar(255) DEFAULT NULL,\n" + + " `module_name` varchar(255) DEFAULT NULL,\n" + " `status` varchar(255) DEFAULT NULL,\n" + + " `updateby` varchar(255) DEFAULT NULL,\n" + " `updated_at` datetime DEFAULT NULL,\n" + + " PRIMARY KEY (`menu_item_id`,`usr_grp`),\n" + " KEY `FKtj8mtsrhc4m4acbrvjnnyvglm` (`usr_grp`),\n" + + " CONSTRAINT `FKmkev6w9umgp6fg2afatibhq1x` FOREIGN KEY (`menu_item_id`) REFERENCES `sec_menu_det` (`menu_item_id`),\n" + + " CONSTRAINT `FKtj8mtsrhc4m4acbrvjnnyvglm` FOREIGN KEY (`usr_grp`) REFERENCES `sec_user_group` (`usr_grp`) ON DELETE CASCADE\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_grp_menu_access` DISABLE KEYS */;\n" + + "INSERT INTO `sec_grp_menu_access` VALUES (1116,41,NULL,'2024-01-17 18:56:05','true',3000,'true','true','true','true','true','security','lock',0,'Security','true','sec3000','Enable',NULL,'2024-01-17 18:56:05'),(1117,41,NULL,'2024-01-17 18:56:07','true',3010,'true','true','true','true','true','usermaintance',NULL,1116,'User Maintance','true','U1000','Enable',NULL,'2024-01-17 18:56:07'),(1118,41,NULL,'2024-01-17 18:56:11','true',3020,'true','true','true','true','true','usergrpmaintance',NULL,1116,'User Group Maintance','true','U2000','Enable',NULL,'2024-01-17 18:56:11'),(1523,41,NULL,'2024-01-17 18:56:14','true',3030,'true','true','true','true','true','menumaintance',NULL,1116,'Menu Maintance','true','M3000','Enable',NULL,'2024-01-17 18:56:14'),(1524,41,NULL,'2024-01-17 18:56:16','true',3040,'true','true','true','true','true','menuaccess',NULL,1116,'Menu Access Control','true','MA4000','Enable',NULL,'2024-01-17 18:56:16'),(1525,41,NULL,'2024-01-17 18:56:18','true',3050,'true','true','true','true','true','systemparameters',NULL,1116,'System Parameters','true','SP5000','Enable',NULL,'2024-01-17 18:56:18'),(1526,41,NULL,'2024-01-17 18:56:19','true',3060,'true','true','true','true','true','accesstype',NULL,1116,'Access Type','true','A6000','Enable',NULL,'2024-01-17 18:56:19'),(1572,41,NULL,'2024-01-17 18:56:21','true',4000,'true','true','true','true','true','SequenceGenerator',NULL,1116,'Document Sequence','true','Document Sequrnce','Enable',NULL,'2024-01-17 18:56:21'),(1577,1,NULL,'2024-01-27 15:40:46','true',7000,'true','true','true','true','true','Transactions','King',0,'Transactions','true','Transactions','Enable',NULL,'2024-01-27 15:40:46'),(1601,1,NULL,'2024-03-20 20:06:50','true',9000,'true','true','true','true','true','Masters','data-cluster',0,'Masters','true','Masters','Enable',NULL,'2024-03-20 20:06:50');\n" + + "/*!40000 ALTER TABLE `sec_grp_menu_access` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_users_sequencs`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_users_sequencs` (\n" + + " `next_val` bigint DEFAULT NULL\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sec_users_sequencs` DISABLE KEYS */;\n" + + "INSERT INTO `sec_users_sequencs` VALUES (10007321),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300),(10007300);\n" + + "/*!40000 ALTER TABLE `sec_users_sequencs` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_workspace`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_workspace` (\n" + + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `is_active` varchar(255) DEFAULT NULL,\n" + " `description` varchar(255) DEFAULT NULL,\n" + + " `is_default` varchar(255) DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " `owner_id` varchar(255) DEFAULT NULL,\n" + " `project_id` int DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sec_workspace_users`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sec_workspace_users` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `project_id` int DEFAULT NULL,\n" + " `user_id` bigint DEFAULT NULL,\n" + + " `user_name` varchar(255) DEFAULT NULL,\n" + " `user_role` varchar(255) DEFAULT NULL,\n" + + " `worksapce_id` int NOT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `secuser_roles` DISABLE KEYS */;\n" + + "INSERT INTO `secuser_roles` VALUES (10007307,1);\n" + + "/*!40000 ALTER TABLE `secuser_roles` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sys_accounts_users`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sys_accounts_users` (\n" + + " `sys_accounts_id` bigint NOT NULL,\n" + " `users_user_id` bigint NOT NULL,\n" + + " UNIQUE KEY `UK_8dxppqkque5ehofdy83bntgks` (`users_user_id`),\n" + + " KEY `FKs9o1t4hyiyq2y330p0d2evf2a` (`sys_accounts_id`),\n" + + " CONSTRAINT `FKdkc60wy8v55ylspegueinngjx` FOREIGN KEY (`users_user_id`) REFERENCES `sec_users` (`user_id`),\n" + + " CONSTRAINT `FKs9o1t4hyiyq2y330p0d2evf2a` FOREIGN KEY (`sys_accounts_id`) REFERENCES `sys_accounts` (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_accounts_users` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sys_accounts_users` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `user_list`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `user_list` (\n" + + " `id` bigint NOT NULL,\n" + " `about` varchar(255) DEFAULT NULL,\n" + + " `account_id` varchar(255) DEFAULT NULL,\n" + " `address1` varchar(255) DEFAULT NULL,\n" + + " `address2` varchar(255) DEFAULT NULL,\n" + " `checknumber` varchar(255) DEFAULT NULL,\n" + + " `company` varchar(255) DEFAULT NULL,\n" + " `country` varchar(255) DEFAULT NULL,\n" + + " `created_at` varchar(255) DEFAULT NULL,\n" + " `created_by` varchar(255) DEFAULT NULL,\n" + + " `default_customer_id` varchar(255) DEFAULT NULL,\n" + " `department` varchar(255) DEFAULT NULL,\n" + + " `dob` varchar(255) DEFAULT NULL,\n" + " `email` varchar(255) DEFAULT NULL,\n" + + " `enable_beta_testing` bit(1) NOT NULL,\n" + " `enable_renewal` bit(1) NOT NULL,\n" + + " `firstname` varchar(255) DEFAULT NULL,\n" + " `fullname` varchar(255) DEFAULT NULL,\n" + + " `gender` varchar(255) DEFAULT NULL,\n" + " `is_active` bit(1) NOT NULL,\n" + + " `is_blocked` bit(1) NOT NULL,\n" + " `lastname` varchar(255) DEFAULT NULL,\n" + + " `managing_work` varchar(255) DEFAULT NULL,\n" + " `menu_group` int NOT NULL,\n" + + " `name` varchar(255) DEFAULT NULL,\n" + " `other_roles` varchar(255) DEFAULT NULL,\n" + + " `pancard` varchar(255) DEFAULT NULL,\n" + " `password` varchar(255) DEFAULT NULL,\n" + + " `phone` varchar(255) DEFAULT NULL,\n" + " `photos` varchar(255) DEFAULT NULL,\n" + + " `postal` varchar(255) DEFAULT NULL,\n" + " `role` varchar(255) DEFAULT NULL,\n" + + " `secret_answer` varchar(255) DEFAULT NULL,\n" + " `secret_question` varchar(255) DEFAULT NULL,\n" + + " `security_provider_id` varchar(255) DEFAULT NULL,\n" + " `status` varchar(255) DEFAULT NULL,\n" + + " `updated_at` varchar(255) DEFAULT NULL,\n" + " `updated_by` varchar(255) DEFAULT NULL,\n" + + " `user_id` varchar(255) DEFAULT NULL,\n" + " `username` varchar(255) DEFAULT NULL,\n" + + " `working` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `user_list` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `user_list` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `userloginhist`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `userloginhist` (\n" + + " `create_by` varchar(255) DEFAULT NULL,\n" + " `create_date` datetime DEFAULT NULL,\n" + + " `expiry_reminder` bigint DEFAULT NULL,\n" + " `last_login_date` datetime DEFAULT NULL,\n" + + " `last_password_chg_date` datetime DEFAULT NULL,\n" + + " `last_password_fail_no` bigint DEFAULT NULL,\n" + " `update_by` varchar(255) DEFAULT NULL,\n" + + " `update_date` datetime DEFAULT NULL,\n" + " `user_id` bigint NOT NULL,\n" + + " PRIMARY KEY (`user_id`),\n" + + " CONSTRAINT `FK2a2xifc15js82mjl20honhdfr` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `userpasswlog`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `userpasswlog` (\n" + + " `create_date` datetime NOT NULL,\n" + " `user_id` bigint NOT NULL,\n" + + " `user_passw` varchar(255) NOT NULL,\n" + " `create_by` varchar(255) DEFAULT NULL,\n" + + " `update_by` varchar(255) DEFAULT NULL,\n" + " `update_date` datetime DEFAULT NULL,\n" + + " PRIMARY KEY (`create_date`,`user_id`,`user_passw`),\n" + + " KEY `FKpd759n25auh4bw5ri0xikikia` (`user_id`),\n" + + " CONSTRAINT `FKpd759n25auh4bw5ri0xikikia` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `userpasswlog` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `userpasswlog` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard` (\n" + + " `id` int NOT NULL AUTO_INCREMENT,\n" + " `account_id` bigint DEFAULT NULL,\n" + + " `created_at` datetime NOT NULL,\n" + " `created_by` bigint DEFAULT NULL,\n" + + " `updated_at` datetime NOT NULL,\n" + " `updated_by` bigint DEFAULT NULL,\n" + + " `extn1` varchar(255) DEFAULT NULL,\n" + " `extn10` varchar(255) DEFAULT NULL,\n" + + " `extn11` varchar(255) DEFAULT NULL,\n" + " `extn12` varchar(255) DEFAULT NULL,\n" + + " `extn13` varchar(255) DEFAULT NULL,\n" + " `extn14` varchar(255) DEFAULT NULL,\n" + + " `extn15` varchar(255) DEFAULT NULL,\n" + " `extn2` varchar(255) DEFAULT NULL,\n" + + " `extn3` varchar(255) DEFAULT NULL,\n" + " `extn4` varchar(255) DEFAULT NULL,\n" + + " `extn5` varchar(255) DEFAULT NULL,\n" + " `extn6` varchar(255) DEFAULT NULL,\n" + + " `extn7` varchar(255) DEFAULT NULL,\n" + " `extn8` varchar(255) DEFAULT NULL,\n" + + " `extn9` varchar(255) DEFAULT NULL,\n" + " `isdashboard` bit(1) NOT NULL,\n" + + " `model` varchar(5000) DEFAULT NULL,\n" + " `name` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard` DISABLE KEYS */;\n" + + "INSERT INTO `dashboard` VALUES (1,NULL,'2023-12-04 12:11:04',NULL,'2023-12-04 13:05:56',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,_binary '','[{\\\"charttitle\\\":\\\"index1\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":3,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\",\\\"slices\\\":false,\\\"donut\\\":false,\\\"chartcolor\\\":false,\\\"chartlegend\\\":false,\\\"showlabel\\\":false,\\\"Read Only\\\":false,\\\"selectedIcon\\\":\\\"IconData(U+0EE2A)\\\",\\\"charturl\\\":\\\"\\\",\\\"chartparameter\\\":\\\"\\\",\\\"datasource\\\":\\\"Default\\\"},{\\\"charttitle\\\":\\\"Index2\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":4,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\"},{\\\"charttitle\\\":\\\"Index3\\\",\\\"type\\\":\\\"Index\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":5,\\\"component\\\":\\\"Index\\\",\\\"name\\\":\\\"Index\\\"},{\\\"charttitle\\\":\\\"Doughnut Chart\\\",\\\"type\\\":\\\"Doughnut Chart\\\",\\\"cols\\\":5,\\\"rows\\\":5,\\\"x\\\":0,\\\"y\\\":0,\\\"chartid\\\":6,\\\"component\\\":\\\"Doughnut Chart\\\",\\\"name\\\":\\\"Doughnut Chart\\\",\\\"slices\\\":false,\\\"donut\\\":false,\\\"chartcolor\\\":false,\\\"chartlegend\\\":false,\\\"showlabel\\\":false,\\\"Read Only\\\":false,\\\"charturl\\\":\\\"http://43.205.154.152:30179/entityBuilder/Gaurav_testing/3\\\",\\\"chartparameter\\\":\\\"\\\",\\\"datasource\\\":\\\"Default\\\",\\\"selectedIcon\\\":\\\"IconData(U+0EE29)\\\"},{\\\"cols\\\": 4, \\\"rows\\\": 5, \\\"x\\\": 0, \\\"y\\\": 0, \\\"chartid\\\": 1, \\\"name\\\": \\\"Line Chart\\\", \\\"fieldName\\\": null, \\\"showlabel\\\": true, \\\"chartcolor\\\": null, \\\"chartlegend\\\": true, \\\"charturl\\\": \\\"http://43.205.154.152:30179/entityBuilder/Gaurav_testing\\\",\\\"xAxis\\\": \\\"name\\\",\\\"donut\\\": null, \\\"chartparameter\\\": null, \\\"datastore\\\": null,\\\"datasource\\\": null,\\\"id\\\": null,\\\"slices\\\": null,\\\"yAxis\\\": [\\\"pincode\\\"],\\\"charttitle\\\": \\\"Live Details\\\"}]','myfirstdashboard');\n" + + "/*!40000 ALTER TABLE `dashboard` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard_builder_t`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard_builder_t` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `dashboardname` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard_builder_t` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `dashboard_builder_t` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboard_schedule_t`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboard_schedule_t` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `attachment` varchar(255) DEFAULT NULL,\n" + + " `cc` varchar(255) DEFAULT NULL,\n" + " `cron` varchar(255) DEFAULT NULL,\n" + + " `end_time` datetime DEFAULT NULL,\n" + " `every` varchar(255) DEFAULT NULL,\n" + + " `gateway` varchar(255) DEFAULT NULL,\n" + " `gatewaydone` varchar(255) DEFAULT NULL,\n" + + " `replacement_string` varchar(255) DEFAULT NULL,\n" + " `send_to` varchar(255) DEFAULT NULL,\n" + + " `start_time` datetime DEFAULT NULL,\n" + " `template` varchar(255) DEFAULT NULL,\n" + + " `type` varchar(255) DEFAULT NULL,\n" + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboard_schedule_t` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `dashboard_schedule_t` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `dashboardaxis`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `dashboardaxis` (\n" + + " `id` bigint NOT NULL AUTO_INCREMENT,\n" + " `april` varchar(255) DEFAULT NULL,\n" + + " `feb` varchar(255) DEFAULT NULL,\n" + " `jan` varchar(255) DEFAULT NULL,\n" + + " `march` varchar(255) DEFAULT NULL,\n" + " `may` varchar(255) DEFAULT NULL,\n" + + " PRIMARY KEY (`id`)\n" + + ") ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `dashboardaxis` DISABLE KEYS */;\n" + + "INSERT INTO `dashboardaxis` VALUES (1,'5','10','25','3',NULL),(3,'5000','15000','10000','30000',NULL),(4,'5000','15000','10000','30000',NULL),(5,'5000','15000','5','30000',NULL),(6,'5000','15000','10000','30000','2000'),(7,'23','20','25','30','20'),(8,'23','20','25','30','99'),(9,'23','20','25','30','20');\n" + + "/*!40000 ALTER TABLE `dashboardaxis` ENABLE KEYS */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `system_paramaters` DISABLE KEYS */;\n" + + "INSERT INTO `system_paramaters` VALUES (1,'test1',0,NULL,NULL,NULL,0,NULL,NULL,NULL,0,_binary '',NULL,0,0,0,NULL,NULL,NULL,0,NULL,0,0,0,NULL,NULL,NULL,NULL,0,0);\n" + + "/*!40000 ALTER TABLE `system_paramaters` ENABLE KEYS */;\n" + "\n" + "\n" + + "DROP TABLE IF EXISTS `sys_param_upload`;\n" + + "/*!40101 SET @saved_cs_client = @@character_set_client */;\n" + + "/*!50503 SET character_set_client = utf8mb4 */;\n" + "CREATE TABLE `sys_param_upload` (\n" + + " `attachment_id` int NOT NULL,\n" + " `attachment` longblob,\n" + + " `attachment_filename` varchar(255) DEFAULT NULL,\n" + + " `attachment_type` varchar(255) DEFAULT NULL,\n" + " `cancel_status` varchar(255) NOT NULL,\n" + + " `external_flag` varchar(255) DEFAULT NULL,\n" + " `updated_by` varchar(255) DEFAULT NULL,\n" + + " `sys_param_entity_id` int DEFAULT NULL,\n" + " PRIMARY KEY (`attachment_id`),\n" + + " KEY `FKl1h7bcgpr1y10ydiqw849vq99` (`sys_param_entity_id`),\n" + + " CONSTRAINT `FKl1h7bcgpr1y10ydiqw849vq99` FOREIGN KEY (`sys_param_entity_id`) REFERENCES `system_paramaters` (`id`)\n" + + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;\n" + + "/*!40101 SET character_set_client = @saved_cs_client */;\n" + "\n" + "\n" + "\n" + + "/*!40000 ALTER TABLE `sys_param_upload` DISABLE KEYS */;\n" + + "/*!40000 ALTER TABLE `sys_param_upload` ENABLE KEYS */;\n" + "\n" + "\n" + + "-- Dump completed on 2024-01-27 15:45:01"; + return sql; + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java new file mode 100644 index 0000000..2961b42 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/BulkUpload_Controller.java @@ -0,0 +1,43 @@ +package com.realnet.BulkUpload.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Services.BulkUpload_Service; +@RequestMapping(value = "/BulkUpload") +@RestController +public class BulkUpload_Controller { + + @Autowired + private BulkUpload_Service Service; + + @PostMapping("/BulkUpload") + public BulkUpload_t Savedata(@RequestBody BulkUpload_t data) { + BulkUpload_t save = Service.Savedata(data) ; + return save; + } + + @GetMapping("/BulkUpload") + public List getdetails() { + List get = Service.getdetails(); + return get; +} + +@GetMapping("/BulkUpload/{id}") + public BulkUpload_t getdetailsbyId(@PathVariable Long id ) { + BulkUpload_t get = Service.getdetailsbyId(id); + return get; + + } +@DeleteMapping("/BulkUpload/{id}") + public void delete_by_id(@PathVariable Long id ) { + Service.delete_by_id(id); + + } + +@PutMapping("/BulkUpload/{id}") + public BulkUpload_t update(@RequestBody BulkUpload_t data,@PathVariable Long id ) { + BulkUpload_t update = Service.update(data,id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java new file mode 100644 index 0000000..ee2fdea --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/DataImportController.java @@ -0,0 +1,1082 @@ +package com.realnet.BulkUpload.Controllers; + +import org.apache.commons.lang3.StringUtils; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.UnsupportedEncodingException; +import java.net.URLDecoder; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.sql.Timestamp; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.Optional; +import java.util.Set; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.CellType; +import org.apache.poi.ss.usermodel.DateUtil; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +//import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.BulkUpload.Repository.BulkUpload_Repository; +import com.realnet.BulkUpload.Services.BulkUpload_Service; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.DynamicTemplateService; +import com.realnet.template.service.FileUploadService; + +@RestController +@RequestMapping("api/BulkUpload") +public class DataImportController { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + @Autowired + private DynamicTemplateService dynamicTemplateService; + + @Autowired + private BulkUpload_Service bulkUpload_Service; + + @Autowired + private BulkUpload_Repository bulkUpload_Repository; + + @Autowired + private FileUploadService fileUploadService; + + @Autowired + private ObjectMapper objectMapper; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/templatetojson/{id}") + public ResponseEntity convertFileToJson(@PathVariable Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + LinkedHashMap>> result = new LinkedHashMap<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + + List> sheetDataList = new ArrayList<>(); + + XSSFRow headerRow = sheet.getRow(0); + for (int rowNum = 1; rowNum <= sheet.getLastRowNum(); rowNum++) { + XSSFRow row = sheet.getRow(rowNum); + + if (row != null) { + LinkedHashMap rowData = new LinkedHashMap<>(); + for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) { + XSSFCell cell = row.getCell(cellNum); + if (cell != null) { + String columnName = headerRow.getCell(cellNum).getStringCellValue(); + String cellValue; + + // Check if the cell contains a date + if (cell.getCellType() == CellType.NUMERIC && DateUtil.isCellDateFormatted(cell)) { + // If it's a date, format it as "dd-MMM-yyyy" + Date dateCellValue = cell.getDateCellValue(); + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + cellValue = dateFormat.format(dateCellValue); + } else { + // If not a date, convert the cell value to a string + cellValue = cell.toString(); + } + + rowData.put(columnName, cellValue); + } + } + sheetDataList.add(rowData); + } + } + + // Add the sheet data to the result LinkedHashMap with the sheet name as the key + result.put(sheetName, sheetDataList); + } + + return ResponseEntity.ok(result); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @GetMapping("/getHeaders/{id}") + public ResponseEntity getAllSheetHeaders(@PathVariable Long id) throws IOException { + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.orElse(null); + + if (fileUpload == null) { + return ResponseEntity.notFound().build(); + } + + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + return ResponseEntity.notFound().build(); + } + + try (Workbook workbook = WorkbookFactory.create(file)) { + Map>> sheetHeadersMap = new LinkedHashMap<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + Sheet sheet = workbook.getSheetAt(i); + List> sheetHeaders = new ArrayList<>(); + + Row headerRow = sheet.getRow(0); + + if (headerRow != null) { + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + Map headerObject = new LinkedHashMap<>(); + headerObject.put("headerName", header); + headerObject.put("value", ""); // Empty value + sheetHeaders.add(headerObject); + } + } + + sheetHeadersMap.put(sheet.getSheetName(), sheetHeaders); + } + + return ResponseEntity.ok(sheetHeadersMap); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @PostMapping("/jsonkeychange") + public ResponseEntity>>>> transformData( + @RequestParam("updatedKeyJson") String updatedKeyJson, + @RequestParam("oldKeyDataJson") String oldKeyDataJson) throws IOException { + try { + // Deserialize JSON strings into JSON objects + JsonNode updatedKeyJsonObject = objectMapper.readTree(updatedKeyJson); + JsonNode oldKeyDataJsonArray = objectMapper.readTree(oldKeyDataJson); + + // Create a result list with a single element + List>>> result = new ArrayList<>(); + + // Create a single element to hold the transformed data + Map>> transformedDataMap = new LinkedHashMap<>(); + + // Iterate through updatedKeyJson keys (e.g., "Customer", "Site") + Iterator updatedKeys = updatedKeyJsonObject.fieldNames(); + while (updatedKeys.hasNext()) { + String key = updatedKeys.next(); + JsonNode updatedKeyMappings = updatedKeyJsonObject.get(key); + + // Create a mapping of headerName to value from updatedKeyJson + Map keyMapping = new LinkedHashMap<>(); + for (JsonNode mapping : updatedKeyMappings) { + String headerName = mapping.get("headerName").asText(); + String value = mapping.get("value").asText(); + keyMapping.put(headerName, value); + } + + // Find the corresponding data array in oldKeyDataJsonArray + for (JsonNode oldDataArray : oldKeyDataJsonArray) { + if (oldDataArray.has(key)) { + JsonNode dataArray = oldDataArray.get(key); + List> transformedData = new ArrayList<>(); + + // Iterate through oldKeyDataJson for the given key + for (JsonNode item : dataArray) { + Map transformedItem = new LinkedHashMap<>(); + Iterator> fields = item.fields(); + + // Map old keys to new keys using keyMapping + while (fields.hasNext()) { + Map.Entry field = fields.next(); + String oldKey = field.getKey(); + String newKey = keyMapping.get(oldKey); + JsonNode valueNode = field.getValue(); + Object newValue = valueNode.isTextual() && ("TRUE".equalsIgnoreCase(valueNode.asText()) + || "FALSE".equalsIgnoreCase(valueNode.asText())) + ? Boolean.parseBoolean(valueNode.asText()) + : valueNode.asText(); + transformedItem.put(newKey, newValue); + } + + transformedData.add(transformedItem); + } + + // Add the transformed data to the single element + transformedDataMap.put(key, transformedData); + } + } + } + + // Add the single element to the result list + result.add(transformedDataMap); + + return new ResponseEntity<>(result, HttpStatus.OK); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + /////////// VERY IMPORTANT NOT DELETE THE BELOW/////////// + +// @PostMapping("/DownloadExcel/{id}") +// public ResponseEntity importdatadownloadexcel(@PathVariable Long id, +// @RequestBody Map>> jsonData) { +// +// TemplateFileUpload templateFileUpload = fileUploadService.getTemplatebyid(id); +// +// String entity_name = templateFileUpload.getEntity_name(); +// +// BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); +// String ruleLine = bulkUpload_t.getRule_line(); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(ruleLine); +// JsonArray array = element.getAsJsonArray(); +// Iterator iterator = array.iterator(); +// +// String fromsheet = null; +// String fromColumn = null; +// String validationTable = null; +// String checkColumn = null; +// String useColumn = null; +// String replacementtable = null; +// String replacementcolumn = null; +// +// while (iterator.hasNext()) { +// JsonElement next = iterator.next(); +// JsonObject jsonObject = next.getAsJsonObject(); +// +// fromsheet = jsonObject.get("fromsheet").getAsString(); +// fromColumn = jsonObject.get("fromColumn").getAsString(); +// validationTable = jsonObject.get("validationTable").getAsString(); +// checkColumn = jsonObject.get("checkColumn").getAsString(); +// useColumn = jsonObject.get("useColumn").getAsString(); +// replacementtable = jsonObject.get("useTable").getAsString(); +// replacementcolumn = jsonObject.get("replacementcolumn").getAsString(); +// +// break; +// } +// +// String customerTableName = validationTable; +// String siteTableName = replacementtable; +// +// try { +// Set tableNames = jsonData.keySet(); // Get all unique table names +// +// String siteEntityName = null; +// for (String tableName : tableNames) { +// List> tableData = jsonData.get(tableName); +// +// // Process tableData based on the tableName (e.g., "Site" or "Customer") +// System.out.println("Table Name: " + tableName); +// for (Map row : tableData) { +// // Process individual rows within the table data +// System.out.println("Row Data: " + row); +// } +// } +// +// List> processedDataList = new ArrayList<>(); // List to hold processed data rows +// +// // Iterate through each customer data entry +// List> customerData = jsonData.get("Customer"); +// for (Map insertCustomerData : customerData) { +// String customerName = (String) insertCustomerData.get(checkColumn); +// +// // Check if the customerName is not null and iterate through "Site" data +// List> siteData = jsonData.get(fromsheet); +// +// List> matchedSiteData = new ArrayList<>(); +// if (customerName != null) { +// // Iterate through "Site" data and check for a matching "entity_name" +// for (Map siteRow : siteData) { +// // Specify the index as "AM" (39th column) +//// String columnIndex = "AM"; +// String columnIndex = fromColumn; +// +// // Retrieve the value at the specified index +// +// for (Map.Entry entry : siteRow.entrySet()) { +// if (entry.getKey().equals(columnIndex)) { +// siteEntityName = (String) entry.getValue(); +// break; // Exit the loop once the value is found +// } +// } +// +// if (customerName.equals(siteEntityName)) { +// // Add the matching "Site" data to the list +// matchedSiteData.add(siteRow); +// } +// } +// } +// +// ObjectMapper objectMapper = new ObjectMapper(); +// String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); +// String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); +// +// String customerSql = getInsertQuery(customerTableName, insertCustomerData); +// +// // Insert data into the customer table +// Object[] customerValues = new Object[insertCustomerData.size() + 5]; +// int index = 0; +// for (Object value : insertCustomerData.values()) { +// customerValues[index++] = value; +// } +// customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at +// customerValues[index++] = null; // created_by +// customerValues[index++] = null; // updated_by +// customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at +// customerValues[index] = null; // account_id +// jdbcTemplate.update(customerSql, customerValues); +// +// // we can use useColumn here +// Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); +// +// List> insertMatchedSiteData = new ArrayList<>(); // List to hold processed data rows +// +// for (Map siteRow : matchedSiteData) { +// // Replace "Customer Name" with "customer_master_id" if it exists +// if (siteRow.containsKey(siteEntityName)) { +// siteRow.put(replacementcolumn, generatedId); +// siteRow.remove(siteEntityName); +// } +// insertMatchedSiteData.add(siteRow); +// } +// +// for (Map siteRow : insertMatchedSiteData) { +// Object[] siteValues = new Object[siteRow.size() + 5]; // Create a new array for each row +// +// int siteIndex = 0; +// for (Object value : siteRow.values()) { +// siteValues[siteIndex++] = value; +// } +// +// siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at +// siteValues[siteIndex++] = null; // created_by +// siteValues[siteIndex++] = null; // updated_by +// siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at +// siteValues[siteIndex] = null; // account_id +// +// String siteSql = getInsertQuery(siteTableName, siteRow); +// jdbcTemplate.update(siteSql, siteValues); +// } +// +// // Add the processed customer data to the list +// processedDataList.add(insertCustomerData); +// } +// +// // Use a LinkedHashMap to preserve insertion order in the response +// Map>> response = new LinkedHashMap<>(); +// response.put("result", processedDataList); +// +// return new ResponseEntity<>(response, HttpStatus.OK); +// +// } catch (Exception e) { +// e.printStackTrace(); +// // Handle exceptions and return an appropriate response +// return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); +// } +// } + + @PostMapping("/DownloadExcel/{id}") + public ResponseEntity importdatadownloadexcel( @PathVariable Long id, + @RequestParam(name = "jsonData") String jsonDataParam, + @RequestParam(name = "ruleData") String ruleDataParam) + throws JsonMappingException, JsonProcessingException, UnsupportedEncodingException { + + + + // Inside your method + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode ruleDataNode = objectMapper.readTree(ruleDataParam); + + if (ruleDataNode.isArray() && ruleDataNode.isEmpty()) { + // If ruleDataParam is an empty JSON array, directly upload data to the table + return uploadDataToTable(id, jsonDataParam); + } + + + + // Parse jsonDataParam to extract the JSON data + Map>> jsonData = objectMapper.readValue( + URLDecoder.decode(jsonDataParam, "UTF-8"), new TypeReference>>>() { + }); + + // Parse ruleDataParam to extract the JSON data + List> ruleData = objectMapper.readValue(URLDecoder.decode(ruleDataParam, "UTF-8"), + new TypeReference>>() { + }); + + String fromsheet = null; + String fromColumn = null; + String validationTable = null; + String checkColumn = null; + String useColumn = null; + String replacementtable = null; + String replacementcolumn = null; + + + + if (ruleData != null && !ruleData.isEmpty()) { + // Assuming you want to access the first element in the array + Map rule = ruleData.get(0); + + fromsheet = rule.get("fromsheet"); + fromColumn = rule.get("fromColumn"); + validationTable = rule.get("validationTable"); + checkColumn = rule.get("checkColumn"); + useColumn = rule.get("useColumn"); + replacementtable = rule.get("replacementTable"); + replacementcolumn = rule.get("replacementcolumn"); + } + + String customerTableName = validationTable; + String siteTableName = replacementtable; + + try { + + String siteEntityName = null; + String responseMessage = null; + // Create a workbook + XSSFWorkbook workbook = new XSSFWorkbook(); + + // Create a sheet for customer data + XSSFSheet customerSheet = workbook.createSheet("Customer"); + + // Create a sheet for site data + XSSFSheet siteSheet = workbook.createSheet("Site"); + + + List> customerDataList = new ArrayList<>(); + List> siteDataList = new ArrayList<>(); + + // Get the column names for customer data + List customerColumnNames = getColumnNames(jsonData.get("Customer").get(0)); + // Create the header row for customer data + XSSFRow customerHeaderRow = customerSheet.createRow(0); + for (int i = 0; i < customerColumnNames.size(); i++) { + XSSFCell cell = customerHeaderRow.createCell(i); + cell.setCellValue(customerColumnNames.get(i)); + } + + // Get the column names for site data + List siteColumnNames = getColumnNames(jsonData.get(fromsheet).get(0)); + // Create the header row for site data + XSSFRow siteHeaderRow = siteSheet.createRow(0); + for (int i = 0; i < siteColumnNames.size(); i++) { + XSSFCell cell = siteHeaderRow.createCell(i); + cell.setCellValue(siteColumnNames.get(i)); + } + + // Iterate through each customer data entry + List> customerData = jsonData.get("Customer"); + for (Map insertCustomerData : customerData) { + String customerName = (String) insertCustomerData.get(checkColumn); + + Map processedRow = new HashMap<>(); + + // Check if the customerName is not null and iterate through "Site" data + List> siteData = jsonData.get(fromsheet); + + List> matchedSiteData = new ArrayList<>(); + if (customerName != null) { + // Iterate through "Site" data and check for a matching "entity_name" + for (Map siteRow : siteData) { + String columnIndex = fromColumn; + + String cellValue = getCellValue(jsonData, fromsheet, columnIndex); + responseMessage = cellValue; + + for (Map.Entry entry : siteRow.entrySet()) { + if (entry.getKey().equals(responseMessage)) { + siteEntityName = (String) entry.getValue(); + break; // Exit the loop once the value is found + } + } + + if (customerName.equals(siteEntityName)) { + // Add the matching "Site" data to the list + matchedSiteData.add(siteRow); + } + } + } + + String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); + String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); + + String customerSql = getInsertQuery(customerTableName, insertCustomerData); + + // Insert data into the customer table + try { + Object[] customerValues = new Object[insertCustomerData.size() + 5]; + int index = 0; + for (Object value : insertCustomerData.values()) { + customerValues[index++] = value; + } + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at + customerValues[index++] = null; // created_by + customerValues[index++] = null; // updated_by + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + customerValues[index] = null; // account_id + jdbcTemplate.update(customerSql, customerValues); + processedRow.putAll(insertCustomerData); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + customerDataList.add(processedRow); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(insertCustomerData); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + e.printStackTrace(); + customerDataList.add(processedRow); + } + + // Get the generated ID from the database + Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); + + List> newMatchedSiteData = new ArrayList<>(); + + for (Map siteRow : matchedSiteData) { + // Replace "Customer Name" with "customer_master_id" if it exists + if (siteRow.containsKey(responseMessage)) { + siteRow.put(replacementcolumn, generatedId); + // siteRow.remove(responseMessage); + // siteRow.remove(responseMessage); + } + newMatchedSiteData.add(siteRow); + } + + // Insert site data for this customer + for (Map siteRow : newMatchedSiteData) { + Map siteProcessedRow = new HashMap<>(); + try { + Object[] siteValues = new Object[siteRow.size() + 5]; + + int siteIndex = 0; + for (Object value : siteRow.values()) { + siteValues[siteIndex++] = value; + } + + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at + siteValues[siteIndex++] = null; // created_by + siteValues[siteIndex++] = null; // updated_by + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at + siteValues[siteIndex] = null; // account_id + + String siteSql = getInsertQuery(siteTableName, siteRow); + jdbcTemplate.update(siteSql, siteValues); + siteProcessedRow.putAll(siteRow); + siteProcessedRow.put("Status", "Success"); + siteProcessedRow.put("Exception", "NA"); + siteDataList.add(siteProcessedRow); + } catch (DataIntegrityViolationException ex) { + siteProcessedRow.putAll(siteRow); + siteProcessedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(ex); + siteProcessedRow.put("Exception", exceptionMessage); + ex.printStackTrace(); + siteDataList.add(siteProcessedRow); + } + } + } + + // Write customer data to the customer sheet + writeDataToSheet(customerDataList, customerSheet, customerColumnNames); + // Write site data to the site sheet + writeDataToSheet(siteDataList, siteSheet, siteColumnNames); + + String filepath = "import-data"; + + long unixTimestamp = System.currentTimeMillis(); + + // Create the file name with the Unix timestamp + String excelFile = "failed_records_" + unixTimestamp + ".xlsx"; + + // String excelFilePath = "D:\\REAL IT + // SOLUTION\\SureSetuOld\\suresetu-mohasin205\\backend\\import-data\\processingfile\\failed_records.xlsx"; + + String location = projectPath + File.separator + filepath; + File dir2 = new File(location); + if (!dir2.exists()) { + dir2.mkdir(); + } + +// String file_name2 = file.getOriginalFilename(); + + File staticdir2 = new File(location + "/statusFile"); + if (!staticdir2.exists()) { + staticdir2.mkdir(); + } + + String excelFilePath = staticdir2 + File.separator + excelFile; + + Optional fileUploadOptional = temprepo.findById(id); + + if (fileUploadOptional.isPresent()) { + TemplateFileUpload fileUpload = fileUploadOptional.get(); + fileUpload.setDownloadfileLocation(excelFilePath); + temprepo.save(fileUpload); + } + + try (FileOutputStream fileOutputStream = new FileOutputStream(excelFilePath)) { + workbook.write(fileOutputStream); + } catch (IOException e) { + e.printStackTrace(); + // Handle the exception appropriately + } + + return ResponseEntity.ok().body("Excel file saved successfully to: " + excelFilePath); + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private List getColumnNames(Map dataRow) { + return new ArrayList<>(dataRow.keySet()); + } + + // Method to write data to a sheet + private void writeDataToSheet(List> dataList, XSSFSheet sheet, List columnNames) { + int rowIndex = 0; + // Create the header row + XSSFRow headerRow = sheet.createRow(rowIndex++); + for (int i = 0; i < columnNames.size(); i++) { + XSSFCell cell = headerRow.createCell(i); + cell.setCellValue(columnNames.get(i)); + } + // Add "Status" and "Exception" columns to the sheet + headerRow.createCell(columnNames.size()).setCellValue("Status"); + headerRow.createCell(columnNames.size() + 1).setCellValue("Exception"); + + // Write the data rows + for (Map row : dataList) { + XSSFRow dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (String columnName : columnNames) { + Object value = row.get(columnName); + XSSFCell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value != null ? value.toString() : ""); + } + // Add "Status" and "Exception" values to the data row + dataRow.createCell(columnIndex++).setCellValue(row.get("Status").toString()); + dataRow.createCell(columnIndex).setCellValue(row.get("Exception").toString()); + } + + } + + + + private ResponseEntity uploadDataToTable(Long id, String jsonDataParam) { + try { + // Get table name from TemplateFileUpload entity + Optional fileUploadOptional = temprepo.findById(id); + if (fileUploadOptional.isPresent()) { + TemplateFileUpload fileUpload = fileUploadOptional.get(); +// String tableName = fileUpload.getTablename(); + String tableName = "aa"; + // Insert data into the specified table + insertDataIntoTable(tableName, jsonDataParam); + return ResponseEntity.ok().body("Data uploaded successfully to table: " + tableName); + } else { + return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Template file with id " + id + " not found"); + } + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + + private void insertDataIntoTable(String tableName, String jsonDataParam) { + try { + ObjectMapper objectMapper = new ObjectMapper(); + // Parse jsonDataParam to extract the JSON data + Map>> jsonData = objectMapper.readValue( + URLDecoder.decode(jsonDataParam, "UTF-8"), new TypeReference>>>() {}); + + // Iterate over the entries of the jsonData map + for (Map.Entry>> entry : jsonData.entrySet()) { + String sheetName = entry.getKey(); // Get the sheet name dynamically + List> data = entry.getValue(); // Get the list of maps dynamically + + // Now you have the list of maps for the current sheet, you can iterate through it and perform your database insertion logic + for (Map rowData : data) { + StringBuilder columns = new StringBuilder(); + StringBuilder values = new StringBuilder(); + List params = new ArrayList<>(); + + // Build column names and values dynamically + for (Map.Entry columnEntry : rowData.entrySet()) { + if (columns.length() > 0) { + columns.append(", "); + values.append(", "); + } + columns.append(columnEntry.getKey()); + values.append("?"); + params.add(columnEntry.getValue()); + } + + // Construct the SQL query + String sql = "INSERT INTO " + tableName + " (" + columns + ") VALUES (" + values + ")"; + + // Execute the SQL query + jdbcTemplate.update(sql, params.toArray()); + } + } + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions appropriately + } + } + + + + private String extractExceptionMessage(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String getInsertQuery(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + @GetMapping("/sheet/{id}") + public ResponseEntity getSheet(@PathVariable Long id) throws IOException { + ResponseEntity jsonData = convertFileToJsonforsheet(id); + + return ResponseEntity.ok(jsonData.getBody()); + } + + public ResponseEntity convertFileToJsonforsheet(Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + if (!fileUploadOptional.isPresent()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + List sheetNames = new ArrayList<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + sheetNames.add(sheetName); + } + + return ResponseEntity.ok(sheetNames); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + + + @GetMapping("/downloadImportStatement/{id}") + public ResponseEntity downloadImportStatement(@PathVariable Long id) { + // Retrieve the file data from the database based on the ID + TemplateFileUpload fileUpload = fileUploadService.getFileById(id); + + // Get the file location from the entity + String fileLocation = fileUpload.getDownloadfileLocation(); +// String filename = fileUpload.getDownloadfileName(); +// +// String filepath = fileLocation + File.separator + filename; + + try { + // Read the file content from the specified location + byte[] fileContent = Files.readAllBytes(Paths.get(fileLocation)); + + // Create a ByteArrayResource from the file content + ByteArrayResource resource = new ByteArrayResource(fileContent); + + return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileUpload.getFile_name() + "\"") + .body(resource); + } catch (IOException e) { + // Handle any potential exceptions (e.g., file not found) + e.printStackTrace(); + return ResponseEntity.status(500).body("Error occurred while reading the file."); + } + } + + + //get table column + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = tableName; + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + + + + + private String getCellValue(Map>> jsonData, String sheetName, + String cellAddress) throws IOException { + if (jsonData.containsKey(sheetName)) { + List> sheetData = jsonData.get(sheetName); + int size = sheetData.size(); + System.out.println(size); + Map firstRowData = sheetData.get(0); + + // Separate the numeric part (row part) and non-numeric part (column part) + String rowPart = ""; + String columnPart = ""; + + for (char c : cellAddress.toCharArray()) { + if (Character.isDigit(c)) { + rowPart += c; + } else { + columnPart += c; + } + } + + System.out.println("Column Part: " + columnPart); + System.out.println("Row Part: " + rowPart); + + int columnIndex = getColumnIndex(columnPart); // Get the column index based on the columnPart +// int rowIndex = Integer.parseInt(rowPart) - 1; // Excel-style 1-based index + System.out.println("Column Index: " + columnIndex); + + + if (columnIndex >= 0 ) { + // Get the list of keys from the firstRowData map + List keys = new ArrayList<>(firstRowData.keySet()); + + // Check if the columnIndex is within the range of keys + if (columnIndex < keys.size()) { + String columnName = keys.get(columnIndex); + return columnName; + } + } + } + + + + return null; + } + + + + + + private int getColumnIndex(String columnPart) { + int index = 0; + int multiplier = 1; + + // Iterate through the columnPart in reverse order (right to left) + for (int i = columnPart.length() - 1; i >= 0; i--) { + char c = columnPart.charAt(i); + index += (c - 'A' + 1) * multiplier; + multiplier *= 26; // Multiply by 26 for each position to calculate the index + } + + return index - 1; // Subtract 1 to get a 0-based index + } + + + + + +// @PostMapping("/DownloadExcel/{entityName}") +// public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, +// @RequestBody List> data) throws IOException { +// List> processedData = processData(entityName, data); +// if (!processedData.isEmpty()) { +// Workbook workbook = createWorkbook(processedData); +// Resource resource = createExcelResource(workbook); +// return ResponseEntity.ok() +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")) +// .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx") +// .body(resource); +// } +// return ResponseEntity.ok().body(null); +// } + + + + private List> processData(String entityName, List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + } catch (Exception e) { + // Handle any exceptions here if needed + } + return processedData; + } + + + + private Workbook createWorkbook(List> processedData) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + + return workbook; + } + + private Resource createExcelResource(Workbook workbook) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + return new InputStreamResource(inputStream); + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java new file mode 100644 index 0000000..7afa290 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MappingRuleController.java @@ -0,0 +1,124 @@ +package com.realnet.BulkUpload.Controllers; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.BulkUpload.Entity.MappingRule; +import com.realnet.BulkUpload.Services.MappingRuleService; + +@RestController +@RequestMapping("/MappingRule") +public class MappingRuleController { + @Autowired + private MappingRuleService Service; + + @PostMapping("/MappingRule") + public MappingRule Savedata(@RequestBody MappingRule data) { + MappingRule save = Service.Savedata(data); + return save; + } + + @GetMapping("/MappingRule") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/MappingRule/{id}") + public MappingRule getdetailsbyId(@PathVariable Long id) { + MappingRule get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/MappingRule/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/MappingRule/{id}") + public MappingRule update(@RequestBody MappingRule data, @PathVariable Long id) { + MappingRule update = Service.update(data, id); + return update; + } + + @GetMapping("/getHeaders") + public ResponseEntity getFileHeadersForSheet( + @RequestParam("file") MultipartFile excelFile, + @RequestParam("sheetName") String sheetName) { + try (Workbook workbook = WorkbookFactory.create(excelFile.getInputStream())) { + List sheetHeaders = new ArrayList<>(); + Sheet sheet = workbook.getSheet(sheetName); + + if (sheet == null) { + return ResponseEntity.notFound().build(); // Sheet not found + } + + Row headerRow = sheet.getRow(0); + if (headerRow != null) { + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + sheetHeaders.add(header); + } + } + + return ResponseEntity.ok(sheetHeaders); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + +// @GetMapping("/getHeadersMapping") +// public ResponseEntity getAllSheetHeadersForMapping(@RequestParam("file") MultipartFile excelFile,@RequestParam("sheetName") String sheetName) { +// try (Workbook workbook = WorkbookFactory.create(excelFile.getInputStream())) { +// Map>> sheetHeadersMap = new LinkedHashMap<>(); +// +// for (int i = 0; i < workbook.getNumberOfSheets(); i++) { +// Sheet sheet = workbook.getSheet(sheetName); +// List> sheetHeaders = new ArrayList<>(); +// +// Row headerRow = sheet.getRow(0); +// +// if (headerRow != null) { +// for (Cell cell : headerRow) { +// String header = cell.getStringCellValue(); +// Map headerObject = new LinkedHashMap<>(); +// headerObject.put("headerName", header); +// headerObject.put("value", ""); // Empty value +// sheetHeaders.add(headerObject); +// } +// } +// +// sheetHeadersMap.put(sheet.getSheetName(), sheetHeaders); +// } +// +// return ResponseEntity.ok(sheetHeadersMap); +// } catch (Exception e) { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); +// } +// } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java new file mode 100644 index 0000000..0266bf3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Controllers/MasterImportController.java @@ -0,0 +1,600 @@ +package com.realnet.BulkUpload.Controllers; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFCell; +import org.apache.poi.xssf.usermodel.XSSFRow; +import org.apache.poi.xssf.usermodel.XSSFSheet; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Repository.BulkUpload_Repository; +import com.realnet.BulkUpload.Services.BulkUpload_Service; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.DynamicTemplateService; +import com.realnet.template.service.FileUploadService; + +@RestController +@RequestMapping("/masterimport") +public class MasterImportController { + + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + @Autowired + private DynamicTemplateService dynamicTemplateService; + + @Autowired + private BulkUpload_Service bulkUpload_Service; + + @Autowired + private BulkUpload_Repository bulkUpload_Repository; + + @Autowired + private FileUploadService fileUploadService; + + @Autowired + private ObjectMapper objectMapper; + + @Value("${projectPath}") + private String projectPath; + + @GetMapping("/demo/download/{file_type}") + public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { + Workbook workbook = new XSSFWorkbook(); + + if (file_type.equalsIgnoreCase("Customer")) { + // Create Customer sheet with headers only + String[] customerHeaders = { "balance", "c_status", "city", "country","currency_code","customer_id", + "date_of_birth", "defaultsite_id", "email", "entity_name","file_name","file_path", + "first_name", "gender", "gst_no", "gst_state","house_no","mobile_no", + "pan_no", "sales_rep", "special_price", "state","street_address","street_address2", + "time_zone", "postal_code", "contact_number"}; + createSheetWithHeaders(workbook, "Customer", customerHeaders); + + // Create Site sheet with headers only + String[] siteHeaders = { "Site Name", "Site Description", "Active", "Test" }; + createSheetWithHeaders(workbook, "Site", siteHeaders); + } else { + return new ResponseEntity("Not found", HttpStatus.BAD_REQUEST); + } + + ByteArrayOutputStream out = new ByteArrayOutputStream(); + workbook.write(out); + + return ResponseEntity.ok() + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + file_type + "_template.xlsx") + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(out.toByteArray()); + } + + private void createSheetWithHeaders(Workbook workbook, String sheetName, String[] headers) { + Sheet sheet = workbook.createSheet(sheetName); + Row headerRow = sheet.createRow(0); + + // Create headers + for (int col = 0; col < headers.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(headers[col]); + } + } + + @PostMapping("/DownloadExcelForMaster/{id}") + public ResponseEntity DownloadExcelForMaster(@PathVariable Long id, + @RequestBody Map>> jsonData) { + try { + + List templateFileUpload = temprepo.findUnprocessedRecordsOrderedByIdAsc(); + + + + if (!templateFileUpload.isEmpty()) { + for (TemplateFileUpload upload : templateFileUpload) { + String entity_name = upload.getEntity_name(); + BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); + String ruleLine = bulkUpload_t.getRule_line(); + +// BulkUpload_t bulkUpload_t = bulkUpload_Repository.getentityName(entity_name); +// String ruleLine = bulkUpload_t.getRule_line(); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(ruleLine); + JsonArray array = element.getAsJsonArray(); + Iterator iterator = array.iterator(); + + String fromsheet = null; + String fromColumn = null; + String validationTable = null; + String checkColumn = null; + String useColumn = null; + String replacementtable = null; + String replacementcolumn = null; + + while (iterator.hasNext()) { + JsonElement next = iterator.next(); + JsonObject jsonObject = next.getAsJsonObject(); + + fromsheet = jsonObject.get("fromsheet").getAsString(); + fromColumn = jsonObject.get("fromColumn").getAsString(); + validationTable = jsonObject.get("validationTable").getAsString(); + checkColumn = jsonObject.get("checkColumn").getAsString(); + useColumn = jsonObject.get("useColumn").getAsString(); + replacementtable = jsonObject.get("useTable").getAsString(); + replacementcolumn = jsonObject.get("replacementcolumn").getAsString(); + + break; + } + + String customerTableName = validationTable; + String siteTableName = replacementtable; + + Set tableNames = jsonData.keySet(); // Get all unique table names + + String siteEntityName = null; + for (String tableName : tableNames) { + List> tableData = jsonData.get(tableName); + + // Process tableData based on the tableName (e.g., "Site" or "Customer") + System.out.println("Table Name: " + tableName); + for (Map row : tableData) { + // Process individual rows within the table data + System.out.println("Row Data: " + row); + } + } + + List> processedDataList = new ArrayList<>(); // List to hold processed data rows + + // Iterate through each customer data entry + List> customerData = jsonData.get("Customer"); + for (Map insertCustomerData : customerData) { + String customerName = (String) insertCustomerData.get(checkColumn); + + // Check if the customerName is not null and iterate through "Site" data + List> siteData = jsonData.get(fromsheet); + + List> matchedSiteData = new ArrayList<>(); + if (customerName != null) { + // Iterate through "Site" data and check for a matching "entity_name" + for (Map siteRow : siteData) { + // Specify the index as "AM" (39th column) +// String columnIndex = "AM"; + String columnIndex = fromColumn; + + // Retrieve the value at the specified index + + for (Map.Entry entry : siteRow.entrySet()) { + if (entry.getKey().equals(columnIndex)) { + siteEntityName = (String) entry.getValue(); + break; // Exit the loop once the value is found + } + } + + if (customerName.equals(siteEntityName)) { + // Add the matching "Site" data to the list + matchedSiteData.add(siteRow); + } + } + } + + ObjectMapper objectMapper = new ObjectMapper(); + String insertCustomerDataJson = objectMapper.writeValueAsString(insertCustomerData); + String matchedSiteDataJson = objectMapper.writeValueAsString(matchedSiteData); + + String customerSql = getInsertQuery(customerTableName, insertCustomerData); + + // Insert data into the customer table + Object[] customerValues = new Object[insertCustomerData.size() + 5]; + int index = 0; + for (Object value : insertCustomerData.values()) { + customerValues[index++] = value; + } + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // created_at + customerValues[index++] = null; // created_by + customerValues[index++] = null; // updated_by + customerValues[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + customerValues[index] = null; // account_id + jdbcTemplate.update(customerSql, customerValues); + + // we can use useColumn here + Long generatedId = jdbcTemplate.queryForObject("SELECT LAST_INSERT_ID()", Long.class); + + List> insertMatchedSiteData = new ArrayList<>(); // List to hold processed + // data rows + + for (Map siteRow : matchedSiteData) { + // Replace "Customer Name" with "customer_master_id" if it exists + if (siteRow.containsKey(siteEntityName)) { + siteRow.put(replacementcolumn, generatedId); + siteRow.remove(siteEntityName); + } + insertMatchedSiteData.add(siteRow); + } + + for (Map siteRow : insertMatchedSiteData) { + Object[] siteValues = new Object[siteRow.size() + 5]; // Create a new array for each row + + int siteIndex = 0; + for (Object value : siteRow.values()) { + siteValues[siteIndex++] = value; + } + + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // created_at + siteValues[siteIndex++] = null; // created_by + siteValues[siteIndex++] = null; // updated_by + siteValues[siteIndex++] = new Timestamp(System.currentTimeMillis()); // updated_at + siteValues[siteIndex] = null; // account_id + + String siteSql = getInsertQuery(siteTableName, siteRow); + jdbcTemplate.update(siteSql, siteValues); + } + + // Add the processed customer data to the list + processedDataList.add(insertCustomerData); + } + + // Use a LinkedHashMap to preserve insertion order in the response + Map>> response = new LinkedHashMap<>(); + response.put("result", processedDataList); + + return new ResponseEntity<>(response, HttpStatus.OK); + + } + } + return new ResponseEntity<>("No data to process", HttpStatus.OK); + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions and return an appropriate response + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private List getColumnNames(Map dataRow) { + return new ArrayList<>(dataRow.keySet()); + } + + // Method to write data to a sheet + private void writeDataToSheet(List> dataList, XSSFSheet sheet, List columnNames) { + int rowIndex = 0; + // Create the header row + XSSFRow headerRow = sheet.createRow(rowIndex++); + for (int i = 0; i < columnNames.size(); i++) { + XSSFCell cell = headerRow.createCell(i); + cell.setCellValue(columnNames.get(i)); + } + // Add "Status" and "Exception" columns to the sheet + headerRow.createCell(columnNames.size()).setCellValue("Status"); + headerRow.createCell(columnNames.size() + 1).setCellValue("Exception"); + + // Write the data rows + for (Map row : dataList) { + XSSFRow dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (String columnName : columnNames) { + Object value = row.get(columnName); + XSSFCell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value != null ? value.toString() : ""); + } + // Add "Status" and "Exception" values to the data row + dataRow.createCell(columnIndex++).setCellValue(row.get("Status").toString()); + dataRow.createCell(columnIndex).setCellValue(row.get("Exception").toString()); + } + + } + + private String extractExceptionMessage(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String getInsertQuery(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + @GetMapping("/sheet/{id}") + public ResponseEntity getSheet(@PathVariable Long id) throws IOException { + ResponseEntity jsonData = convertFileToJsonforsheet(id); + + return ResponseEntity.ok(jsonData.getBody()); + } + + public ResponseEntity convertFileToJsonforsheet(Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + if (!fileUploadOptional.isPresent()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + + try (FileInputStream fis = new FileInputStream(file)) { + XSSFWorkbook workbook = new XSSFWorkbook(fis); + List sheetNames = new ArrayList<>(); + + for (int i = 0; i < workbook.getNumberOfSheets(); i++) { + XSSFSheet sheet = workbook.getSheetAt(i); + String sheetName = sheet.getSheetName(); + sheetNames.add(sheetName); + } + + return ResponseEntity.ok(sheetNames); + } catch (Exception e) { + // Handle any exceptions that may occur during processing + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error processing Excel file."); + } + } + + @GetMapping("/downloadImportStatement/{id}") + public ResponseEntity downloadImportStatement(@PathVariable Long id) { + // Retrieve the file data from the database based on the ID + TemplateFileUpload fileUpload = fileUploadService.getFileById(id); + + // Get the file location from the entity + String fileLocation = fileUpload.getDownloadfileLocation(); +// String filename = fileUpload.getDownloadfileName(); +// +// String filepath = fileLocation + File.separator + filename; + + try { + // Read the file content from the specified location + byte[] fileContent = Files.readAllBytes(Paths.get(fileLocation)); + + // Create a ByteArrayResource from the file content + ByteArrayResource resource = new ByteArrayResource(fileContent); + + return ResponseEntity.ok().contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, + "attachment; filename=\"" + fileUpload.getFile_name() + "\"") + .body(resource); + } catch (IOException e) { + // Handle any potential exceptions (e.g., file not found) + e.printStackTrace(); + return ResponseEntity.status(500).body("Error occurred while reading the file."); + } + } + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = tableName; + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + private String getCellValue(Map>> jsonData, String sheetName, String cellAddress) + throws IOException { + if (jsonData.containsKey(sheetName)) { + List> sheetData = jsonData.get(sheetName); + int size = sheetData.size(); + System.out.println(size); + Map firstRowData = sheetData.get(0); + + // Separate the numeric part (row part) and non-numeric part (column part) + String rowPart = ""; + String columnPart = ""; + + for (char c : cellAddress.toCharArray()) { + if (Character.isDigit(c)) { + rowPart += c; + } else { + columnPart += c; + } + } + + System.out.println("Column Part: " + columnPart); + System.out.println("Row Part: " + rowPart); + + int columnIndex = getColumnIndex(columnPart); // Get the column index based on the columnPart +// int rowIndex = Integer.parseInt(rowPart) - 1; // Excel-style 1-based index + System.out.println("Column Index: " + columnIndex); + + if (columnIndex >= 0) { + // Get the list of keys from the firstRowData map + List keys = new ArrayList<>(firstRowData.keySet()); + + // Check if the columnIndex is within the range of keys + if (columnIndex < keys.size()) { + String columnName = keys.get(columnIndex); + return columnName; + } + } + } + + return null; + } + + private int getColumnIndex(String columnPart) { + int index = 0; + int multiplier = 1; + + // Iterate through the columnPart in reverse order (right to left) + for (int i = columnPart.length() - 1; i >= 0; i--) { + char c = columnPart.charAt(i); + index += (c - 'A' + 1) * multiplier; + multiplier *= 26; // Multiply by 26 for each position to calculate the index + } + + return index - 1; // Subtract 1 to get a 0-based index + } + + @PostMapping("/DownloadExcel/{entityName}") + public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, + @RequestBody List> data) throws IOException { + List> processedData = processData(entityName, data); + if (!processedData.isEmpty()) { + Workbook workbook = createWorkbook(processedData); + Resource resource = createExcelResource(workbook); + return ResponseEntity.ok().contentType(MediaType.parseMediaType("application/vnd.ms-excel")) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx").body(resource); + } + return ResponseEntity.ok().body(null); + } + + private List> processData(String entityName, List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + } catch (Exception e) { + // Handle any exceptions here if needed + } + return processedData; + } + + private Workbook createWorkbook(List> processedData) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + + return workbook; + } + + private Resource createExcelResource(Workbook workbook) throws IOException { + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + return new InputStreamResource(inputStream); + } + + + + +// private ResponseEntity getData(@PathVariable String type ){ +// if(type.equalsIgnoreCase("Customer")) { +// +// +// String[] customerHeaders = { "balance", "c_status", "city", "country","currency_code","customer_id", +// "date_of_birth", "defaultsite_id", "email", "entity_name","file_name","file_path", +// "first_name", "gender", "gst_no", "gst_state","house_no","mobile_no", +// "pan_no", "sales_rep", "special_price", "state","street_address","street_address2", +// "time_zone", "postal_code", "contact_number"}; +// +// +// } +// +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java new file mode 100644 index 0000000..ca87344 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/BulkUpload_t.java @@ -0,0 +1,21 @@ +package com.realnet.BulkUpload.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class BulkUpload_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String entity_name; + private String description; + private String rule_line; + private boolean active; + private String fileType; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java new file mode 100644 index 0000000..bb40e5a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Entity/MappingRule.java @@ -0,0 +1,24 @@ +package com.realnet.BulkUpload.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class MappingRule { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String entity_name; + private String description; + private String mapping_rule; + private boolean active; + private String fileType; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java new file mode 100644 index 0000000..efa1764 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/BulkUpload_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.BulkUpload.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.BulkUpload.Entity.BulkUpload_t; + + +@Repository +public interface BulkUpload_Repository extends JpaRepository { + + @Query(value = "SELECT * FROM bulk_upload_t where entity_name =?1", nativeQuery = true) + BulkUpload_t getentityName(String name); + +// @Query(value = "SELECT * FROM bulk_upload_t where entity_name =?1", nativeQuery = true) +// BulkUpload_t getByName(String name); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java new file mode 100644 index 0000000..46b22b9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Repository/MappingRuleRepository.java @@ -0,0 +1,11 @@ +package com.realnet.BulkUpload.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.BulkUpload.Entity.MappingRule; + +@Repository +public interface MappingRuleRepository extends JpaRepository{ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java new file mode 100644 index 0000000..3723171 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/BulkUpload_Service.java @@ -0,0 +1,40 @@ +package com.realnet.BulkUpload.Services; + +import com.realnet.BulkUpload.Repository.BulkUpload_Repository; +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class BulkUpload_Service { + @Autowired + private BulkUpload_Repository Repository; + + public BulkUpload_t Savedata(BulkUpload_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public BulkUpload_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public BulkUpload_t update(BulkUpload_t data, Long id) { + BulkUpload_t old = Repository.findById(id).get(); + old.setEntity_name(data.getEntity_name()); + old.setDescription(data.getDescription()); + old.setRule_line(data.getRule_line()); + old.setActive(data.isActive()); + final BulkUpload_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java new file mode 100644 index 0000000..733a874 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/BulkUpload/Services/MappingRuleService.java @@ -0,0 +1,43 @@ +package com.realnet.BulkUpload.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.BulkUpload.Entity.BulkUpload_t; +import com.realnet.BulkUpload.Entity.MappingRule; +import com.realnet.BulkUpload.Repository.MappingRuleRepository; + +@Service +public class MappingRuleService { + + @Autowired + private MappingRuleRepository Repository; + + public MappingRule Savedata(MappingRule data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public MappingRule getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public MappingRule update(MappingRule data, Long id) { + MappingRule old = Repository.findById(id).get(); + old.setEntity_name(data.getEntity_name()); + old.setDescription(data.getDescription()); + old.setMapping_rule(data.getMapping_rule()); + old.setActive(data.isActive()); + final MappingRule test = Repository.save(old); + return test; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java new file mode 100644 index 0000000..0190ae8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Config/Databaseconfig.java @@ -0,0 +1,40 @@ +//package com.realnet.CredentialDatabase.Config; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.context.annotation.Bean; +//import org.springframework.context.annotation.Configuration; +//import org.springframework.jdbc.datasource.DriverManagerDataSource; +// +//import com.fasterxml.jackson.core.JsonProcessingException; +//import com.fasterxml.jackson.databind.JsonMappingException; +//import com.realnet.CredentialDatabase.Service.SurevaultService; +// +//import java.util.Properties; +// +//import javax.sql.DataSource; +// +//@Configuration +//public class Databaseconfig { +// +// @Autowired +// private SurevaultService surevaultService; +// +// @Bean +// public DataSource dataSource() throws JsonMappingException { +// DriverManagerDataSource dataSource = new DriverManagerDataSource(); +// +// try { +// dataSource.setUrl(surevaultService.getSurevaultCredentials("databaseUrl")); +// dataSource.setUsername(surevaultService.getSurevaultCredentials("databaseuserName")); +// dataSource.setPassword(surevaultService.getSurevaultCredentials("databasePassword")); +// +// } catch (JsonProcessingException e) { +// // Handle exceptions or log errors +// e.printStackTrace(); +// } +// +// // Other DataSource configurations +// +// return dataSource; +// } +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java new file mode 100644 index 0000000..57c559b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/CredentialDatabase/Service/SurevaultService.java @@ -0,0 +1,85 @@ +//package com.realnet.CredentialDatabase.Service; +// +//import org.springframework.http.HttpEntity; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpMethod; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.stereotype.Service; +//import org.springframework.web.client.RestTemplate; +// +//import com.fasterxml.jackson.core.JsonProcessingException; +//import com.fasterxml.jackson.databind.JsonNode; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import com.google.gson.JsonElement; +//import com.google.gson.JsonObject; +//import com.google.gson.JsonParser; +//import com.realnet.utils.Port_Constant; +// +//@Service +//public class SurevaultService { +// +// +// +// public String getSurevaultCredentials(String key) throws JsonProcessingException { +// +// String SurevaultDeploymentType = Port_Constant.SUREVAULT_DEPLOYMENT_TYPE; +// System.out.println(SurevaultDeploymentType); +// // Obtain the token +// String token = callconnector("surevault").toString(); +// +// String surevaultApiUrl =Port_Constant.SURE_VAULT_DOMAIN + "/getcredentials/" + SurevaultDeploymentType; +// +// ResponseEntity get = GET(surevaultApiUrl, token); +// +// Object responseBody = get.getBody(); +// +// JsonNode jsonNode = new ObjectMapper().convertValue(responseBody, JsonNode.class); +// String value = jsonNode.get(key).asText(); +// return value; +// } +// +// public String callconnector(String name) throws JsonProcessingException { +// RestTemplate restTemplate = new RestTemplate(); +// String url = Port_Constant.SURE_VAULT_DOMAIN + "/token/Sure_Connectbyname/" + name; +// System.out.println(Port_Constant.SURE_VAULT_DOMAIN); +// +// ResponseEntity u = restTemplate.getForEntity(url, Object.class); +// Object object = u.getBody(); +// +// ObjectMapper mapper = new ObjectMapper(); +// String str = mapper.writeValueAsString(object); +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(str); +// +// JsonObject obj = element.getAsJsonObject(); +// JsonElement token = obj.get("access_token"); +// System.out.println("token is == " + token); +// return token.getAsString(); +// } +// +// public ResponseEntity GET(String get, String token) { +// RestTemplate restTemplate = new RestTemplate(); +// String resourceUrl = get; +// String token1 = "Bearer " + token; +// HttpHeaders headers = getHeaders(); +// headers.set("Authorization", token1); +// HttpEntity request = new HttpEntity(headers); +// ResponseEntity u = restTemplate.exchange(resourceUrl, HttpMethod.GET, request, Object.class); +// +// int statusCodeValue = u.getStatusCodeValue(); +// System.out.println(statusCodeValue); +// +// return u; +// +// } +// +// private HttpHeaders getHeaders() { +// HttpHeaders headers = new HttpHeaders(); +// headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); +// headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); +// return headers; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java new file mode 100644 index 0000000..10ab846 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashboard2.java @@ -0,0 +1,30 @@ +//package com.realnet.Dashboard1.Controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import com.realnet.Dashboard1.Entity.Dashbord_Header; +//import com.realnet.Dashboard1.Repository.HeaderRepository; +//import com.realnet.Dashboard1.Service.HeaderService; +// +//@RestController +//@RequestMapping("/token/dashboard2") +//public class Dashboard2 { +// +// @Autowired +// private HeaderService headerService; +// +// @Autowired +// private HeaderRepository headerRepository; +// +// @GetMapping("/getdashboardbyname/{name}") +// public Integer getdetailsbyId(@PathVariable String name) { +// Dashbord_Header dash = headerRepository.findByDashboardName(name); +// Integer id=dash.getId(); +// return id; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java new file mode 100644 index 0000000..d23a9f0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Controller/Dashbord1Controller.java @@ -0,0 +1,110 @@ +package com.realnet.Dashboard1.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.HeaderRepository; +import com.realnet.Dashboard1.Service.HeaderService; + +@RestController +public class Dashbord1Controller { + + @Autowired + private HeaderService headerService; + + @Autowired + private HeaderRepository headerRepository; + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @PostMapping("/Savedata") + public Dashbord_Header Savedata(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.Savedata(dashbord_Header); + return dash; + } + + @GetMapping("/get_Dashboard_header") + public List getdetails() { + List dash = headerService.getdetails(); + return dash; + } + + @GetMapping("/get_all_lines") + public List get_all_lines() { + List dash = headerService.get_all_lines(); + return dash; + } + + + + @GetMapping("/get_module_id") + public List get_by_module_id(@RequestParam(value = "module_id") int module_id) { + + List module = headerService.get_by_module_id(module_id); + return module; + + } + + @GetMapping("/get_dashboard_headerbyid/{id}") + public Dashbord_Header getdetailsbyId(@PathVariable int id) { + Dashbord_Header dash = headerService.getdetailsbyId(id); + return dash; + } + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @PutMapping("/update_dashboard_header") + public Dashbord_Header update_dashboard_header(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.update_dashboard_header(dashbord_Header); + return dash; + } + +// update dashboard line by id + + @PutMapping("/update_Dashbord1_Lineby_id/{id}") + public Dashbord1_Line update_Dashbord1_Lineby_id(@PathVariable int id, @RequestBody Dashbord1_Line dashbord1_Line) { + + Dashbord1_Line dash = headerService.update_Dashbord1_Lineby_id(id, dashbord1_Line); + return dash; + + } + + @PostMapping("/update_Dashbord1_Line") + public Dashbord1_Line update_Dashbord1_Line(@RequestBody Dashbord1_Line dashbord1_Line) { + Dashbord1_Line dash1 = headerService.update_Dashbord1_Line(dashbord1_Line); + return dash1; + } + +// @PreAuthorize("hasAnyRole('SYSADMIN','ProjectManager','Developer')") + @DeleteMapping("/delete_by_header_id/{id}") + public void delete_by_id(@PathVariable int id) { + headerService.delete_by_id(id); + + } + + // COUNT OF LIST BUILDER + @GetMapping("/get_dashboard/{module_id}") + public ResponseEntity getREPORT(@PathVariable Integer module_id) { + String count_wireframe = headerRepository.count_dashboardheader(module_id); + + if (count_wireframe.isEmpty()) { + return new ResponseEntity<>(0, HttpStatus.OK); + + } else { + return new ResponseEntity<>(count_wireframe, HttpStatus.OK); + + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java new file mode 100644 index 0000000..bf2c9be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord1_Line.java @@ -0,0 +1,45 @@ +package com.realnet.Dashboard1.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = { "Dashbord_Header" }) +@Data +@Entity +@Table +public class Dashbord1_Line extends dashbord_Who_collumn { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String header_id; + + @Column(length = 5000) + private String Model; + + @JsonBackReference + @ManyToOne + private Dashbord_Header dashbord_Header; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java new file mode 100644 index 0000000..e2faf4d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/Dashbord_Header.java @@ -0,0 +1,63 @@ +package com.realnet.Dashboard1.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = { "Dashbord1_Line" }) +@Entity +@Data +public class Dashbord_Header extends dashbord_Who_collumn { + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + +// ============================== + + @Column(name = "MENU_NAME") + private String menuName; + + @Column(name = "IS_UPDATED") + private boolean updated; + + private String tech_Stack; + + private String object_type; + private String sub_object_type; + + @Column(name = "IS_BUILD") + private boolean build; + + private boolean testing; + + private String dashboard_name; + + private int module_id; + + private String description; + + private String secuirity_profile; + + private Boolean add_to_home; + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL, mappedBy = "dashbord_Header") + private List dashbord1_Line = new ArrayList<>(); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java new file mode 100644 index 0000000..0d2f880 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.java @@ -0,0 +1,46 @@ +package com.realnet.Dashboard1.Entity; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class dashbord_Who_collumn implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java new file mode 100644 index 0000000..ea7655e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.java @@ -0,0 +1,20 @@ +package com.realnet.Dashboard1.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; + +@Repository +public interface Dashboard_lineRepository extends CrudRepository { + + Dashbord1_Line findById(int id); + + @Query(value = "SELECT * FROM realnet_CNSBE.dashbord1_line where dashbord_header_id =:id", nativeQuery = true) + List getByheader(@Param("id") int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java new file mode 100644 index 0000000..2934be7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Repository/HeaderRepository.java @@ -0,0 +1,35 @@ +package com.realnet.Dashboard1.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard1.Entity.Dashbord_Header; + +@Repository +public interface HeaderRepository extends CrudRepository { + + Dashbord_Header findById(int id); + +// @Query( +// value= " select * from dashboard_header where module_id=?1",nativeQuery=true) +// List findbydashboardmodule(int moduleId); + +// public List findBymodule_id(String module_id); + + @Query(value = " select * from dashbord_header where module_id=?1", nativeQuery = true) + List findbydashboardmodule(int module_id); + +// @Query( +// "select u from Dashbord_Header u WHERE u.module_id =:n") +// List getBymoduleId(int module_id); + + @Query(value = "select count(id) from dashbord_header", nativeQuery = true) + public List findCount(); + + @Query(value = "SELECT count(id) FROM realnet_CNSBE.dashbord_header where module_id=?1", nativeQuery = true) + String count_dashboardheader(Integer moduleId); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java new file mode 100644 index 0000000..db488cf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard1/Service/HeaderService.java @@ -0,0 +1,99 @@ +package com.realnet.Dashboard1.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Dashboard1.Entity.Dashbord1_Line; +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Repository.Dashboard_lineRepository; +import com.realnet.Dashboard1.Repository.HeaderRepository; + +@Service +public class HeaderService { + + @Autowired + private HeaderRepository headerRepository; + + @Autowired + private Dashboard_lineRepository dashboard_lineRepository; + + public Dashbord_Header Savedata(Dashbord_Header dashbord_Header) { + return headerRepository.save(dashbord_Header); + } + + + public List getdetails() { + // TODO Auto-generated method stub + return (List) headerRepository.findAll(); + } + + + public Dashbord_Header getdetailsbyId(int id) { + // TODO Auto-generated method stub + return headerRepository.findById(id); + } + + + public void delete_by_id(int id) { + // TODO Auto-generated method stub + headerRepository.deleteById(id); + } + + + public Dashbord_Header update_dashboard_header(Dashbord_Header dashbord_Header) { + return headerRepository.save(dashbord_Header); + } + + + + + public Dashbord1_Line update_Dashbord1_Line(Dashbord1_Line dashbord1_Line) { + // TODO Auto-generated method stub + return dashboard_lineRepository.save(dashbord1_Line); + } + + + public List get_by_module_id(int module_id) { + // TODO Auto-generated method stub + return (List) headerRepository.findbydashboardmodule(module_id); + } + + + public List get_all_lines() { + // TODO Auto-generated method stub + return (List) dashboard_lineRepository.findAll(); + } + +// public List get_by_module_id(int module_id) { +// // TODO Auto-generated method stub +// return (List) headerRepository.findAllById(module_id); +// } + +// public List get_by_module_id(String module_id) { +// // TODO Auto-generated method stub +// return (List) headerRepository.findBymodule_id(module_id); +// } + + public Dashbord1_Line update_Dashbord1_Lineby_id(int id, Dashbord1_Line dashbord1_Line) { + + + Dashbord1_Line oldline= dashboard_lineRepository.findById(id); +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + + oldline.setAccountId(dashbord1_Line.getAccountId()); + oldline.setHeader_id(dashbord1_Line.getHeader_id()); + oldline.setModel(dashbord1_Line.getModel()); + final Dashbord1_Line newline= dashboard_lineRepository.save(oldline); + return newline; + } + + + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java new file mode 100644 index 0000000..c9f07f3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/ChartBuilder.java @@ -0,0 +1,689 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.io.IOException; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; + +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import com.realnet.Payment.Paytm.PaytmPayment; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j + +@RequestMapping("/chart") +@RestController +public class ChartBuilder { + + public List> getAllDataFromTable(String tableName) { + List> tableData = new ArrayList<>(); + + Connection connection = null; + Statement statement = null; + ResultSet resultSet = null; + + try { + // Establish a database connection + connection = DriverManager.getConnection( + "jdbc:mysql://realnet.cdtynkxfiu2h.ap-south-1.rds.amazonaws.com:3306/suresetu", "cnsdev", + "cnsdev1234"); + + // Create a SQL statement + statement = connection.createStatement(); + + // Execute the query to retrieve all data from the table + String query = "SELECT * FROM " + tableName; + resultSet = statement.executeQuery(query); + + // Retrieve the column names from the result set + ResultSetMetaData metaData = resultSet.getMetaData(); + int columnCount = metaData.getColumnCount(); + List columnNames = new ArrayList<>(); + for (int i = 1; i <= columnCount; i++) { + columnNames.add(metaData.getColumnName(i)); + } + + // Iterate over the result set and store each row in a map + while (resultSet.next()) { + Map rowData = new HashMap<>(); + for (String columnName : columnNames) { + Object value = resultSet.getObject(columnName); + rowData.put(columnName, value); + } + tableData.add(rowData); + } + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } finally { + // Close the resources + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + if (statement != null) { + try { + statement.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + if (connection != null) { + try { + connection.close(); + } catch (SQLException e) { + log.error(e.getLocalizedMessage()); + } + } + } + + return tableData; + } + +//...........................22.07.2023.............................// + +// @GetMapping(value = "/getdashjson/{job_type}") +// public ResponseEntity jsonretun(@RequestParam String tableName, @PathVariable String job_type, +// @RequestParam String xAxis, @RequestParam String yAxis) throws IOException { +// +// List> tableData = getAllDataFromTable(tableName); // Retrieve all data from the table +// +// List yAxisValues = new ArrayList<>(); +// List xAxisValues = new ArrayList<>(); +// +// for (Map row : tableData) { +// for (Entry entry : row.entrySet()) { +// String key = entry.getKey(); +// Object value = entry.getValue(); +// +// if (key.equalsIgnoreCase(xAxis)) { +// xAxisValues.add(value.toString()); +// } else if (key.equalsIgnoreCase(yAxis)) { +// yAxisValues.add(value); +// } +// } +// } +// +// StringBuilder jsonmap = new StringBuilder(); +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("[\n"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append(" {\r\n" + " \"chartData\": [\r\n" + " { \"data\": ["); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("{\"chartData\": [["); +// } +// +// for (int i = 0; i < xAxisValues.size(); i++) { +// String xValue = xAxisValues.get(i); +// Object yValue = yAxisValues.get(i); +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("{\"name\": \"" + xValue + "\", \"progress\":\"" + yValue + "\"},\n"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append(yValue + ","); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append(yValue + ","); +// } +// } +// +// if (!xAxisValues.isEmpty() && !yAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// if (job_type.equalsIgnoreCase("Bar Chart")) { +// jsonmap.append("]"); +// } else if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append("], \"label\": \"" + yAxis + "\" }\r\n" + " ],\r\n" + " \"chartLabels\": [ "); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("]],\r\n" + " \"chartLabels\": ["); +// } +// +// for (String xValue : xAxisValues) { +// jsonmap.append("\"" + xValue + "\","); +// } +// +// if (!xAxisValues.isEmpty()) { +// jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); +// } +// +// if (job_type.equalsIgnoreCase("Line Chart")) { +// jsonmap.append("] \n }\n"); +// } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { +// jsonmap.append("]\n" + "}"); +// } +// +// return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); +// } + + @GetMapping(value = "/getdashjson/{job_type}") + public ResponseEntity jsonretun2(@RequestParam String tableName, @PathVariable String job_type, + @RequestParam(required = false) String xAxis, @RequestParam(required = false) List yAxes) + throws IOException { + + StringBuilder jsonmap = new StringBuilder(); + + if (job_type.equalsIgnoreCase("Grid View")) { + List> allData = getAllDataFromApi(tableName); + + jsonmap.append("[\n"); + + for (Map row : allData) { + jsonmap.append("{\n"); + + int colCount = 0; + for (String yAxis : yAxes) { + String key = yAxis; + Object value = row.get(key); + + jsonmap.append("\"" + key + "\": \"" + value + "\""); + + colCount++; + if (colCount < yAxes.size()) { + jsonmap.append(", "); + } + jsonmap.append("\n"); + } + + jsonmap.append("}"); + + if (!row.equals(allData.get(allData.size() - 1))) { + jsonmap.append(", "); + } + } + + jsonmap.append("\n]\n"); + + return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); + } + + if (job_type.equalsIgnoreCase("Todo List") && yAxes != null && !yAxes.isEmpty()) { + List> allData = getAllDataFromApi(tableName); + + String listName = yAxes.get(0); // Assuming the first column in yAxes to be the list name + List listData = new ArrayList<>(); + + for (Map row : allData) { + Object value = row.get(listName); + + if (value != null) { + listData.add(value); + } + } + + Map response = new HashMap<>(); + response.put("listName", listName); + response.put("List", listData); + + return new ResponseEntity<>(response, HttpStatus.CREATED); + } + + List> tableData = getAllDataFromApi(tableName); // Retrieve all data from the table + + List> yAxisValuesList = new ArrayList<>(); + List xAxisValues = new ArrayList<>(); + + // Initialize a list for each y-axis parameter + for (int i = 0; i < yAxes.size(); i++) { + yAxisValuesList.add(new ArrayList<>()); + } + + for (Map row : tableData) { + for (Entry entry : row.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (key.equalsIgnoreCase(xAxis)) { + xAxisValues.add(value.toString()); + } else { + int yIndex = yAxes.indexOf(key); + if (yIndex >= 0) { + yAxisValuesList.get(yIndex).add(value); + } + } + } + } + + if (job_type.equalsIgnoreCase("Bar Chart")) { + jsonmap.append("{\n \"barChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"barChartLabels\": [ "); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } + + else if (job_type.equalsIgnoreCase("Line Chart")) { + jsonmap.append("{\n \"chartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"chartLabels\": [ "); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } else if (job_type.equalsIgnoreCase("Doughnut Chart")) { + jsonmap.append("{\"chartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("]"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"chartLabels\": ["); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("]\n}"); + } + + else if (job_type.equalsIgnoreCase("Radar Chart")) { + jsonmap.append("{\n \"radarChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"radarChartLabels\": [ "); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } + + else if (job_type.equalsIgnoreCase("PolarArea Chart")) { + jsonmap.append("{\n \"polarAreaChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"polarAreaChartLabels\": [ "); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } + + if (job_type.equalsIgnoreCase("Pie Chart")) { + jsonmap.append("{\n \"pieChartData\": ["); + + for (int i = 0; i < yAxisValuesList.get(0).size(); i++) { // Assuming "mark" is the first item in yAxes + jsonmap.append(yAxisValuesList.get(0).get(i)); // Use the y-axis values + + if (i < yAxisValuesList.get(0).size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"pieChartLabels\": [ "); + + for (int i = 0; i < xAxisValues.size(); i++) { // Assuming "name" is the x-axis + jsonmap.append("\"" + xAxisValues.get(i) + "\""); // Use the x-axis values + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("] \n }\n"); + } + + else if (job_type.equalsIgnoreCase("Bubble Chart")) { + jsonmap.append("{\n \"bubbleChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object xValue = xAxisValues.get(i); + Object yValue = yAxisValuesList.get(j).get(i); + int radius = 5 + (i % 3) * 3; // Adjust the radius as needed + + jsonmap.append("{ \"x\": " + xValue + ", \"y\": " + yValue + ", \"r\": " + radius + "}"); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"bubbleChartLabels\": [ "); + + for (String label : xAxisValues) { + jsonmap.append("\"" + label + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } else if (job_type.equalsIgnoreCase("Scatter Chart")) { + jsonmap.append("{\n \"scatterChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object xValue = xAxisValues.get(i); + Object yValue = yAxisValuesList.get(j).get(i); + + jsonmap.append("{ \"x\": " + xValue + ", \"y\": " + yValue + "}"); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"scatterChartLabels\": [ "); + + for (String label : xAxisValues) { + jsonmap.append("\"" + label + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } + + else if (job_type.equalsIgnoreCase("Dynamic Chart")) { + jsonmap.append("{\n \"dynamicChartData\": [\n"); + + for (int j = 0; j < yAxes.size(); j++) { + String yAxis = yAxes.get(j); + + jsonmap.append("{"); + jsonmap.append("\"data\": ["); + + for (int i = 0; i < xAxisValues.size(); i++) { + Object yValue = yAxisValuesList.get(j).get(i); + jsonmap.append(yValue); + + if (i < xAxisValues.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],"); + jsonmap.append("\"label\": \"" + yAxis + "\""); + jsonmap.append("}"); + + if (j < yAxes.size() - 1) { + jsonmap.append(","); + } + } + + jsonmap.append("],\n \"dynamicChartLabels\": [ "); + + for (String xValue : xAxisValues) { + jsonmap.append("\"" + xValue + "\","); + } + + if (!xAxisValues.isEmpty()) { + jsonmap.deleteCharAt(jsonmap.lastIndexOf(",")); + } + + jsonmap.append("] \n }\n"); + } + + return new ResponseEntity<>(jsonmap.toString(), HttpStatus.CREATED); + } + +// @GetMapping("/getKey") + public List> getAllKeyFromApi(String apiUrl) { + List> apiData = new ArrayList<>(); + + try { + // Make a GET request using the provided URL + ResponseEntity responseEntity = GET(apiUrl); + + // Convert the response to a List> + if (responseEntity.getBody() instanceof List) { + // If the response is a list, assume it's a list of maps + apiData = (List>) responseEntity.getBody(); + } else { + // If the response is not a list, assume it's a single map + Map singleMap = new HashMap<>(); + singleMap.put("data", responseEntity.getBody()); + apiData.add(singleMap); + } + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + } + + return apiData; + } + + @GetMapping("/getAllKeys") + public Set getAllKeys(@RequestParam String apiUrl) { + List> apiData = getAllKeyFromApi(apiUrl); + return getAllKeys(apiData); + } + + private Set getAllKeys(List> apiData) { + Set allKeys = new HashSet<>(); + + for (Map data : apiData) { + allKeys.addAll(data.keySet()); + } + + return allKeys; + } + + public List> getAllDataFromApi(String apiUrl) { + List> apiData = new ArrayList<>(); + + try { + // Make a GET request using the provided URL + ResponseEntity responseEntity = GET(apiUrl); + + // Convert the response to a List> + if (responseEntity.getBody() instanceof List) { + // If the response is a list, assume it's a list of maps + apiData = (List>) responseEntity.getBody(); + } else { + // If the response is not a list, assume it's a single map + Map singleMap = new HashMap<>(); + singleMap.put("data", responseEntity.getBody()); + apiData.add(singleMap); + } + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + + } + + return apiData; + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java new file mode 100644 index 0000000..de4d2fc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.java @@ -0,0 +1,47 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +import com.realnet.Dashboard_builder.Services.DashboardSchedule_Service; + +@RequestMapping(value = "/DashboardSchedule") +@RestController +public class DashboardSchedule_Controller { + + @Autowired + private DashboardSchedule_Service Service; + + @PostMapping("/DashboardSchedule") + public DashboardSchedule_t Savedata(@RequestBody DashboardSchedule_t data) { + DashboardSchedule_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/DashboardSchedule") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/DashboardSchedule/{id}") + public DashboardSchedule_t getdetailsbyId(@PathVariable Long id) { + DashboardSchedule_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/DashboardSchedule/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/DashboardSchedule/{id}") + public DashboardSchedule_t update(@RequestBody DashboardSchedule_t data, @PathVariable Long id) { + DashboardSchedule_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java new file mode 100644 index 0000000..96f0819 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.java @@ -0,0 +1,55 @@ +package com.realnet.Dashboard_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; +import com.realnet.Dashboard_builder.Repository.Dashboard_builder_Repository; +import com.realnet.Dashboard_builder.Services.Dashboard_builder_Service; + +@RequestMapping(value = "/Dashboard_builder") +@RestController +public class Dashboard_builder_Controller { + + @Autowired + private Dashboard_builder_Service Service; + + + @Autowired + private Dashboard_builder_Repository builder_Repository; + + @PostMapping("/Dashboard_builder") + public Dashboard_builder_t Savedata(@RequestBody Dashboard_builder_t data) { + Dashboard_builder_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Dashboard_builder") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Dashboard_builder/{id}") + public Dashboard_builder_t getdetailsbyId(@PathVariable Long id) { + Dashboard_builder_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Dashboard_builder/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Dashboard_builder/{id}") + public Dashboard_builder_t update(@RequestBody Dashboard_builder_t data, @PathVariable Long id) { + Dashboard_builder_t update = Service.update(data, id); + return update; + } + + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java new file mode 100644 index 0000000..4159f89 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/EmailGenerate.java @@ -0,0 +1,385 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//import java.io.File; +//import java.io.IOException; +//import java.nio.file.FileSystems; +//import java.nio.file.Files; +//import java.nio.file.Path; +//import java.nio.file.Paths; +//import java.time.Instant; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Optional; +//import java.util.stream.Collectors; +// +//import org.apache.commons.io.FilenameUtils; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpHeaders; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.MediaType; +//import org.springframework.http.ResponseEntity; +//import org.springframework.util.StringUtils; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestPart; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.multipart.MultipartFile; +// +//import com.realnet.Communication.Models.Com_jobTable; +//import com.realnet.Communication.Models.Com_template; +//import com.realnet.Communication.Models.ProcessedJobTable; +//import com.realnet.Communication.Repos.JobTablerepo; +//import com.realnet.Communication.Repos.ProcessedJobTableRepo; +//import com.realnet.Communication.Repos.TemplateRepo; +//import com.realnet.Communication.Services.EmailCommunicationService; +//import com.realnet.Communication.response.EntityResponse; +//import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +//import com.realnet.Dashboard_builder.Repository.DashboardSchedule_Repository; +//import com.realnet.Gateway.Entity.Gateway_t; +//import com.realnet.Gateway.Repository.Gateway_Repository; +//import com.realnet.Gateway.Services.Gateway_Service; +//import com.realnet.Gateway.Services.SmsGatwaySmsServices; +// +//@RestController +//@RequestMapping("/dashboard/schedule") +//public class EmailGenerate { +// +// +// +// @Autowired +// private SmsGatwaySmsServices gatwaySmsServices; +// +// +// +// +// +// @Autowired +// private JobTablerepo Com_jobTablerepo; +// +// @Autowired +// private TemplateRepo templateRepo; +// +// @Autowired +// private ProcessedJobTableRepo jobTableRepo; +// +// @Autowired +// private EmailCommunicationService emailService; +// +// @Autowired +// private Gateway_Repository gateway_Repository; +// +// +//// public final String UPLOAD_DIREC = "/src/main/resources/images"; +// +// +// @GetMapping("/sendgatewaydashboard") +// public ResponseEntity sendGateway() { +// List get = Com_jobTablerepo.findTopByOrderByIdAsc(); +// +// if (!get.isEmpty()) { +// for (Com_jobTable com_jobTable : get) { +// String jobType = com_jobTable.getJob_type(); +// if (jobType.equalsIgnoreCase("EMAIL")) { +// ResponseEntity response = sendMailGateway(com_jobTable); +// if (response.getStatusCode() != HttpStatus.OK) { +// return response; +// } +// } +//// else if (jobType.equalsIgnoreCase("SMS")) { +//// ResponseEntity response = sendSmsGateway(com_jobTable); +//// if (response.getStatusCode() != HttpStatus.OK) { +//// return response; +//// } +//// } +// else { +// return new ResponseEntity<>(new EntityResponse("Incorrect job type"), HttpStatus.BAD_REQUEST); +// } +// } +// return new ResponseEntity<>(get, HttpStatus.OK); +// } else { +// return new ResponseEntity<>(new EntityResponse("All SMS/Emails already sent"), HttpStatus.OK); +// } +// } +// +// private ResponseEntity sendMailGateway(Com_jobTable com_jobTable) { +// String gatewayName = com_jobTable.getGatewayName(); +// // Long id = Long.parseLong(gatewayName); +// Gateway_t getData=gateway_Repository.findByGatewayName(gatewayName); +// +// Long id=getData.getId(); +// +// +// String tempName = com_jobTable.getTemplate_name(); +// // Long tempid = Long.parseLong(tempName); +// +// Com_template template = templateRepo.findBytemplatename(tempName); +// +// if (template == null) { +// return new ResponseEntity<>(new EntityResponse("Template not found"), HttpStatus.NOT_FOUND); +// } +// +// String replacement_string = com_jobTable.getReplacement_string(); +// String replace_body = template.getBody().replace("", replacement_string); +// +// +// +// ProcessedJobTable gatewayJobTable = new ProcessedJobTable(); +// gatewayJobTable.setJob_type(com_jobTable.getJob_type()); +// gatewayJobTable.setSend_to(com_jobTable.getSend_to()); +// gatewayJobTable.setCc(com_jobTable.getCc()); +// gatewayJobTable.setAttachment(com_jobTable.getAttachment()); +// gatewayJobTable.setGatewaydone(com_jobTable.getGatewaydone()); +// gatewayJobTable.setTemplate_name(com_jobTable.getTemplate_name()); +// gatewayJobTable.setReplacement_string(com_jobTable.getReplacement_string()); +// gatewayJobTable.setGatewayName(com_jobTable.getGatewayName()); +// +// +// String filename = com_jobTable.getAttachment(); +// if(filename!=null) { +// +// Path path = FileSystems.getDefault().getPath("").toAbsolutePath(); +// String filepath = Paths.get(path.toString(), UPLOAD_DIREC, filename).toString(); +// File file = new File(filepath); +// +// +// boolean sendMailWithAttachment = emailService.sendEmailGatewayWithAttachment(id, com_jobTable.getSend_to(), template.getSubject(), replace_body, com_jobTable.getCc(), file); +// +// System.out.println("email sent with attachment " + sendMailWithAttachment); +// +// gatewayJobTable.setStatus(HttpStatus.OK.value()); +// gatewayJobTable.setResp_body("Email sent with attachment"); +// +// } +// +// else { +// +// boolean sendemail = emailService.sendEmailGateway(id, com_jobTable.getSend_to(), template.getSubject(), +// replace_body, com_jobTable.getCc()); +// System.out.println("email without attachment sent " + sendemail); +// +// gatewayJobTable.setStatus(HttpStatus.OK.value()); +// gatewayJobTable.setResp_body("Email sent without attachment"); +// +// +// } +// +// +// +// jobTableRepo.save(gatewayJobTable); +// Com_jobTablerepo.delete(com_jobTable); +// return new ResponseEntity<>(HttpStatus.OK); +// } +// +// +// +// +// +// +// +// +// +// +//// public final String UPLOAD_DIREC = "/src/main/resources/images"; +// +// public final String UPLOAD_DIREC = "C:/Users/Gyanadipta Pahi/Desktop/SureSetuLast/suresetu-mohasin205/backend/src/main/resources/images"; +// +// @PostMapping("/upload") +// public ResponseEntity uploadFile(@RequestPart("file") MultipartFile file) { +// if (file.isEmpty()) { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("File is required."); +// } +// +// try { +// String fileName = generateFileName(file.getOriginalFilename()); +// String filePath = UPLOAD_DIREC + File.separator + fileName; +// File dest = new File(filePath); +// file.transferTo(dest); +// +// return ResponseEntity.ok("File uploaded successfully."); +// } catch (IOException e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to upload file."); +// } +// } +// +// private String generateFileName(String originalFilename) { +// String baseName = "dashboardSchedule" + Instant.now().getEpochSecond(); +// String extension = FilenameUtils.getExtension(originalFilename); +// if (!StringUtils.isEmpty(extension)) { +// baseName += "." + extension; +// } +// return baseName; +// } +// +// +// +// +// +// +// +// +// +// +// +// +//// @GetMapping("/files/{partialName}") +//// public ResponseEntity getFileByName(@PathVariable("partialName") String partialName) { +//// List matchingFiles = findMatchingFiles(partialName); +//// +//// if (matchingFiles.isEmpty()) { +//// return ResponseEntity.notFound().build(); +//// } else if (matchingFiles.size() > 1) { +//// // return ResponseEntity.status(HttpStatus.CONFLICT).body("Multiple files match the provided name."); +//// } +//// +//// File file = matchingFiles.get(0); +//// try { +//// byte[] fileBytes = Files.readAllBytes(file.toPath()); +//// +//// HttpHeaders headers = new HttpHeaders(); +//// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +//// headers.setContentDispositionFormData("attachment", file.getName()); +//// headers.setContentLength(fileBytes.length); +//// +//// return new ResponseEntity<>(fileBytes, headers, HttpStatus.OK); +//// } catch (Exception e) { +//// e.printStackTrace(); +//// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); +//// } +//// } +//// +//// private List findMatchingFiles(String partialName) { +//// List matchingFiles = new ArrayList<>(); +//// +//// File directory = new File(UPLOAD_DIREC); +//// File[] files = directory.listFiles(); +//// if (files != null) { +//// for (File file : files) { +//// if (file.isFile() && file.getName().startsWith(partialName)) { +//// matchingFiles.add(file); +//// } +//// } +//// } +//// +//// return matchingFiles; +//// } +// +//// @Autowired +//// private JobTablerepo comJobTableRepository; +// +// @Autowired +// private DashboardSchedule_Repository dashboardSchedule_Repository; +// +// @GetMapping("/files/{partialName}") +// public ResponseEntity getFileByName(@PathVariable("partialName") String partialName) { +// List matchingFiles = findMatchingFiles(partialName); +// +// if (matchingFiles.isEmpty()) { +// return ResponseEntity.notFound().build(); +// } else if (matchingFiles.size() > 1) { +// System.out.println("Multiple files match the provided name"); +// // return ResponseEntity.status(HttpStatus.CONFLICT).body("Multiple files match the provided name."); +// } +// +// File file = matchingFiles.get(0); +// try { +// byte[] fileBytes = Files.readAllBytes(file.toPath()); +// +// // Save file path as attachment in the entity +//// List get = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +//// get.setAttachment(file.getAbsolutePath()); +//// dashboardSchedule_Repository.save(comJobTable); +// +// // // Replace with the desired DashboardSchedule_t entity ID +// List dashboardSchedules = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +// if (!dashboardSchedules.isEmpty()) { +// DashboardSchedule_t dashboardSchedule = dashboardSchedules.get(0); +// dashboardSchedule.setAttachment(file.getAbsolutePath()); +// dashboardSchedule.setGatewaydone("N"); +// dashboardSchedule_Repository.save(dashboardSchedule); +// } else { +// System.out.println("No dashboard schedules found."); +// } +// +// HttpHeaders headers = new HttpHeaders(); +// headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); +// headers.setContentDispositionFormData("attachment", file.getName()); +// headers.setContentLength(fileBytes.length); +// +// return new ResponseEntity<>(fileBytes, headers, HttpStatus.OK); +// } catch (Exception e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build(); +// } +// } +// +// private List findMatchingFiles(String partialName) { +// List matchingFiles = new ArrayList<>(); +// +// File directory = new File(UPLOAD_DIREC); +// File[] files = directory.listFiles(); +// if (files != null) { +// for (File file : files) { +// if (file.isFile() && file.getName().startsWith(partialName)) { +// matchingFiles.add(file); +// } +// } +// } +// +// return matchingFiles; +// } +// +// +// +// +// +// +// +// +// @GetMapping("/dashboardscheduleid") +// public List getDashboardScheduleId() { +// List dashboardScheduleOptional = dashboardSchedule_Repository.findTopByOrderByIdAsc(); +// +// List filteredList = dashboardScheduleOptional.stream() +// .filter(dashboardSchedule -> dashboardSchedule.getAttachment() != null && !dashboardSchedule.getAttachment().isEmpty()) +// .collect(Collectors.toList()); +// +// List comJobTables = new ArrayList<>(); +// for (DashboardSchedule_t dashboardSchedule : filteredList) { +// Com_jobTable comJobTable = new Com_jobTable(); +// comJobTable.setAttachment(dashboardSchedule.getAttachment()); +// comJobTable.setGatewaydone(dashboardSchedule.getGatewaydone()); +// comJobTable.setSend_to(dashboardSchedule.getSendTo()); +// comJobTable.setTemplate_name(dashboardSchedule.getTemplate()); +// comJobTable.setGatewayName(dashboardSchedule.getGateway()); +// comJobTable.setCc(dashboardSchedule.getCc()); +// comJobTable.setReplacement_string(dashboardSchedule.getReplacementString()); +// comJobTable.setJob_type(dashboardSchedule.getType()); +// +// +// comJobTables.add(comJobTable); +// } +// +// List savedComJobTables = Com_jobTablerepo.saveAll(comJobTables); +// +// +// for (DashboardSchedule_t dashboardSchedule : filteredList) { +// dashboardSchedule.setAttachment(null); +// dashboardSchedule.setGatewaydone("Y"); +// } +// dashboardSchedule_Repository.saveAll(filteredList); +// +// return savedComJobTables; +// } +// +// +// +// +// +// +// +// +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java new file mode 100644 index 0000000..88087f0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfController.java @@ -0,0 +1,31 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//@RestController +//@RequestMapping("/pdf") +//public class PdfController { +// +// private final PdfService pdfService; +// +// @Autowired +// public PdfController(PdfService pdfService) { +// this.pdfService = pdfService; +// } +// +// @GetMapping("/generate/{dashboardName}") +// public ResponseEntity generatePdf(@PathVariable String dashboardName) { +// try { +// pdfService.generatePdf(dashboardName); +// return new ResponseEntity<>("PDF generated successfully!", HttpStatus.OK); +// } catch (Exception e) { +// return new ResponseEntity<>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); +// } +// } +//} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java new file mode 100644 index 0000000..46f2d1e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Controllers/PdfService.java @@ -0,0 +1,284 @@ +//package com.realnet.Dashboard_builder.Controllers; +// +//import java.io.File; +//import java.io.FileOutputStream; +//import java.io.IOException; +//import java.time.Instant; +// +//import org.apache.commons.io.FileUtils; +//import org.apache.pdfbox.pdmodel.PDDocument; +//import org.apache.pdfbox.pdmodel.PDPage; +//import org.apache.pdfbox.pdmodel.PDPageContentStream; +//import org.apache.pdfbox.pdmodel.font.PDType1Font; +//import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject; +//import org.openqa.selenium.By; +//import org.openqa.selenium.OutputType; +//import org.openqa.selenium.TakesScreenshot; +//import org.openqa.selenium.WebDriver; +//import org.openqa.selenium.WebElement; +//import org.openqa.selenium.chrome.ChromeDriver; +//import org.openqa.selenium.chrome.ChromeOptions; +//import org.openqa.selenium.remote.DesiredCapabilities; +//import org.openqa.selenium.remote.RemoteWebDriver; +//import org.openqa.selenium.support.ui.ExpectedConditions; +//import org.openqa.selenium.support.ui.WebDriverWait; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.itextpdf.text.Document; +//import com.itextpdf.text.DocumentException; +//import com.itextpdf.text.Image; +//import com.itextpdf.text.Rectangle; +//import com.itextpdf.text.pdf.PdfWriter; +//import com.realnet.Dashboard1.Entity.Dashbord_Header; +//import com.realnet.Dashboard1.Repository.HeaderRepository; +// +//@Service +//public class PdfService { +// +// @Autowired +// private HeaderRepository headerRepository; +// +//// public void generatePdf(String dashboardName) throws DocumentException { +//// String pdfPath = "src/main/resources/" + dashboardName + ".pdf"; +//// +//// System.setProperty("webdriver.chrome.driver", +//// "C:\\Users\\Gyanadipta Pahi\\Desktop\\SureSetuLast\\suresetu-mohasin205\\backend\\src\\main\\resources\\chromedriver\\chromedriver.exe"); +//// +//// WebDriver driver = new ChromeDriver(); +//// +//// // driver.get("http://localhost:19004/token/dashboard2/getdashboardbyname/" + +//// // dashboardName); +//// driver.get("http://localhost:4200/#/cns-portal/dashboardrunner/dashrunner/" + dashboardName); +//// +//// try { +//// +//// String username="sysadmin"; +//// String password="test3"; +//// +//// // Find the username and password fields and login button +//// WebElement usernameField = driver.findElement(By.id("login_username")); +//// WebElement passwordField = driver.findElement(By.id("login_password")); +//// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +//// +//// // Enter the login credentials +//// usernameField.sendKeys(username); +//// passwordField.sendKeys(password); +//// +//// // Click the login button +//// loginButton.click(); +//// +//// Document document = new Document(); +//// FileOutputStream outputStream = new FileOutputStream(pdfPath); +//// PdfWriter.getInstance(document, outputStream); +//// document.open(); +//// +//// // Find the dashboard container element in your Angular app +//// // WebElement dashboardContainer = +//// // driver.findElement(By.id("contentContainer")); +//// +//// WebDriverWait wait = new WebDriverWait(driver, 10); // Wait up to 10 seconds +//// WebElement dashboardContainer = wait +//// .until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +//// +//// // Capture the screenshot of the dashboard using Selenium +//// byte[] dashboardImageBytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); +//// Image dashboardImage = Image.getInstance(dashboardImageBytes); +//// +//// // Scale the image to fit the PDF page +//// Rectangle pageSize = document.getPageSize(); +//// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +//// dashboardImage.setAlignment(Image.MIDDLE); +//// +//// // Add the dashboard image to the PDF document +//// document.add(dashboardImage); +//// +//// document.close(); +//// driver.quit(); +//// +//// } catch (Exception e) { +//// throw new DocumentException("Failed to generate PDF: " + e.getMessage()); +//// } +//// } +// +//// public String generatePdf2(String dashboardName) throws IOException { +//// Dashbord_Header dashbord_Header = headerRepository.findByDashboardName(dashboardName); +//// Integer id = dashbord_Header.getId(); +//// +//// System.out.println("id is .. " + id); +//// +//// long unixTimestamp = Instant.now().getEpochSecond(); +//// +//// String pdfFileName = dashboardName + "_" + unixTimestamp + ".pdf"; +//// String pdfPath = "/data/images/" + pdfFileName; +//// String chromiumPath = "/usr/bin/chromium"; // Replace with the actual path to your Chromium executable +//// +//// System.setProperty("webdriver.chrome.driver", "/usr/local/bin/chromedriver"); // Replace with the correct path +//// +//// ChromeOptions options = new ChromeOptions(); +//// options.setBinary(chromiumPath); +//// options.addArguments("--headless"); +//// options.addArguments("--disable-gpu"); +//// options.addArguments("--no-sandbox"); +//// options.addArguments("--remote-debugging-address=0.0.0.0"); +//// options.addArguments("--remote-debugging-port=9222"); +//// +//// DesiredCapabilities capabilities = DesiredCapabilities.chrome(); +//// capabilities.setCapability(ChromeOptions.CAPABILITY, options); +//// +//// try { +//// WebDriver driver = new RemoteWebDriver(capabilities); +//// // by me +//// // WebDriverWait wait = new WebDriverWait(driver, 10); +//// driver.get("http://43.205.154.152:30182/#/cns-portal/dashboardrunner/dashrunner/" + id); +//// +//// // Replace these login steps with your actual login logic +//// String username = "sysadmin"; +//// String password = "test3"; +//// WebElement usernameField = driver.findElement(By.id("login_username")); +//// WebElement passwordField = driver.findElement(By.id("login_password")); +//// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +//// +//// usernameField.sendKeys(username); +//// passwordField.sendKeys(password); +//// loginButton.click(); +//// +//// Thread.sleep(15000); // Wait for the page to load (you can adjust the wait time as needed) +//// +//// // Capture the screenshot of the dashboard +//// File screenshotFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE); +//// FileUtils.copyFile(screenshotFile, new File(pdfPath + ".png")); +//// +//// driver.quit(); +//// +//// // Convert the screenshot to PDF using Apache PDFBox +//// PDDocument document = new PDDocument(); +//// PDPage pdfPage = new PDPage(); +//// document.addPage(pdfPage); +//// PDPageContentStream contentStream = new PDPageContentStream(document, pdfPage); +//// PDImageXObject imageXObject = PDImageXObject.createFromFile(pdfPath + ".png", document); +//// contentStream.drawImage(imageXObject, 50, 600); +//// contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); +//// contentStream.beginText(); +//// contentStream.newLineAtOffset(100, 700); +//// contentStream.showText("Your PDF content here"); // Replace with any additional content you want to add +//// contentStream.endText(); +//// contentStream.close(); +//// +//// document.save(pdfPath); +//// document.close(); +//// +//// // Clean up the temporary screenshot image +//// new File(pdfPath + ".png").delete(); +//// } catch (IOException | InterruptedException e) { +//// throw new IOException("Failed to generate PDF: " + e.getMessage()); +//// } +//// +//// return pdfFileName; +//// } +// +// public String generatePdf(String dashboardName) throws DocumentException { +// +// Dashbord_Header dashbord_Header = headerRepository.findByDashboardName(dashboardName); +// Integer id = dashbord_Header.getId(); +// +// System.out.println("id is .. " + id); +// +// long unixTimestamp = Instant.now().getEpochSecond(); +// +// String pdfFileName = dashboardName + "_" + unixTimestamp + ".pdf"; +// +//// String pdfPath = "src/main/resources/images/" + pdfFileName; +// String pdfPath = "/data/images/" + pdfFileName; +// +// System.setProperty("webdriver.chrome.driver", +// // "C:\\Users\\Gyanadipta Pahi\\Desktop\\SureSetNew\\suresetu-mohasin205\\backend\\src\\main\\resources\\chromedriver\\chromedriver.exe"); +// "/usr/local/bin/chromedriver"); +// +// System.out.println("test1 ...."); +//// WebDriver driver = new ChromeDriver(); +// ChromeOptions options = new ChromeOptions(); +// options.addArguments("--headless"); +// options.addArguments("--disable-gpu"); +// options.addArguments("--no-sandbox"); +// options.addArguments("--remote-debugging-address=0.0.0.0"); +// options.addArguments("--remote-debugging-port=9222"); +// WebDriver driver = new ChromeDriver(options); +// +// driver.get("http://43.205.154.152:30182/#/cns-portal/dashboardrunner/dashrunner/" + id); +// +// try { +// System.out.println("test2 ...."); +// +// String username = "sysadmin"; +// String password = "test3"; +// +// // Find the username and password fields and login button +// WebElement usernameField = driver.findElement(By.id("login_username")); +// WebElement passwordField = driver.findElement(By.id("login_password")); +// WebElement loginButton = driver.findElement(By.id("login_Buttom")); +// +// // Enter the login credentials +// usernameField.sendKeys(username); +// passwordField.sendKeys(password); +// +// // Click the login button +// loginButton.click(); +// +// Thread.sleep(10000); +// +// Document document = new Document(); +// FileOutputStream outputStream = new FileOutputStream(pdfPath); +// PdfWriter.getInstance(document, outputStream); +// document.open(); +// +// System.out.println("test3 ...."); +// +//// WebDriverWait wait = new WebDriverWait(driver, 10); // Wait up to 10 seconds +//// WebElement dashboardContainer = wait +//// .until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +//// +//// // Capture the screenshot of the dashboard using Selenium +//// byte[] dashboardImageBytes = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES); +//// Image dashboardImage = Image.getInstance(dashboardImageBytes); +//// +//// // Scale the image to fit the PDF page +//// Rectangle pageSize = document.getPageSize(); +//// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +//// dashboardImage.setAlignment(Image.MIDDLE); +//// +//// // Add the dashboard image to the PDF document +//// document.add(dashboardImage); +//// +//// document.close(); +//// driver.quit(); +// +// +// +// WebDriverWait wait = new WebDriverWait(driver, 10); +// WebElement dashboardContainer = wait.until(ExpectedConditions.presenceOfElementLocated(By.id("contentContainer"))); +// +// // Capture screenshot of the specific element +// File screenshotFile = dashboardContainer.getScreenshotAs(OutputType.FILE); +// +// // Convert the screenshot file into an image +// Image dashboardImage = Image.getInstance(screenshotFile.getAbsolutePath()); +// +// // Scale and align the image as needed +// Rectangle pageSize = document.getPageSize(); +// dashboardImage.scaleToFit(pageSize.getWidth(), pageSize.getHeight()); +// dashboardImage.setAlignment(Image.MIDDLE); +// +// // Add the dashboard image to the PDF document +// document.add(dashboardImage); +// +// document.close(); +// driver.quit(); +// +// } catch (Exception e) { +// throw new DocumentException("Failed to generate PDF: " + e.getMessage()); +// } +// +// return pdfFileName; +// } +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java new file mode 100644 index 0000000..0a5756d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.java @@ -0,0 +1,28 @@ +package com.realnet.Dashboard_builder.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class DashboardSchedule_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String cron; + private String every; + private String gateway; + private String template; + private Date startTime; + private Date endTime; + private String attachment; + private String sendTo; + private String gatewaydone; + private String cc; + private String replacementString; + private String type; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java new file mode 100644 index 0000000..f805eba --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.java @@ -0,0 +1,20 @@ +package com.realnet.Dashboard_builder.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class Dashboard_builder_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String dashboardname; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java new file mode 100644 index 0000000..796f43c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.java @@ -0,0 +1,23 @@ +package com.realnet.Dashboard_builder.Repository; + + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; + + + + +@Repository +public interface DashboardSchedule_Repository extends JpaRepository { + + @Query(value = "SELECT * FROM dashboard_schedule_t where gatewaydone ='N' order by id asc", nativeQuery = true) + List findTopByOrderByIdAsc(); + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java new file mode 100644 index 0000000..7567970 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.java @@ -0,0 +1,14 @@ +package com.realnet.Dashboard_builder.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; + +@Repository +public interface Dashboard_builder_Repository extends JpaRepository { + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java new file mode 100644 index 0000000..8166eb1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.java @@ -0,0 +1,47 @@ +package com.realnet.Dashboard_builder.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Dashboard_builder.Entity.DashboardSchedule_t; +import com.realnet.Dashboard_builder.Repository.DashboardSchedule_Repository; + +@Service +public class DashboardSchedule_Service { + @Autowired + private DashboardSchedule_Repository Repository; + + public DashboardSchedule_t Savedata(DashboardSchedule_t data) { + data.setGatewaydone("N"); + // DashboardSchedule_t save = Repository.save(job); + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public DashboardSchedule_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public DashboardSchedule_t update(DashboardSchedule_t data, Long id) { + DashboardSchedule_t old = Repository.findById(id).get(); + old.setCron(data.getCron()); + old.setEvery(data.getEvery()); + old.setGateway(data.getGateway()); + old.setTemplate(data.getTemplate()); + old.setStartTime(data.getStartTime()); + old.setEndTime(data.getEndTime()); + old.setAttachment(data.getAttachment()); + old.setSendTo(data.getSendTo()); + final DashboardSchedule_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java new file mode 100644 index 0000000..acb6861 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.java @@ -0,0 +1,37 @@ +package com.realnet.Dashboard_builder.Services; + +import com.realnet.Dashboard_builder.Repository.Dashboard_builder_Repository; +import com.realnet.Dashboard_builder.Entity.Dashboard_builder_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Dashboard_builder_Service { + @Autowired + private Dashboard_builder_Repository Repository; + + public Dashboard_builder_t Savedata(Dashboard_builder_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Dashboard_builder_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Dashboard_builder_t update(Dashboard_builder_t data, Long id) { + Dashboard_builder_t old = Repository.findById(id).get(); + old.setDashboardname(data.getDashboardname()); + final Dashboard_builder_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java new file mode 100644 index 0000000..059ee45 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Dashboard_builder/Services/EmailGenerateService.java @@ -0,0 +1,126 @@ +//package com.realnet.Dashboard_builder.Services; +// +//import java.io.File; +//import java.util.Properties; +// +//import javax.mail.Authenticator; +//import javax.mail.Message; +//import javax.mail.MessagingException; +//import javax.mail.PasswordAuthentication; +//import javax.mail.Session; +//import javax.mail.Transport; +//import javax.mail.internet.InternetAddress; +//import javax.mail.internet.MimeMessage; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.mail.javamail.JavaMailSender; +//import org.springframework.mail.javamail.MimeMessageHelper; +// +//import com.realnet.Gateway.Entity.Gateway_t; +//import com.realnet.Gateway.Services.Gateway_Service; +// +//public class EmailGenerateService { +// +// @Autowired +// private JavaMailSender mailSender; +// +// @Autowired +// private Gateway_Service gateway_Service; +// +// public boolean sendEmailGateway(Long id, String to, String subject, String htmlContent, String cc) { +// // Email to database code start +// Gateway_t getdetails = gateway_Service.getdetailsbyId(id); +// +// String host = getdetails.getHost(); +// String username = getdetails.getUserName(); +// String password = getdetails.getPassword(); +// +// // SMTP server properties +// Properties props = new Properties(); +// props.setProperty("mail.smtp.host", host); +// props.setProperty("mail.smtp.port", "587"); +// props.setProperty("mail.smtp.auth", "true"); +// props.setProperty("mail.smtp.starttls.enable", "true"); +// +// try { +// Session session = Session.getInstance(props, new Authenticator() { +// protected PasswordAuthentication getPasswordAuthentication() { +// return new PasswordAuthentication(username, password); +// } +// }); +// +// // Create a new message +// MimeMessage message = new MimeMessage(session); +// +// // Set the sender +// message.setFrom(new InternetAddress(username)); +// +// // Set the recipient +// message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); +// +// // Set the CC recipient if provided +// if (cc != null) { +// message.setRecipients(Message.RecipientType.CC, InternetAddress.parse(cc)); +// } +// +// // Set the subject +// message.setSubject(subject); +// +// // Set the content +// message.setContent(htmlContent, "text/html"); +// +// // Send the message +// Transport.send(message); +// +// return true; +// } catch (MessagingException e) { +// e.printStackTrace(); +// return false; +// } +// } +// +// +// +// +// public String sendEmailGatewayWithAttachment(Long id, String to, String subject, String htmlContent, String cc, File file) { +// Gateway_t getdetails = gateway_Service.getdetailsbyId(id); +// if (getdetails != null) { +// String host = getdetails.getHost(); +// String username = getdetails.getUserName(); +// String password = getdetails.getPassword(); +// +// // SMTP server properties +// Properties props = new Properties(); +// props.setProperty("mail.smtp.host", host); +// props.setProperty("mail.smtp.port", "587"); +// props.setProperty("mail.smtp.auth", "true"); +// props.setProperty("mail.smtp.starttls.enable", "true"); +// +// try { +// Session session = Session.getInstance(props, new Authenticator() { +// protected PasswordAuthentication getPasswordAuthentication() { +// return new PasswordAuthentication(username, password); +// } +// }); +// +// MimeMessage mimeMessage = new MimeMessage(session); +// MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true); +// mimeMessageHelper.setTo(to); +// mimeMessageHelper.setSubject(subject); +// mimeMessageHelper.setText(htmlContent, true); +// mimeMessageHelper.setCc(cc); +// mimeMessageHelper.addAttachment(file.getName(), file); +// +// Transport.send(mimeMessage); +// +// return "Mail sent successfully"; +// } catch (MessagingException e) { +// return "Error while sending mail: " + e.getMessage(); +// } +// } else { +// return "Error: Gateway not found"; +// } +// } +// +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java new file mode 100644 index 0000000..a78c4db --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/AngularHtmlCode.java @@ -0,0 +1,62 @@ +package com.realnet.FabricIcard.Controllers; + +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/token") +public class AngularHtmlCode { + + @GetMapping("/convert") + public String convertAngularToHtml(@RequestParam String angularCode) { + // Perform conversion logic here (replace Angular-specific syntax with HTML) + String htmlCode = convertAngularToHtmlCode(angularCode); + return htmlCode; + } + + +// private String convertAngularToHtmlCode(String angularCode) { +// // Replace ng-container with a div +// String htmlCode = angularCode.replace(" getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/FabricIcard/{id}") + public FabricIcard getdetailsbyId(@PathVariable Long id) { + FabricIcard get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/FabricIcard/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/FabricIcard/{id}") + public FabricIcard update(@RequestBody FabricIcard data, @PathVariable Long id) { + FabricIcard update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java new file mode 100644 index 0000000..7b8f2d2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/LayoutPdf.java @@ -0,0 +1,328 @@ +package com.realnet.FabricIcard.Controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.json.JSONArray; +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; +import org.xhtmlrenderer.pdf.ITextRenderer; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.FabricIcard.Entity.FabricIcard; +import com.realnet.FabricIcard.Repository.FabricIcardRepository; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Repository.FabricIcardLinesRepository; + +@RestController +@RequestMapping("/token") +public class LayoutPdf { + + @PostMapping("/generate-pdf") + public ResponseEntity generatePdf(@RequestBody String htmlContent) { + try { + // Use Flying Saucer to convert HTML to PDF + byte[] pdfBytes = generatePdf1(htmlContent); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_PDF); + headers.setContentDispositionFormData("inline", "output.pdf"); + + return new ResponseEntity<>(pdfBytes, headers, HttpStatus.OK); + } catch (Exception e) { + e.printStackTrace(); + return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + public byte[] generatePdf1(String htmlContent) throws Exception { + ITextRenderer renderer = new ITextRenderer(); + renderer.setDocumentFromString(htmlContent); + renderer.layout(); + + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + renderer.createPDF(outputStream); + return outputStream.toByteArray(); + } + } + + @Autowired + private FabricIcardRepository fabricIcardRepository; + + @Autowired + private FabricIcardLinesRepository fabricIcardLinesRepository; + + @PostMapping("/generateHtml1/{id}") + public String generateHtml1(@RequestBody List> jsonData, @PathVariable Long id) + throws JsonProcessingException { + return generateHtml2(jsonData, id); + } + + public String generateHtml2(List> jsonData, Long id) throws JsonProcessingException { + +// LayoutBuilder_t layoutBuilder_t = layoutBuilder_Repository.findById(id).get(); +// +// LayoutBuilderLines_t layoutBuilderLines_t = layoutBuilderLines_Repository.findById(id).get(); +// +// String url = layoutBuilder_t.getUrl(); +// String model = layoutBuilderLines_t.getModel(); +// +// String serviceOrderId = "146"; +// +// JsonParser parser = new JsonParser(); +// JsonElement element = parser.parse(model); +// JsonArray models = element.getAsJsonArray(); +// JsonObject getbodyobject = null; +// List> replacerule = null; +// String operation = null; +// String replaceWith = null; +// String startstring = null; +// String endstring = null; +// String keyword = null; +// String linestring = null; +// String cellAddress = null; +// String ModifyfileName = null; +// String nodeName = null; +// +// String a_uri = url.replace("?", String.valueOf(serviceOrderId)); +// System.out.println(a_uri); +// +// Object body = GET(a_uri).getBody(); +// ObjectMapper objectMapper = new ObjectMapper(); +// String json = objectMapper.writeValueAsString(body); +// JsonElement getbody = parser.parse(json); +// getbodyobject = getbody.getAsJsonObject(); +// +// +// +// for (JsonElement mod : models) { +// JsonObject object = mod.getAsJsonObject(); +// +// startstring = object.get("start_string").toString().replaceAll("\"", ""); +// endstring = object.get("end_string").toString().replaceAll("\"", ""); +// replaceWith = object.get("replace_with").toString().replaceAll("\"", ""); +// keyword = object.get("Keyword").toString().replaceAll("\"", ""); +// linestring = object.get("line_string").toString().replaceAll("\"", ""); +// operation = object.get("operation").toString().replaceAll("\"", ""); +// cellAddress = object.get("cellAddress").toString().replaceAll("\"", ""); +// +// nodeName = object.get("nodeName").toString().replaceAll("\"", ""); +//// // nodeName = "listOfItems"; // Set the desired node name +//// +// JsonArray values = searchJsonKey(getbodyobject, replaceWith, nodeName); +// +// for (JsonElement element1 : values) { +// String individualValue = element1.getAsString(); +// +// replaceWith = individualValue; +// +// System.out.println("Found value: " + individualValue); +// +// if (operation.contains("replacement")) { +// replacerule = replaceStringInJsonData(jsonData, replaceWith, keyword); +// +// } +// } +// +// } +// +// jsonData = replacerule; + + StringBuilder htmlBuilder = new StringBuilder(); + + // Open the main card div + htmlBuilder.append("
"); + htmlBuilder.append( + "
"); + + for (Map item : jsonData) { + + // Check for Table type + if ("Table".equals(item.get("type"))) { + htmlBuilder.append("
"); + + // Open the card-title div for Table + htmlBuilder.append("
"); + + // Add Table HTML code + htmlBuilder.append("
"); + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + + // Add table header based on the JSON structure + List> values = (List>) item.get("values"); + + + for (Map value : values) { + htmlBuilder.append(""); + } + + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + htmlBuilder.append(""); + + + // Add table body content based on the JSON structure + for (Map value : values) { + htmlBuilder.append(""); + } + + +// // Add the additional values twice +// for (Map additionalValue : values) { +// htmlBuilder.append(""); +// } + + htmlBuilder.append(""); + htmlBuilder.append(""); + + htmlBuilder.append("
").append(value.get("label")).append("
").append(value.get("value")).append("").append(additionalValue.get("value")).append("
"); + htmlBuilder.append("
"); + + // Close the card-title and individual item div for Table + htmlBuilder.append("
"); + } + + // Check for Image type + else if ("Image".equals(item.get("type"))) { + htmlBuilder.append("
"); + + // Open the card-title div for Image + htmlBuilder.append("
"); + + // Add Image tag + htmlBuilder.append("\"Image\""); + + // Close the card-title and individual item div for Image + htmlBuilder.append("
"); + } else if ("Line".equals(item.get("type"))) { + // Handle Line type + htmlBuilder.append("
"); + htmlBuilder.append("
"); + htmlBuilder.append("
"); + } else { + // Handle other types + // Open the individual item div + htmlBuilder.append("
"); + + // Open the card-title div + htmlBuilder.append("
"); + + // Append the fieldtext content + htmlBuilder.append(item.get("fieldtext")); + + // Close the card-title and individual item div + htmlBuilder.append("
"); + } + } + + // Close the main card div + htmlBuilder.append("
"); + + return htmlBuilder.toString(); + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + + private static JsonArray searchJsonKey(JsonObject jsonObject, String keyToSearch, String nodeName) { + JsonArray resultArray = new JsonArray(); + + for (Map.Entry entry : jsonObject.entrySet()) { + String key = entry.getKey().replaceAll("\"", ""); + JsonElement value = entry.getValue(); + + if (value.isJsonObject()) { + // Recursively search for the key in the nested object + JsonArray nestedValues = searchJsonKey(value.getAsJsonObject(), keyToSearch, nodeName); + resultArray.addAll(nestedValues); + } else if (nodeName == null || nodeName.isEmpty() || key.equalsIgnoreCase(nodeName)) { + // If nodeName is null or matches the current key, search for the keyToSearch + if (value.isJsonArray()) { + // Handle arrays by iterating through each element + JsonArray jsonArray = value.getAsJsonArray(); + for (JsonElement arrayElement : jsonArray) { + if (arrayElement.isJsonObject()) { + JsonObject itemObject = arrayElement.getAsJsonObject(); + if (itemObject.has(keyToSearch)) { + resultArray.add(itemObject.get(keyToSearch)); + } + } + } + } else if (value.isJsonPrimitive() && key.equals(keyToSearch)) { + // If nodeName is null and the current key matches keyToSearch, add the value to + // the result + resultArray.add(value); + } + } + } + + return resultArray; + } + + + + public static List> replaceStringInJsonData(List> jsonData, String keyword, + String replaceWith) { + for (Map entry : jsonData) { + for (Map.Entry keyValue : entry.entrySet()) { + if (keyValue.getValue() instanceof String) { + String value = (String) keyValue.getValue(); + if (value.contains(replaceWith)) { + entry.replace(keyValue.getKey(), value.replace(replaceWith, keyword)); + } + } + } + } + return jsonData; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java new file mode 100644 index 0000000..59bfc6f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/MyImageReplacedElementFactory.java @@ -0,0 +1,40 @@ +//package com.realnet.LayoutBuilder.Controllers; +// +//import org.w3c.dom.Element; +//import org.xhtmlrenderer.extend.ReplacedElement; +//import org.xhtmlrenderer.extend.ReplacedElementFactory; +//import org.xhtmlrenderer.extend.UserAgentCallback; +//import org.xhtmlrenderer.layout.LayoutContext; +//import org.xhtmlrenderer.render.BlockBox; +//import org.xhtmlrenderer.simple.extend.FormSubmissionListener; +// +//public class MyImageReplacedElementFactory implements ReplacedElementFactory{ +// +// @Override +// public ReplacedElement createReplacedElement(LayoutContext c, BlockBox box, UserAgentCallback uac, int cssWidth, +// int cssHeight) { +// // TODO Auto-generated method stub +// return null; +// } +// +// @Override +// public void reset() { +// // TODO Auto-generated method stub +// +// } +// +// @Override +// public void remove(Element e) { +// // TODO Auto-generated method stub +// +// } +// +// @Override +// public void setFormSubmissionListener(FormSubmissionListener listener) { +// // TODO Auto-generated method stub +// +// } +// +//} + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java new file mode 100644 index 0000000..ab47849 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/PageController.java @@ -0,0 +1,28 @@ +package com.realnet.FabricIcard.Controllers; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FabricIcard.Entity.PageSource; +import com.realnet.FabricIcard.Repository.PageSourceRepository; + +@RestController +@RequestMapping("/api/pages") +public class PageController { + + @Autowired + private PageSourceRepository pageSourceRepository; + + @PostMapping("/save") + public String savePageSource(@RequestBody String sourceCode) { + PageSource pageSource = new PageSource(); + pageSource.setSourceCode(sourceCode); + + // Save to the database + pageSourceRepository.save(pageSource); + + return "Page source saved successfully!"; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java new file mode 100644 index 0000000..4da1232 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Controllers/TestCode.java @@ -0,0 +1,108 @@ +//package com.realnet.FabricIcard.Controllers; +// +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +//import com.fasterxml.jackson.databind.JsonNode; +//import com.fasterxml.jackson.databind.ObjectMapper; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import java.io.BufferedReader; +//import java.io.InputStreamReader; +//import java.net.HttpURLConnection; +//import java.net.URL; +//import java.util.ArrayList; +//import java.util.Iterator; +//import java.util.List; +//import java.util.Map; +// +//@RestController +//@RequestMapping("/token") +//public class TestCode { +// @GetMapping("/dynamicValues") +// public List> getDynamicValues() { +// try { +// // Make HTTP request to the first API +// String apiUrl = "http://3.109.61.114:30161/token/Billing/ServiceOrder/ServiceOrder/146"; +// String response = sendHttpRequest(apiUrl); +// +// // Parse the response and extract the listOfItems +// return createValuesFromList(response); +// } catch (Exception e) { +// e.printStackTrace(); +// return new ArrayList<>(); // Return an empty list in case of an error +// } +// } +// +// private String sendHttpRequest(String apiUrl) throws Exception { +// URL url = new URL(apiUrl); +// HttpURLConnection connection = (HttpURLConnection) url.openConnection(); +// connection.setRequestMethod("GET"); +// +// BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); +// StringBuilder response = new StringBuilder(); +// +// String line; +// while ((line = reader.readLine()) != null) { +// response.append(line); +// } +// +// reader.close(); +// connection.disconnect(); +// +// return response.toString(); +// } +// +// private List> createValuesFromList(String jsonResponse) { +// List> values = new ArrayList<>(); +// +// try { +// // Parse the JSON response using Jackson ObjectMapper +// ObjectMapper objectMapper = new ObjectMapper(); +// JsonNode rootNode = objectMapper.readTree(jsonResponse); +// +// // Extract the listOfItems node +// JsonNode listOfItemsNode = rootNode.path("listOfItems"); +// +// // Iterate through each item in the listOfItems +// Iterator itemsIterator = listOfItemsNode.elements(); +// while (itemsIterator.hasNext()) { +// JsonNode itemNode = itemsIterator.next(); +// +// // Extract relevant information from the item +// String itemCode = itemNode.path("itemCode").asText(); +// String unitPrice = itemNode.path("unitPrice").asText(); +// String lineTotal = itemNode.path("lineTotal").asText(); +// +// // Create the corresponding values +// Map itemValues = Map.of( +// "label", "Item and Description", +// "value", itemCode +// ); +// Map qtyValues = Map.of( +// "label", "Qty", +// "value", "1" +// ); +// Map rateValues = Map.of( +// "label", "Rate", +// "value", unitPrice +// ); +// Map amountValues = Map.of( +// "label", "Amount", +// "value", lineTotal +// ); +// +// // Add the values to the list +// values.add(itemValues); +// values.add(qtyValues); +// values.add(rateValues); +// values.add(amountValues); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return values; +// } +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java new file mode 100644 index 0000000..9f4ecfa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/FabricIcard.java @@ -0,0 +1,35 @@ +package com.realnet.FabricIcard.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; + +import lombok.Data; + +@Entity +@Data +public class FabricIcard { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String description; + private boolean active; + private String url; + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL, mappedBy = "layoutBuilder_t") + private List fabricIcardLines = new ArrayList<>(); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java new file mode 100644 index 0000000..8633a6b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Entity/PageSource.java @@ -0,0 +1,19 @@ +package com.realnet.FabricIcard.Entity; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Entity +@Data +public class PageSource { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String sourceCode; + + // getters and setters +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java new file mode 100644 index 0000000..719f189 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/FabricIcardRepository.java @@ -0,0 +1,12 @@ +package com.realnet.FabricIcard.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcard.Entity.FabricIcard; + +@Repository +public interface FabricIcardRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java new file mode 100644 index 0000000..d883def --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Repository/PageSourceRepository.java @@ -0,0 +1,10 @@ +package com.realnet.FabricIcard.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcard.Entity.PageSource; + +@Repository +public interface PageSourceRepository extends JpaRepository { +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java new file mode 100644 index 0000000..2dab174 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/FabricIcardService.java @@ -0,0 +1,41 @@ +package com.realnet.FabricIcard.Services; + +import com.realnet.FabricIcard.Entity.FabricIcard; +import com.realnet.FabricIcard.Repository.FabricIcardRepository; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FabricIcardService { + @Autowired + private FabricIcardRepository Repository; + + public FabricIcard Savedata(FabricIcard data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FabricIcard getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FabricIcard update(FabricIcard data, Long id) { + FabricIcard old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setDescription(data.getDescription()); + old.setActive(data.isActive()); + old.setUrl(data.getUrl()); + final FabricIcard test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java new file mode 100644 index 0000000..7cb7d6a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcard/Services/LayoutPdfService.java @@ -0,0 +1,282 @@ +package com.realnet.FabricIcard.Services; + +import java.io.ByteArrayOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.xhtmlrenderer.pdf.ITextRenderer; + +@Service +public class LayoutPdfService { + + + public String generateForm(@RequestBody Map jsonData) { + // Convert JSON to HTML + String htmlForm = convertJsonToHtml(jsonData); + return htmlForm; + } + +// public void convertToPdf(@RequestBody String htmlContent) throws IOException { +// // Render HTML content using Flying Saucer +// try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { +// ITextRenderer renderer = new ITextRenderer(); +// renderer.setDocumentFromString(htmlContent); +// renderer.layout(); +// renderer.createPDF(outputStream); +// +// +// // Specify the directory and file name where you want to save the PDF +// String pdfFilePath = "/data/example.pdf"; +// +// String path="/data"; +// +// Path directory = Paths.get(path); +// if (!Files.exists(directory)) { +// try { +// Files.createDirectories(directory); +// } catch (IOException e) { +// e.printStackTrace(); +// // Handle directory creation failure appropriately +// } +// } +// +// +// // Save the PDF to the specified file +// try (FileOutputStream fileOutputStream = new FileOutputStream(pdfFilePath)) { +// outputStream.writeTo(fileOutputStream); +// } +// +// +// // Set the response headers +//// response.setContentType("application/pdf"); +//// response.setContentLength(outputStream.size()); +//// response.setHeader("Content-Disposition", "inline; filename=example.pdf"); +//// +//// // Write the PDF to the response output stream +//// response.getOutputStream().write(outputStream.toByteArray()); +//// response.getOutputStream().flush(); +// } catch (Exception e) { +// e.printStackTrace(); +// // Handle exceptions appropriately +// } +// } + + + + public void convertToPdf(@RequestBody String htmlContent) throws IOException { + + htmlContent="\r\n" + + "\r\n" + + "\r\n" + + " \r\n" + + " \r\n" + + " FormName\r\n" + + " \r\n" + + "\r\n" + + "\r\n" + + "\r\n" + + "
\r\n" + + "
\r\n" + + " Title\r\n" + + "
\r\n" + + "
\r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "
\r\n" + + "
\r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "
\r\n" + + "
\r\n" + + "\r\n" + + "\r\n" + + "\r\n"; + // Render HTML content using Flying Saucer + try (ByteArrayOutputStream outputStream = new ByteArrayOutputStream()) { + ITextRenderer renderer = new ITextRenderer(); + renderer.setDocumentFromString(htmlContent); + renderer.layout(); + renderer.createPDF(outputStream); + + // Reset the position of the output stream before writing to the file +// outputStream.reset(); + + // Specify the directory and file name where you want to save the PDF + String pdfFilePath = "/data/example.pdf"; + + String path = "/data"; + + Path directory = Paths.get(path); + if (!Files.exists(directory)) { + try { + Files.createDirectories(directory); + } catch (IOException e) { + e.printStackTrace(); + // Handle directory creation failure appropriately + } + } + + // Save the PDF to the specified file + try (FileOutputStream fileOutputStream = new FileOutputStream(pdfFilePath)) { + outputStream.writeTo(fileOutputStream); + } + + } catch (Exception e) { + e.printStackTrace(); + // Handle exceptions appropriately + } + } + + + private String convertJsonToHtml(Map formData) { + StringBuilder htmlBuilder = new StringBuilder("\n\n\n"); + htmlBuilder.append(" \n"); + htmlBuilder.append(" \n"); + htmlBuilder.append(String.format(" %s\n", formData.get("name"))); + htmlBuilder.append(" \n\n\n\n
\n"); + + // Iterate through the dashboard array + List> dashboard = (List>) formData.get("dashboard"); + for (Map element : dashboard) { + htmlBuilder.append(generateFormField(element)); + } + + htmlBuilder.append("
\n\n\n"); + return htmlBuilder.toString(); + } + + private String generateFormField(Map fieldData) { + StringBuilder fieldHtml = new StringBuilder(); + String type = (String) fieldData.get("type"); + + if (type != null) { + fieldHtml.append( + String.format("
\n", getGridStyle(fieldData))); + fieldHtml.append(String.format(" \n", fieldData.get("fieldName"), + fieldData.get("fieldtext"))); + + switch (type) { + case "text": + fieldHtml.append(String.format(" \n", + fieldData.get("fieldName"), fieldData.get("fieldName"), getAdditionalAttributes(fieldData))); + break; + case "textarea": + fieldHtml.append( + String.format(" \n", fieldData.get("fieldName"))); + break; + case "select": + fieldHtml.append(String.format(" \n"); + break; + // Add more cases for other form field types as needed + default: + // Handle unknown field types or add more specific cases + } + + fieldHtml.append("
\n"); + } + + return fieldHtml.toString(); + } + + private String getGridStyle(Map fieldData) { + int cols = (int) fieldData.get("cols"); + int rows = (int) fieldData.get("rows"); + int x = (int) fieldData.get("x"); + int y = (int) fieldData.get("y"); + + return String.format("grid-column: span %d; grid-row: span %d; grid-column-start: %d; grid-row-start: %d;", + cols, rows, x, y); + } + + private String getAdditionalAttributes(Map fieldData) { + StringBuilder attributes = new StringBuilder(); + + for (Map.Entry entry : fieldData.entrySet()) { + String key = entry.getKey(); + Object value = entry.getValue(); + + if (!Arrays.asList("type", "fieldName", "fieldtext", "cols", "rows", "x", "y").contains(key) + && value != null) { + attributes.append(String.format(" %s=\"%s\"", key, value)); + } + } + + return attributes.toString(); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java new file mode 100644 index 0000000..4cd2a5b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/FabricIcardLinesController.java @@ -0,0 +1,78 @@ +package com.realnet.FabricIcardLines.Controllers; + +import java.io.IOException; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import com.realnet.FabricIcardLines.Entity.Dummyfabric; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Services.FabricIcardLinesService; + +@RequestMapping(value = "/FabricIcardLines") +@RestController +public class FabricIcardLinesController { + + @Autowired + private FabricIcardLinesService Service; + + @PostMapping("/FabricIcardLines") + public FabricIcardLines Savedata(@RequestBody FabricIcardLines data) { + FabricIcardLines save = Service.Savedata(data); + return save; + } + + @GetMapping("/FabricIcardLines") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/FabricIcardLines/{id}") + public FabricIcardLines getdetailsbyId(@PathVariable Long id) { + FabricIcardLines get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/FabricIcardLines/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/FabricIcardLines/{id}") + public FabricIcardLines update(@RequestBody FabricIcardLines data, @PathVariable Long id) { + FabricIcardLines update = Service.update(data, id); + return update; + } + +// make xml file + @PutMapping("/FabricIcardLines/xml") + public FabricIcardLines makexmlfile(@RequestParam String id, @RequestBody Dummyfabric dummy) throws IOException { + + String xml = dummy.getXml(); + String json = dummy.getJson(); + + FabricIcardLines update = Service.makexmlfile(id, xml, json); + return update; + } + +// get by headerid + @GetMapping("/FabricIcardLines/headerId/{id}") + public FabricIcardLines getdetailsbyheaderId(@PathVariable String id) { + FabricIcardLines get = Service.getbyheaderid(id); + return get; + + } + +// file read + @GetMapping("/FabricIcardLines/json/{id}") + public String readfile(@PathVariable String id) throws IOException { + String get = Service.readjson(id); + + return get; + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java new file mode 100644 index 0000000..72fccbf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Controllers/JsonKeysController.java @@ -0,0 +1,117 @@ +package com.realnet.FabricIcardLines.Controllers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Services.FabricIcardLinesService; + +@CrossOrigin("*") +@RequestMapping(value = "/FabricIcardLines") +@RestController +public class JsonKeysController { + + @Autowired + private FabricIcardLinesService fabricIcardLinesService; + + @PostMapping("/getJsonKeys") + public ResponseEntity> getJsonKeys(@RequestBody String json) { + try { + // Parse JSON string into JsonNode + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode jsonNode = objectMapper.readTree(json); + + // Get all keys from JsonNode + List keys = getAllKeys(jsonNode); + + return ResponseEntity.ok(keys); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + private List getAllKeys(JsonNode jsonNode) { + List keys = new ArrayList<>(); + Iterator fieldNames = jsonNode.fieldNames(); + while (fieldNames.hasNext()) { + keys.add(fieldNames.next()); + } + return keys; + } + +// get key value from FabricIcardLinesService + @PostMapping("/FabricIcardLines/getKeyValuePairs/{id}") + public ResponseEntity>> getKeyValuePairs(@PathVariable String id) { + + FabricIcardLines lines = fabricIcardLinesService.getbyheaderid(id); + if (lines == null) { + String message = "No lines found for ID: " + id; + return ResponseEntity.status(HttpStatus.NOT_FOUND) + .body(Collections.singletonList(Collections.singletonMap("message", message))); + } + + String jsonData = lines.getLayoutModel(); + + try { + // Parse JSON string into JsonNode + ObjectMapper objectMapper = new ObjectMapper(); + JsonNode rootNode = objectMapper.readTree(jsonData); + + // Extract key-value pairs based on type + List> keyValuePairs = extractKeyValuePairs(rootNode); + + return ResponseEntity.ok(keyValuePairs); + } catch (Exception e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + } + + private List> extractKeyValuePairs(JsonNode rootNode) { + List> keyValuePairs = new ArrayList<>(); + JsonNode objectsNode = rootNode.get("objects"); + if (objectsNode == null || !objectsNode.isArray()) { + return keyValuePairs; // Return empty list if objects array is missing or not an array + } + + for (JsonNode node : objectsNode) { + Map pair = new HashMap<>(); + String type = node.path("type").asText(); + if (type.equals("i-text")) { + JsonNode textNode = node.path("text"); + if (!textNode.isMissingNode()) { + pair.put(type, textNode.asText()); + } + } else if (type.equals("image")) { + JsonNode srcNode = node.path("src"); + if (!srcNode.isMissingNode()) { + pair.put(type, node.get("src").asText()); + + } + } + if (!pair.isEmpty()) { + + keyValuePairs.add(pair); + } + } + return keyValuePairs; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java new file mode 100644 index 0000000..c637c9f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/Dummyfabric.java @@ -0,0 +1,19 @@ +package com.realnet.FabricIcardLines.Entity; + +import javax.persistence.Lob; + +import lombok.Data; + +@Data +public class Dummyfabric { + + + @Lob + private String json; + + @Lob + private String xml; + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java new file mode 100644 index 0000000..02f220b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Entity/FabricIcardLines.java @@ -0,0 +1,41 @@ +package com.realnet.FabricIcardLines.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.FabricIcard.Entity.FabricIcard; + +import lombok.Data; + +@Entity +@Data +public class FabricIcardLines { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String header_id; + private String file_path; + private String xml_file_name; + private String json_file_name; + + @Lob + private String mapping_model; + + @Lob + private String Model; + + @Lob + private String layoutModel; + + @JsonBackReference + @ManyToOne + private FabricIcard layoutBuilder_t; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java new file mode 100644 index 0000000..8e7c4b4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Repository/FabricIcardLinesRepository.java @@ -0,0 +1,15 @@ +package com.realnet.FabricIcardLines.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; + +@Repository +public interface FabricIcardLinesRepository extends JpaRepository { + + @Query(value = "select * from fabric_icard_lines where header_id=?1", nativeQuery = true) + FabricIcardLines getbyheaderId(String header_id); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java new file mode 100644 index 0000000..2da3cee --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FabricIcardLines/Services/FabricIcardLinesService.java @@ -0,0 +1,109 @@ +package com.realnet.FabricIcardLines.Services; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Paths; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.realnet.FabricIcard.Entity.FabricIcard; +import com.realnet.FabricIcard.Repository.FabricIcardRepository; +import com.realnet.FabricIcardLines.Entity.FabricIcardLines; +import com.realnet.FabricIcardLines.Repository.FabricIcardLinesRepository; + +@Service +public class FabricIcardLinesService { + + @Value("${projectPath}") + private String projectpath; + + @Autowired + private FabricIcardRepository fabricIcardRepository; + + @Autowired + private FabricIcardLinesRepository Repository; + + public FabricIcardLines Savedata(FabricIcardLines data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FabricIcardLines getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FabricIcardLines update(FabricIcardLines data, Long id) { + FabricIcardLines old = Repository.findById(id).get(); + old.setHeader_id(data.getHeader_id()); + old.setModel(data.getModel()); + old.setLayoutModel(data.getLayoutModel()); + old.setFile_path(data.getFile_path()); + old.setXml_file_name(data.getXml_file_name()); + old.setJson_file_name(data.getJson_file_name()); + old.setMapping_model(data.getMapping_model()); + + final FabricIcardLines test = Repository.save(old); + return test; + } + +// make xml file + public FabricIcardLines makexmlfile(String headerid, String xml, String json) throws IOException { + + FabricIcard fabricIcard = fabricIcardRepository.findById(Long.valueOf(headerid)).get(); + + String name = fabricIcard.getName(); + String xmlfileName = name + ".xml"; + String jsonfileName = name + ".txt"; + + String filePath = Paths.get(xmlfileName).toString(); + FileWriter fr = new FileWriter(filePath); + fr.write(xml); + fr.close(); + + String jsonfilePath = Paths.get(jsonfileName).toString(); + FileWriter jsonfr = new FileWriter(jsonfilePath); + jsonfr.write(json); + jsonfr.close(); + + FabricIcardLines old = Repository.getbyheaderId(headerid); + + old.setFile_path(projectpath); + old.setXml_file_name(xmlfileName); + old.setJson_file_name(jsonfileName); + old.setHeader_id(headerid); + + final FabricIcardLines test = Repository.save(old); + return test; + } + +// get by header id + public FabricIcardLines getbyheaderid(String id) { + return Repository.getbyheaderId(id); + } + +// read file + public String readjson(String id) throws IOException { + + FabricIcardLines fLines = Repository.getbyheaderId(id); + String file_path = fLines.getFile_path(); + String json_file_name = fLines.getJson_file_name(); + String pathString = file_path + File.separator + json_file_name; + + String readFileToString = FileUtils.readFileToString(new File(pathString), StandardCharsets.UTF_8); + + return readFileToString; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java new file mode 100644 index 0000000..fa74e91 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Controllers/UploadeddocsController.java @@ -0,0 +1,194 @@ +package com.realnet.FileUpload.Controllers; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.stream.Collectors; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.dao.DataAccessException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.FileUpload.Entity.Uploadeddocs; +import com.realnet.FileUpload.Services.FileuploadService; +import com.realnet.FileUpload.Services.UploadedFileService; + +@RequestMapping(value = "/FileUpload") +//@CrossOrigin("*") +@RestController +public class UploadeddocsController { + @Autowired + private UploadedFileService Service; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private FileuploadService fileuploadService; + + @PostMapping("/Uploadeddocs/{ref}/{table_name}") + + public ResponseEntity Savedata(@PathVariable String ref, @PathVariable String table_name, + @RequestParam MultipartFile file) throws JsonMappingException, JsonProcessingException { + + Uploadeddocs tdata = new Uploadeddocs(); + Date d = new Date(); + String addString = "_" + d.getTime(); + + if (file.isEmpty()) { + return new ResponseEntity<>("file is empty", HttpStatus.BAD_REQUEST); + + } + String UPLOAD_DIREC = File.separator + "Resources" + File.separator + "Files"; + String originalFilename = file.getOriginalFilename(); + String filetype = originalFilename.substring(originalFilename.lastIndexOf(".")); + String filename = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + addString; + String replacedfilename = filename + filetype; + System.out.println("file name is ..." + replacedfilename); + + Uploadeddocs save = null; + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadService.uploadFile(file, addString); + + if (f) { + System.out.println("file uploaded successfully"); + + tdata.setUploadedfile_path(projectPath + UPLOAD_DIREC); + + tdata.setUploadedfile_name(replacedfilename); + tdata.setRef(ref); + tdata.setRef_table_name(table_name); + + save = Service.Savedata(tdata); + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + else { + return new ResponseEntity<>("file upload failed", HttpStatus.BAD_REQUEST); + + } + + } + + @PutMapping("/Uploadeddocs/{id}") + public Uploadeddocs update(@RequestBody Uploadeddocs data, @PathVariable Integer id) { + Uploadeddocs update = Service.update(data, id); + return update; + } + + @GetMapping("/Uploadeddocs") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Uploadeddocs/{id}") + public Uploadeddocs getdetailsbyId(@PathVariable Integer id) { + Uploadeddocs get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Uploadeddocs/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +// get by ref and ref table name + @GetMapping("/Uploadeddocs/{ref}/{ref_tablename}") + public List getbyrefandtablename(@PathVariable String ref, @PathVariable String ref_tablename) { + List get = Service.getbyrefandtablename(ref, ref_tablename); + return get; + } + + @Autowired + private JdbcTemplate jdbcTemplate; + + @PostMapping("/execute") + public ResponseEntity executeDump(@RequestParam Boolean execute, @RequestParam String filePath) { + // Check if execution is allowed + if (!execute) { + return ResponseEntity.ok("Service not executed due to 'execute' flag being false."); + } + + Path path = Paths.get(System.getProperty("user.dir")).resolve(filePath); + + try { + // Check if file exists + if (!Files.exists(path)) { + return ResponseEntity.badRequest().body("File not found: " + filePath); + } + + // File content ko read karo aur SQL commands extract karo + String sql = FileUtils.readFileToString(new File(filePath), StandardCharsets.UTF_8); + + // SQL commands ko execute karo + + // Split statements by semicolon + List sqlStatements = Arrays.stream(sql.split(";")).map(String::trim) + .filter(statement -> !statement.isEmpty()) // Empty statements ko remove karo + .filter(statement -> !statement.startsWith("USE")) // "USE db;" ko ignore karo + .filter(statement -> !statement.startsWith("--")) // Comments ko ignore karo + .filter(statement -> !statement.startsWith("/*")) // Special MySQL commands ko ignore karo + .collect(Collectors.toList()); + + // Execute each statement + for (String statement : sqlStatements) { + try { + jdbcTemplate.execute(statement); + + System.out.println(statement + " executed.."); + + } catch (DataAccessException e) { + // Specific SQL execution error ko catch karo aur log karo + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("Error executing statement: " + statement + " | Error: " + e.getMessage()); + } + } + System.out.println("Dump executed executed.."); + + // File ko delete karo + Files.delete(path); + + System.out.println("File delete successfully..."); + + return ResponseEntity.ok("Dump executed and file deleted successfully!"); + + } catch (IOException e) { + + System.out.println("io error.." + e); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("File reading/deletion error: " + e.getMessage()); + } catch (DataAccessException e) { + System.out.println("DataAccessException error.." + e); + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("SQL execution error: " + e.getMessage()); + } + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java new file mode 100644 index 0000000..6b8305c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/Uploadeddocs.java @@ -0,0 +1,22 @@ +package com.realnet.FileUpload.Entity; + +import lombok.*; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Uploadeddocs extends who_column { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String ref; + private String ref_table_name; + + private String uploadedfile_name; + private String uploadedfile_path; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/who_column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/who_column.java new file mode 100644 index 0000000..0de7978 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Entity/who_column.java @@ -0,0 +1,43 @@ +package com.realnet.FileUpload.Entity; + +import lombok.*; +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class who_column implements Serializable { + + private static final long serialVersionUID = 1L; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java new file mode 100644 index 0000000..88eec31 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Repository/UploadFileRepository.java @@ -0,0 +1,17 @@ +package com.realnet.FileUpload.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.FileUpload.Entity.Uploadeddocs; + +@Repository +public interface UploadFileRepository extends JpaRepository { + + @Query(value = "select * from uploadeddocs where ref=?1 && ref_table_name=?2", nativeQuery = true) + List findbyrefAnsTableName(String ref, String ref_table_name); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java new file mode 100644 index 0000000..8a134f9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/FileuploadService.java @@ -0,0 +1,107 @@ +package com.realnet.FileUpload.Services; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; +import java.util.ArrayList; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Component +public class FileuploadService { + @Value("${projectPath}") + private String projectPath; + + public boolean uploadFile(MultipartFile multipartFile, String addString) { + boolean f = false; + String UPLOAD_DIREC = File.separator + "Resources" + File.separator + "Files"; + String originalFilename = multipartFile.getOriginalFilename(); + + String filetype = originalFilename.substring(originalFilename.lastIndexOf(".")); + String filename = originalFilename.substring(0, originalFilename.lastIndexOf(".")) + addString; + String replacedfilename = filename + filetype; + + System.out.println("file name with replace is ..." + replacedfilename); + String Path1 = projectPath + UPLOAD_DIREC; + + String filepath = Path1 + File.separator + replacedfilename; + + try { + + if (!UPLOAD_DIREC.isEmpty()) { + + File projectdir = new File(Path1); + if (!projectdir.exists()) { + boolean mkdir = projectdir.mkdirs(); + System.out.println(Path1 + " folder create = " + mkdir); + } + +// File file = new File(Path1); +// if (!file.exists()) { +// file.createNewFile(); +// } + +// System.out.println("\\" + ":" + "\\\\"); + +// UPLOAD_DIREC = UPLOAD_DIREC.replaceAll("\\\\", File.separator); +// UPLOAD_DIREC = UPLOAD_DIREC.replaceAll("//", File.separator); +// if (!UPLOAD_DIREC.startsWith(File.separator)) { +// UPLOAD_DIREC = File.separator + UPLOAD_DIREC; +// } +// ArrayList list = new ArrayList<>(); +// +// String liString = UPLOAD_DIREC; +// String Path1 = projectPath; +// +// int i = 0; +// do { +// +// int lastIndexOf = liString.lastIndexOf(File.separator); +// +// String substring = liString.substring(lastIndexOf + 1); +// list.add(substring); +// +// System.out.println(substring); +// +// liString = liString.substring(0, lastIndexOf); +// +// System.out.println("step " + i + " = " + liString); +// i++; +// +// } while (liString.contains(File.separator)); +// +// for (int j = list.size() - 1; j >= 0; j--) { +// Path1 = Path1 + File.separator + list.get(j); +// File projectdir = new File(Path1); +// if (!projectdir.exists()) { +// boolean mkdir = projectdir.mkdirs(); +// System.out.println(Path1 + " folder create = " + mkdir); +// } +// } + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream(filepath); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + log.error(e.getLocalizedMessage()); + } + return f; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java new file mode 100644 index 0000000..67f4769 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/Services/UploadedFileService.java @@ -0,0 +1,43 @@ +package com.realnet.FileUpload.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.FileUpload.Entity.Uploadeddocs; +import com.realnet.FileUpload.Repository.UploadFileRepository; + +@Service +public class UploadedFileService { + @Autowired + private UploadFileRepository Repository; + + public Uploadeddocs Savedata(Uploadeddocs data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Uploadeddocs getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Uploadeddocs update(Uploadeddocs data, Integer id) { + Uploadeddocs old = Repository.findById(id).get(); + old.setUploadedfile_name(data.getUploadedfile_name()); + final Uploadeddocs test = Repository.save(old); + return test; + } + +// get by ref and table name + public List getbyrefandtablename(String ref, String ref_table_name) { + return (List) Repository.findbyrefAnsTableName(ref, ref_table_name); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java new file mode 100644 index 0000000..acb0968 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/controller/Filecontroller.java @@ -0,0 +1,54 @@ +//package com.realnet.FileUpload.controller; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RequestParam; +//import org.springframework.web.bind.annotation.RestController; +//import org.springframework.web.multipart.MultipartFile; +// +//import com.realnet.fileupload.helper.Fileupload_helper; +// +//@RestController +//@RequestMapping("/sureserve/api") +//public class Filecontroller { +// +// @Autowired +// private Fileupload_helper fileuploadhelper; +// +// @PostMapping("/test") +// public ResponseEntity upload(@RequestParam("file") MultipartFile file) { +// +// /* +// * System.out.println(file.getOriginalFilename()); +// * System.out.println(file.getSize()); +// * System.out.println(file.getContentType()); +// */ +// +// try { +// +// if (file.isEmpty()) { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("must contain file"); +// } +// /* +// * if(!file.getContentType().equals("image/png")) { +// * +// * return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR). +// * body("must contain png format"); } +// */ +// +// boolean f = fileuploadhelper.uploadFile(file); +// if (f) { +// return ResponseEntity.ok("File uploaded successfully"); +// } +// } catch (Exception e) { +// e.printStackTrace(); +// } +// +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("something went wrong"); +// +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java new file mode 100644 index 0000000..f6a5ff1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FileUpload/helper/Fileupload_helper.java @@ -0,0 +1,81 @@ +package com.realnet.FileUpload.helper; + +import java.io.File; +import java.io.FileOutputStream; +import java.io.InputStream; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Component; +import org.springframework.web.multipart.MultipartFile; + +@Component +public class Fileupload_helper { + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + public boolean uploadFile(MultipartFile multipartFile) { + boolean f = false; + + try { + + File path = new File(projectPath + UPLOAD_DIREC); + File FileParentDir = new File(path.toString()); + if (!FileParentDir.exists()) { + FileParentDir.mkdirs(); + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream( + projectPath + UPLOAD_DIREC + File.separator + multipartFile.getOriginalFilename()); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + e.printStackTrace(); + } + return f; + } + + public boolean uploadFilewithtimestamp(MultipartFile multipartFile, String timestamp) { + boolean f = false; + + try { + + File path = new File(projectPath + UPLOAD_DIREC); + File FileParentDir = new File(path.toString()); + if (!FileParentDir.exists()) { + FileParentDir.mkdirs(); + } + // reading data + InputStream is = multipartFile.getInputStream(); + byte data[] = new byte[is.available()]; + is.read(data); + + // writing data + + FileOutputStream fos = new FileOutputStream( + projectPath + UPLOAD_DIREC + File.separator + timestamp + multipartFile.getOriginalFilename()); + fos.write(data); + fos.close(); + fos.flush(); + f = true; + + } catch (Exception e) { + + e.printStackTrace(); + } + return f; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java new file mode 100644 index 0000000..72f09d8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.java @@ -0,0 +1,95 @@ +package com.realnet.FromExtensionJson.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import com.realnet.FromExtensionJson.Repository.FromExtensionJson_Repository; +import com.realnet.FromExtensionJson.Services.FromExtensionJson_Service; +@RequestMapping(value = "/FromExtensionJson") +@RestController +public class FromExtensionJson_Controller { + + @Autowired + private FromExtensionJson_Service Service; + + @Autowired + private FromExtensionJson_Repository extensionJson_Repository; + + @PostMapping("/ExtensionJson") + public FromExtensionJson_t Savedata(@RequestBody FromExtensionJson_t data) { + FromExtensionJson_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/ExtensionJson") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/ExtensionJson/{id}") + public FromExtensionJson_t getdetailsbyId(@PathVariable Long id) { + FromExtensionJson_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ExtensionJson/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/ExtensionJson/{id}") + public FromExtensionJson_t update(@RequestBody FromExtensionJson_t data, @PathVariable Long id) { + FromExtensionJson_t update = Service.update(data, id); + return update; + } + + + + + @GetMapping("/ExtensionJson/{formCode}") + public ResponseEntity getdetailsbyFormcode(@PathVariable String formCode) { + FromExtensionJson_t get = extensionJson_Repository.getdetailsbyFormCode(formCode); + // return get; + + if (get != null) { + String jsonObject = get.getJsonObject(); + return ResponseEntity.ok().body(jsonObject); + } else { + return ResponseEntity.notFound().build(); + } + + } + + + @GetMapping("/ListExtensionJson/{formCode}") + public ResponseEntity> getJsonObjectsByFormCodeList(@PathVariable String formCode) { + List jsonObjects = extensionJson_Repository.getJsonObjectsByFormCode(formCode); + if (!jsonObjects.isEmpty()) { + return ResponseEntity.ok().body(jsonObjects); + } else { + return ResponseEntity.notFound().build(); + } + } + + + + + + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java new file mode 100644 index 0000000..ecd0cc8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.java @@ -0,0 +1,20 @@ +package com.realnet.FromExtensionJson.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class FromExtensionJson_t{ + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String form_code; + private String account_id; + @Lob + private String jsonObject; + + } \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java new file mode 100644 index 0000000..4c1596f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.java @@ -0,0 +1,23 @@ +package com.realnet.FromExtensionJson.Repository; + + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; + +@Repository +public interface FromExtensionJson_Repository extends JpaRepository { + + + @Query(value="SELECT * FROM from_extension_json_t WHERE form_code = ?1", nativeQuery = true) + FromExtensionJson_t getdetailsbyFormCode(String formCode); + + @Query(value = "SELECT json_object FROM from_extension_json_t WHERE form_code = ?1", nativeQuery = true) + List getJsonObjectsByFormCode(String formCode); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java new file mode 100644 index 0000000..ac3946b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.java @@ -0,0 +1,39 @@ +package com.realnet.FromExtensionJson.Services; + +import com.realnet.FromExtensionJson.Repository.FromExtensionJson_Repository; +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class FromExtensionJson_Service { + @Autowired + private FromExtensionJson_Repository Repository; + + public FromExtensionJson_t Savedata(FromExtensionJson_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public FromExtensionJson_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public FromExtensionJson_t update(FromExtensionJson_t data, Long id) { + FromExtensionJson_t old = Repository.findById(id).get(); + old.setForm_code(data.getForm_code()); + old.setAccount_id(data.getAccount_id()); + old.setJsonObject(data.getJsonObject()); + final FromExtensionJson_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java new file mode 100644 index 0000000..9d92b7e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.java @@ -0,0 +1,68 @@ +package com.realnet.Gaurav_testing.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; +import com.realnet.Gaurav_testing.Services.Gaurav_testing_Service; + +@RequestMapping(value = "/Gaurav_testing") +@RestController +public class Gaurav_testing_Controller { + + @Autowired + private Gaurav_testing_Service Service; + + @PostMapping("/Gaurav_testing") + public Gaurav_testing_t Savedata(@RequestBody Gaurav_testing_t data) { + Gaurav_testing_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Gaurav_testing_custom") + public Gaurav_testing_t getdetail() { + Gaurav_testing_t get = Service.getdetailcustom(); + return get; + + } + + @PostMapping("/Gaurav_testing_custom") + public Gaurav_testing_t Savecustom(@RequestBody Gaurav_testing_t data) { + Gaurav_testing_t save = Service.savecustom(data); + return save; + } + + @GetMapping("/Gaurav_testing") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Gaurav_testing/{id}") + public Gaurav_testing_t getdetailsbyId(@PathVariable Integer id) { + Gaurav_testing_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Gaurav_testing/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Gaurav_testing/{id}") + public Gaurav_testing_t update(@RequestBody Gaurav_testing_t data, @PathVariable Integer id) { + Gaurav_testing_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java new file mode 100644 index 0000000..ebc915e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.java @@ -0,0 +1,24 @@ +package com.realnet.Gaurav_testing.Entity; + +import lombok.*; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Gaurav_testing_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private int id; + + private String name; + private String email; + private String mobno; + private String address; + private String pincode; + private String description; + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java new file mode 100644 index 0000000..d96f9a1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.java @@ -0,0 +1,13 @@ +package com.realnet.Gaurav_testing.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; + +@Repository +public interface Gaurav_testing_Repository extends JpaRepository { + + Gaurav_testing_t findTopByOrderByIdAsc(); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java new file mode 100644 index 0000000..0c884ab --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.java @@ -0,0 +1,59 @@ +package com.realnet.Gaurav_testing.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.Gaurav_testing.Entity.Gaurav_testing_t; +import com.realnet.Gaurav_testing.Repository.Gaurav_testing_Repository; + +@Service +public class Gaurav_testing_Service { + @Autowired + private Gaurav_testing_Repository Repository; + + public Gaurav_testing_t Savedata(Gaurav_testing_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Gaurav_testing_t getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public Gaurav_testing_t getdetailcustom() { + return Repository.findTopByOrderByIdAsc(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Gaurav_testing_t update(Gaurav_testing_t data, Integer id) { + Gaurav_testing_t old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setEmail(data.getEmail()); + old.setMobno(data.getMobno()); + old.setAddress(data.getAddress()); + old.setPincode(data.getPincode()); + old.setDescription(data.getDescription()); + final Gaurav_testing_t test = Repository.save(old); + return test; + } + + public Gaurav_testing_t savecustom(Gaurav_testing_t data) { + + Gaurav_testing_t old = new Gaurav_testing_t(); + old.setName(data.getName()); + old.setEmail(data.getEmail()); + old.setMobno(data.getMobno()); + old.setAddress(data.getAddress()); + old.setPincode(data.getPincode()); + final Gaurav_testing_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java new file mode 100644 index 0000000..05406a2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Controller/NotController.java @@ -0,0 +1,36 @@ +package com.realnet.Notification.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Notification.Entity.NotEntity; +import com.realnet.Notification.Repository.NotRepo; + +@RestController +@RequestMapping("/notification") +public class NotController { + + @Autowired + private NotRepo notRepo; + +// @PostMapping("/save_notification") +// public NotEntity Savedata(@RequestBody NotEntity entity) { +// NotEntity dash = notRepo.save(entity) ; +// return dash; +// } + + + @GetMapping("/get_notification") + public List getdetails() { + List dash = notRepo.findTopByOrderByd(); + return dash; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java new file mode 100644 index 0000000..4b2b296 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotEntity.java @@ -0,0 +1,21 @@ +package com.realnet.Notification.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class NotEntity { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String notification; + private String time; + private Long user_id; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotificationService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotificationService.java new file mode 100644 index 0000000..977cdf9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Entity/NotificationService.java @@ -0,0 +1,40 @@ +package com.realnet.Notification.Entity; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.Calendar; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.realnet.Notification.Repository.NotRepo; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class NotificationService { + + @Autowired + private NotRepo notRepo; + + @Autowired + private AppUserServiceImpl userService; + + public ResponseEntity setnotification(String jobType, String wireframeName) { + + DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); + Calendar cal = Calendar.getInstance(); + AppUser loggedInUser = userService.getLoggedInUser(); + + NotEntity notEntity = new NotEntity(); + notEntity.setTime(dateFormat.format(cal.getTime())); + notEntity.setNotification(loggedInUser.getUsername() + jobType + wireframeName); + notEntity.setUser_id(loggedInUser.getUserId()); + notRepo.save(notEntity); + + return new ResponseEntity<>("notification set", HttpStatus.CREATED); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java new file mode 100644 index 0000000..1028c35 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Notification/Repository/NotRepo.java @@ -0,0 +1,18 @@ +package com.realnet.Notification.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.Notification.Entity.NotEntity; + +@Repository +public interface NotRepo extends JpaRepository{ + + @Query(value = "select * from not_entity order by id desc limit 10", nativeQuery = true) + List findTopByOrderByd(); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java new file mode 100644 index 0000000..22e6c0a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/AppConfig.java @@ -0,0 +1,7 @@ +package com.realnet.Payment.Paytm; + +public class AppConfig { + public static final String MID="RHLBnF070397707073"; + public static final String MKEY="BXWmXtYo858BTG"; + public static final String WEBSITE="WEBSTAGING"; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java new file mode 100644 index 0000000..5929218 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPageController.java @@ -0,0 +1,19 @@ +//package com.realnet.Payment.Paytm; +// +//import org.springframework.stereotype.Controller; +//import org.springframework.web.bind.annotation.RequestMapping; +// +//@Controller +//public class PaytmPageController { +// @RequestMapping("/") +// public String homePage() { +// System.out.println("Request for home page"); +// return "home"; +// } +// @RequestMapping("/about") +// public String aboutPage() { +// System.out.println("Request for about page"); +// return "about"; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java new file mode 100644 index 0000000..44c7986 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Paytm/PaytmPayment.java @@ -0,0 +1,105 @@ +package com.realnet.Payment.Paytm; + +import java.net.URL; +import java.security.SecureRandom; +import java.util.Map; +import java.util.logging.Logger; + +import org.json.JSONObject; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.client.RestTemplate; + +import com.paytm.pg.merchant.PaytmChecksum; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping("/payment") +public class PaytmPayment { + + @PostMapping("/start") + public Map startPayment(@RequestBody Map data) { + + SecureRandom random = new SecureRandom(); + String orderId = "ORDER" + random.nextInt(10000000); + + // param created + JSONObject paytmParams = new JSONObject(); + + // body information + JSONObject body = new JSONObject(); + body.put("requestType", "Payment"); + body.put("mid", AppConfig.MID); + body.put("websiteName", AppConfig.WEBSITE); + body.put("orderId", orderId); + body.put("callbackUrl", "http://localhost:8081/payment-success"); + + JSONObject txnAmount = new JSONObject(); + txnAmount.put("value", data.get("amount")); + txnAmount.put("currency", "INR"); + + JSONObject userInfo = new JSONObject(); + userInfo.put("custId", "CUST_001"); + + body.put("txnAmount", txnAmount); + body.put("userInfo", userInfo); + + String responseData = ""; + ResponseEntity response = null; + + try { + + String checksum = PaytmChecksum.generateSignature(body.toString(), AppConfig.MKEY); + + JSONObject head = new JSONObject(); + head.put("signature", checksum); + + paytmParams.put("body", body); + paytmParams.put("head", head); + + String post_data = paytmParams.toString(); + + /* for Staging */ + URL url = new URL("https://securegw-stage.paytm.in/theia/api/v1/initiateTransaction?mid=" + AppConfig.MID + + "&orderId=" + orderId + ""); + + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_JSON); + HttpEntity> httpEntity = new HttpEntity<>(paytmParams.toMap(), headers); + + // calling api + RestTemplate restTemplate = new RestTemplate(); + response = restTemplate.postForEntity(url.toString(), httpEntity, Map.class); + + System.out.println(response); + + } catch (Exception e) { + log.error(e.getLocalizedMessage()); + + } + + Map body1 = response.getBody(); + body1.put("orderId", orderId); + body1.put("amount", txnAmount.get("value")); + return body1; + } + + public void capturePayment() { + // get the data from client + + // verify the payment + + // database mein bhi update kar do ki payment ho chuka hai... + + // allow user to access the service + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java new file mode 100644 index 0000000..c46560a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayController.java @@ -0,0 +1,89 @@ +package com.realnet.Payment.Razorpay; + +import com.razorpay.*; +import lombok.RequiredArgsConstructor; +import org.json.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Map; +import java.util.UUID; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/payment/razorpay") +public class RazorpayController { + + @Autowired + private RazorpayRepo repo; + + @Value("${razorpay.api.key}") + private String razorpayApiKey; + + @Value("${razorpay.api.secret}") + private String razorpayApiSecret; + + @PostMapping("/create-order") + public void payOrder(@RequestBody Map data) throws RazorpayException { + + int amt = Integer.parseInt(data.get("amount").toString()); + amt = 50; + + RazorpayClient razorpayClient = new RazorpayClient(razorpayApiKey, razorpayApiSecret); + + String trnx = UUID.randomUUID().toString(); + JSONObject orderDetails = createOrderJSON(amt, "INR", "_INV/0001/2023"); + + Order order = razorpayClient.orders.create(orderDetails); + + System.out.println(order); + // Taking record into Our database + RazorpayDTO dto = RazorpayDTO.builder().orderId(order.get("order_id")).bodyField(String.valueOf(order)).build(); + repo.save(dto); + } + + @PostMapping("/verify-payment") + public ResponseEntity verifyPayment(@RequestParam("orderId") JSONObject orderId) { + try { + RazorpayClient razorpayClient = new RazorpayClient(razorpayApiKey, razorpayApiSecret); + Payment payment = razorpayClient.payments.fetch(orderId.get("order_id").toString()); + + boolean isSignatureValid = Utils.verifyPaymentSignature(orderId, razorpayApiSecret); + + if (payment != null && payment.get("status").equals("captured") && isSignatureValid) { + return ResponseEntity.ok("Payment successfully verified."); + } else { + return ResponseEntity.badRequest().body("Payment verification failed."); + } + } catch (Exception e) { + + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body("An error occurred during payment verification."); + } + } + + @PostMapping("update-order") + public ResponseEntity updateOrder(@RequestBody Map data) { + + RazorpayDTO current_order = repo.findByOrderId(data.get("order_id").toString()); + current_order.setBodyField(data.toString()); + repo.save(current_order); + +// return ResponseEntity.ok(Map.of("msg", "updated")); + return ResponseEntity.ok("updated"); + + } + + public JSONObject createOrderJSON(Integer amount, String currency, String trxnId) { + JSONObject options = new JSONObject(); + options.put("amount", amount * 100); // amount in paise = Rs*100 + options.put("currency", currency); + options.put("receipt", trxnId); + + return options; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java new file mode 100644 index 0000000..6ec1674 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayDTO.java @@ -0,0 +1,27 @@ +package com.realnet.Payment.Razorpay; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import java.util.UUID; + +@Entity +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class RazorpayDTO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String orderId; + private String bodyField; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java new file mode 100644 index 0000000..d1595af --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Payment/Razorpay/RazorpayRepo.java @@ -0,0 +1,9 @@ +package com.realnet.Payment.Razorpay; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +@Repository +public interface RazorpayRepo extends JpaRepository { + RazorpayDTO findByOrderId(String orderId); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java new file mode 100644 index 0000000..0727b71 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/RealNetApp.java @@ -0,0 +1,31 @@ +package com.realnet; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@SpringBootApplication +@EnableSwagger2 +@EnableTransactionManagement +@EnableJpaAuditing +@EnableCaching +public class RealNetApp extends SpringBootServletInitializer{ + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){ + return builder.sources(RealNetApp.class); + } +// + public static void main(String[] args) { + SpringApplication.run(RealNetApp.class, args); + + + } +} + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java new file mode 100644 index 0000000..4ac3432 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/FileConverterController.java @@ -0,0 +1,229 @@ +package com.realnet.Rpt_builder.Controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.opencsv.CSVWriter; + + +@RestController +@RequestMapping("/rbbuilder/fileconverter") +public class FileConverterController { + +// @PostMapping("/downloadCsv") +// public ResponseEntity downloadCSV(@RequestBody List> dataList) { +// try { +// // Convert dataList to CSV format and provide download +// String csvContent = convertToCSV(dataList); +// +// // Set headers for response +// HttpHeaders headers = new HttpHeaders(); +// headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=data.csv"); +// +// // Send the CSV content as a response +// return new ResponseEntity<>(csvContent, headers, HttpStatus.OK); +// } catch (IOException e) { +// // Handle exception +// return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); +// } +// } +// +// private String convertToCSV(List> dataList) throws IOException { +// StringWriter writer = new StringWriter(); +// CSVWriter csvWriter = new CSVWriter(writer); +// +// // Write headers +// if (!dataList.isEmpty()) { +// Map firstRow = dataList.get(0); +// String[] headers = firstRow.keySet().toArray(new String[0]); +// csvWriter.writeNext(headers); +// +// // Write data +// for (Map data : dataList) { +// String[] rowData = new String[headers.length]; +// for (int i = 0; i < headers.length; i++) { +// Object value = data.get(headers[i]); +// rowData[i] = (value != null) ? value.toString() : ""; +// } +// csvWriter.writeNext(rowData); +// } +// } +// +// // Close CSV writer +// csvWriter.close(); +// +// return writer.toString(); +// } + + @PostMapping("/downloadFile/{format}") + public ResponseEntity downloadFile(@RequestBody List> dataList,@PathVariable String format) { + try { + // Convert dataList to the requested format + byte[] fileContent; + String fileName; + String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + + if ("csv".equalsIgnoreCase(format)) { + fileContent = convertToCSV(dataList).getBytes(); + fileName = "data_" + timestamp + ".csv"; + } else if ("excel".equalsIgnoreCase(format)) { + fileContent = convertToExcel(dataList); + fileName = "data_" + timestamp + ".xlsx"; + } else if ("pdf".equalsIgnoreCase(format)) { + fileContent = convertToPDF(dataList); + fileName = "data_" + timestamp + ".pdf"; + } else { + return new ResponseEntity<>("Unsupported file format", HttpStatus.BAD_REQUEST); + } + // Set headers for response + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); + + // Send the file content as a response + return new ResponseEntity<>(fileContent, headers, HttpStatus.OK); + } catch (IOException e) { + // Handle exception + return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private String convertToCSV(List> dataList) throws IOException { + StringWriter writer = new StringWriter(); + CSVWriter csvWriter = new CSVWriter(writer); + + // Write headers + if (!dataList.isEmpty()) { + Map firstRow = dataList.get(0); + String[] headers = firstRow.keySet().toArray(new String[0]); + csvWriter.writeNext(headers); + + // Write data + for (Map data : dataList) { + String[] rowData = new String[headers.length]; + for (int i = 0; i < headers.length; i++) { + Object value = data.get(headers[i]); + rowData[i] = (value != null) ? value.toString() : ""; + } + csvWriter.writeNext(rowData); + } + } + + // Close CSV writer + csvWriter.close(); + + return writer.toString(); + } + + private byte[] convertToExcel(List> dataList) throws IOException { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Data"); + + // Write headers + if (!dataList.isEmpty()) { + Row headerRow = sheet.createRow(0); + Map firstRow = dataList.get(0); + int cellIndex = 0; + for (String header : firstRow.keySet()) { + Cell cell = headerRow.createCell(cellIndex++); + cell.setCellValue(header); + } + + // Write data + int rowIndex = 1; + for (Map data : dataList) { + Row dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (Object value : data.values()) { + Cell cell = dataRow.createCell(columnIndex++); + if (value != null) { + if (value instanceof Number) { + cell.setCellValue(((Number) value).doubleValue()); + } else { + cell.setCellValue(value.toString()); + } + } + } + } + } + + // Convert workbook to byte array + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + workbook.close(); + return outputStream.toByteArray(); + } + + private byte[] convertToPDF(List> dataList) throws IOException { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PDDocument document = new PDDocument()) { + + PDPage page = new PDPage(); + document.addPage(page); + + try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { + // Set font and size (you can customize these) + contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); + float margin = 50; + float yStart = page.getMediaBox().getHeight() - margin; + float tableWidth = page.getMediaBox().getWidth() - 2 * margin; + float yPosition = yStart; + + // Write headers + Map firstRow = dataList.get(0); + int numberOfColumns = firstRow.size(); + float tableHeight = 20f; // Height of the table (you can adjust this) + + // Set column widths + float[] columnWidths = new float[numberOfColumns]; + float tableHeightStart = yStart - 2 * tableHeight; + float nextXStart = margin; + for (int i = 0; i < numberOfColumns; i++) { + columnWidths[i] = tableWidth / (float) numberOfColumns; + } + + // Write data + for (Map data : dataList) { + contentStream.beginText(); + contentStream.newLineAtOffset(nextXStart, yPosition); + int columnIndex = 0; + for (Object value : data.values()) { + contentStream.showText(value != null ? value.toString() : ""); + contentStream.newLineAtOffset(columnWidths[columnIndex], 0); + columnIndex++; + } + contentStream.endText(); + yPosition -= tableHeight; + } + } + + document.save(byteArrayOutputStream); + return byteArrayOutputStream.toByteArray(); + } catch (IOException e) { + // Handle PDF creation exception + return new byte[0]; + } + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java new file mode 100644 index 0000000..975cda1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.java @@ -0,0 +1,46 @@ +package com.realnet.Rpt_builder.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; +import com.realnet.Rpt_builder.Services.Rpt_builder_Service; + +@RequestMapping(value = "/Rpt_builder") +@RestController +public class Rpt_builder_Controller { + + @Autowired + private Rpt_builder_Service Service; + + @PostMapping("/Rpt_builder") + public Rpt_builder_t Savedata(@RequestBody Rpt_builder_t data) { + Rpt_builder_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder/{id}") + public Rpt_builder_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder/{id}") + public Rpt_builder_t update(@RequestBody Rpt_builder_t data, @PathVariable Long id) { + Rpt_builder_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java new file mode 100644 index 0000000..1b87fd6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Entity/Rpt_builder_t.java @@ -0,0 +1,24 @@ +package com.realnet.Rpt_builder.Entity; + +import lombok.*; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Rpt_builder_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String name; + private String folder; + private String query; + private boolean date_param_flag; + private boolean adhoc_param_flag; + private String adhoc_param_string; + private String Std_param_json; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java new file mode 100644 index 0000000..9f0e48d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Rpt_builder.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; + +@Repository +public interface Rpt_builder_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java new file mode 100644 index 0000000..1198249 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder/Services/Rpt_builder_Service.java @@ -0,0 +1,43 @@ +package com.realnet.Rpt_builder.Services; + +import com.realnet.Rpt_builder.Repository.Rpt_builder_Repository; +import com.realnet.Rpt_builder.Entity.Rpt_builder_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Rpt_builder_Service { + @Autowired + private Rpt_builder_Repository Repository; + + public Rpt_builder_t Savedata(Rpt_builder_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Rpt_builder_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Rpt_builder_t update(Rpt_builder_t data, Long id) { + Rpt_builder_t old = Repository.findById(id).get(); + old.setName(data.getName()); + old.setFolder(data.getFolder()); + old.setQuery(data.getQuery()); + old.setDate_param_flag(data.isDate_param_flag()); + old.setAdhoc_param_flag(data.isAdhoc_param_flag()); + old.setAdhoc_param_string(data.getAdhoc_param_string()); + old.setStd_param_json(data.getStd_param_json()); + final Rpt_builder_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java new file mode 100644 index 0000000..4840256 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.java @@ -0,0 +1,86 @@ +package com.realnet.Rpt_builder2.Controllers; +import java.io.IOException; +import java.util.Iterator; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +@RestController +@RequestMapping("/Rpt_builder2/html") +public class ReportHtmlController { + @Autowired + private Rpt_builder2_Service builder2_Service; + @Autowired + private Rpt_builder2_lines_Repository line_repo; +// @GetMapping(value = "/build_report2/{id}") +// public ResponseEntity build_wireframe2(@PathVariable Long id) throws IOException { +// Rpt_builder2_t reportList = builder2_Service.getdetailsbyId(id); +// String std_param = reportList.getStd_param_html(); +// +// StringBuilder htmlFile = new StringBuilder(); +// +// // Start building the HTML code +// htmlFile.append("
\n"); +// +// // Remove the outer square brackets and split the std_param string to get +// // individual parameter values +// String[] params = std_param.substring(1, std_param.length() - 1).split("\",\""); +// +// for (int i = 0; i < params.length; i++) { +// String param = params[i].replaceAll("\"", ""); // Remove quotation marks from parameter value +// +// // Create the HTML code for each parameter, including the actual parameter value +// htmlFile.append("
\n") +// .append(" \n") +// .append(" \n").append("
\n"); +// } +// +// htmlFile.append("
"); +// +// // Return the HTML code as a response +// return ResponseEntity.ok(htmlFile.toString()); +// } + @GetMapping(value = "/build_report2/{rptbuilderid}") + public ResponseEntity build_wireframe2(@PathVariable Long rptbuilderid) throws IOException { + Rpt_builder2_lines_t rptlines = line_repo.getRpt_builder2_lines(rptbuilderid); + String model = rptlines.getModel(); + JsonParser parser = new JsonParser(); + JsonObject jsonObject = parser.parse(model).getAsJsonObject(); + String std_param = jsonObject.get("std_param_html").getAsString(); + StringBuilder htmlFile = new StringBuilder(); + // Start building the HTML code + htmlFile.append("
\n"); + // Remove the outer square brackets and split the std_param string to get + // individual parameter values + String[] params = std_param.substring(1, std_param.length() - 1).split("\",\""); + for (int i = 0; i < params.length; i++) { + String param = params[i].replaceAll("\"", ""); // Remove quotation marks from parameter value + // Create the HTML code for each parameter, including the actual parameter value + htmlFile.append("
\n") + .append(" \n") + .append(" \n").append("
\n"); + } + htmlFile.append("
"); + // Return the HTML code as a response + return ResponseEntity.ok(htmlFile.toString()); + } +} + + + + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java new file mode 100644 index 0000000..791d4c2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/RpDownloadController.java @@ -0,0 +1,184 @@ +package com.realnet.Rpt_builder2.Controllers; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.StringWriter; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Map; + +import org.apache.pdfbox.pdmodel.PDDocument; +import org.apache.pdfbox.pdmodel.PDPage; +import org.apache.pdfbox.pdmodel.PDPageContentStream; +import org.apache.pdfbox.pdmodel.font.PDType1Font; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.opencsv.CSVWriter; + +@RestController +@RequestMapping(value = "rpt2") +public class RpDownloadController { + + + @PostMapping("/downloadFile/{format}") + public ResponseEntity downloadFile(@RequestBody List> dataList,@PathVariable String format) { + try { + // Convert dataList to the requested format + byte[] fileContent; + String fileName; + String timestamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); + + if ("csv".equalsIgnoreCase(format)) { + fileContent = convertToCSV(dataList).getBytes(); + fileName = "data_" + timestamp + ".csv"; + } else if ("excel".equalsIgnoreCase(format)) { + fileContent = convertToExcel(dataList); + fileName = "data_" + timestamp + ".xlsx"; + } else if ("pdf".equalsIgnoreCase(format)) { + fileContent = convertToPDF(dataList); + fileName = "data_" + timestamp + ".pdf"; + } else { + return new ResponseEntity<>("Unsupported file format", HttpStatus.BAD_REQUEST); + } + // Set headers for response + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + fileName); + + // Send the file content as a response + return new ResponseEntity<>(fileContent, headers, HttpStatus.OK); + } catch (IOException e) { + // Handle exception + return new ResponseEntity<>("Error occurred while processing data", HttpStatus.INTERNAL_SERVER_ERROR); + } + } + + private String convertToCSV(List> dataList) throws IOException { + StringWriter writer = new StringWriter(); + CSVWriter csvWriter = new CSVWriter(writer); + + // Write headers + if (!dataList.isEmpty()) { + Map firstRow = dataList.get(0); + String[] headers = firstRow.keySet().toArray(new String[0]); + csvWriter.writeNext(headers); + + // Write data + for (Map data : dataList) { + String[] rowData = new String[headers.length]; + for (int i = 0; i < headers.length; i++) { + Object value = data.get(headers[i]); + rowData[i] = (value != null) ? value.toString() : ""; + } + csvWriter.writeNext(rowData); + } + } + + // Close CSV writer + csvWriter.close(); + + return writer.toString(); + } + + private byte[] convertToExcel(List> dataList) throws IOException { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Data"); + + // Write headers + if (!dataList.isEmpty()) { + Row headerRow = sheet.createRow(0); + Map firstRow = dataList.get(0); + int cellIndex = 0; + for (String header : firstRow.keySet()) { + Cell cell = headerRow.createCell(cellIndex++); + cell.setCellValue(header); + } + + // Write data + int rowIndex = 1; + for (Map data : dataList) { + Row dataRow = sheet.createRow(rowIndex++); + int columnIndex = 0; + for (Object value : data.values()) { + Cell cell = dataRow.createCell(columnIndex++); + if (value != null) { + if (value instanceof Number) { + cell.setCellValue(((Number) value).doubleValue()); + } else { + cell.setCellValue(value.toString()); + } + } + } + } + } + + // Convert workbook to byte array + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + workbook.close(); + return outputStream.toByteArray(); + } + + private byte[] convertToPDF(List> dataList) throws IOException { + try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); + PDDocument document = new PDDocument()) { + + PDPage page = new PDPage(); + document.addPage(page); + + try (PDPageContentStream contentStream = new PDPageContentStream(document, page)) { + // Set font and size (you can customize these) + contentStream.setFont(PDType1Font.HELVETICA_BOLD, 12); + float margin = 50; + float yStart = page.getMediaBox().getHeight() - margin; + float tableWidth = page.getMediaBox().getWidth() - 2 * margin; + float yPosition = yStart; + + // Write headers + Map firstRow = dataList.get(0); + int numberOfColumns = firstRow.size(); + float tableHeight = 20f; // Height of the table (you can adjust this) + + // Set column widths + float[] columnWidths = new float[numberOfColumns]; + float tableHeightStart = yStart - 2 * tableHeight; + float nextXStart = margin; + for (int i = 0; i < numberOfColumns; i++) { + columnWidths[i] = tableWidth / (float) numberOfColumns; + } + + // Write data + for (Map data : dataList) { + contentStream.beginText(); + contentStream.newLineAtOffset(nextXStart, yPosition); + int columnIndex = 0; + for (Object value : data.values()) { + contentStream.showText(value != null ? value.toString() : ""); + contentStream.newLineAtOffset(columnWidths[columnIndex], 0); + columnIndex++; + } + contentStream.endText(); + yPosition -= tableHeight; + } + } + + document.save(byteArrayOutputStream); + return byteArrayOutputStream.toByteArray(); + } catch (IOException e) { + // Handle PDF creation exception + return new byte[0]; + } + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java new file mode 100644 index 0000000..7aaec4d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.java @@ -0,0 +1,46 @@ +package com.realnet.Rpt_builder2.Controllers; + +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import com.realnet.Rpt_builder2.Services.Rpt_builder2_Service; + +@RequestMapping(value = "/Rpt_builder2") +@RestController +public class Rpt_builder2_Controller { + + @Autowired + private Rpt_builder2_Service Service; + + @PostMapping("/Rpt_builder2") + public Rpt_builder2_t Savedata(@RequestBody Rpt_builder2_t data) { + Rpt_builder2_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder2") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder2/{id}") + public Rpt_builder2_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder2_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder2/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder2/{id}") + public Rpt_builder2_t update(@RequestBody Rpt_builder2_t data, @PathVariable Long id) { + Rpt_builder2_t update = Service.update(data, id); + return update; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java new file mode 100644 index 0000000..8e8c614 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.java @@ -0,0 +1,37 @@ +package com.realnet.Rpt_builder2.Entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; + +import lombok.Data; + +@Entity +@Data +public class Rpt_builder2_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String reportName; + private String description; + private Boolean active; + private Boolean isSql; + + + @JsonManagedReference + @OneToMany(cascade = CascadeType.ALL,mappedBy = "rpt_builder2_t") + private List Rpt_builder2_lines = new ArrayList<>(); + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java new file mode 100644 index 0000000..30f7a0f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.java @@ -0,0 +1,11 @@ +package com.realnet.Rpt_builder2.Repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; + +@Repository +public interface Rpt_builder2_Repository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java new file mode 100644 index 0000000..2731b1f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.java @@ -0,0 +1,49 @@ +package com.realnet.Rpt_builder2.Services; + +import com.realnet.Rpt_builder2.Repository.Rpt_builder2_Repository; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class Rpt_builder2_Service { + @Autowired + private Rpt_builder2_Repository Repository; + + public Rpt_builder2_t Savedata(Rpt_builder2_t data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Rpt_builder2_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Rpt_builder2_t update(Rpt_builder2_t data, Long id) { + Rpt_builder2_t old = Repository.findById(id).get(); +// old.setConn_name(data.getConn_name()); +// old.setDate_param_req(data.getDate_param_req()); +// old.setStd_param_html(data.getStd_param_html()); +// old.setAdhoc_param_html(data.getAdhoc_param_html()); +// old.setColumn_str(data.getColumn_str()); +// old.setSql_str(data.getSql_str()); + + old.setReportName(data.getReportName()); + old.setDescription(data.getDescription()); + old.setActive(data.getActive()); +// old.setFolderName(data.getFolderName()); + + + final Rpt_builder2_t test = Repository.save(old); + return test; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java new file mode 100644 index 0000000..0f97e9a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.java @@ -0,0 +1,128 @@ +package com.realnet.Rpt_builder2_lines.Controllers; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.client.RestTemplate; + +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +import com.realnet.Rpt_builder2_lines.Services.Rpt_builder2_lines_Service; + +@RequestMapping(value = "/Rpt_builder2_lines") +@RestController +public class Rpt_builder2_lines_Controller { + + @Autowired + private Rpt_builder2_lines_Service Service; + + @Autowired + private Rpt_builder2_lines_Repository line_repo; + + @PostMapping("/Rpt_builder2_lines") + public Rpt_builder2_lines_t Savedata(@RequestBody Rpt_builder2_lines_t data) { + Rpt_builder2_lines_t save = Service.Savedata(data); + return save; + } + + @GetMapping("/Rpt_builder2_lines") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Rpt_builder2_lines/{id}") + public Rpt_builder2_lines_t getdetailsbyId(@PathVariable Long id) { + Rpt_builder2_lines_t get = Service.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/Rpt_builder2_lines/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + + @PutMapping("/Rpt_builder2_lines/{id}") + public Rpt_builder2_lines_t update(@RequestBody Rpt_builder2_lines_t data, @PathVariable Long id) { + Rpt_builder2_lines_t update = Service.update(data, id); + return update; + } + + @PutMapping("/update/{id}") + public ResponseEntity updateById(@PathVariable Long id, @RequestBody Rpt_builder2_lines_t outgoing_data) { + Rpt_builder2_lines_t line = line_repo.findById(id).get(); + line.setHeader_id(outgoing_data.getHeader_id()); + line.setModel(outgoing_data.getModel()); + Rpt_builder2_lines_t save = line_repo.save(line); + return new ResponseEntity<>(save, HttpStatus.ACCEPTED); + } + + @GetMapping("/geturlkeybyurl") + public Set getKeysById(@RequestParam String url) { + ResponseEntity response = GET(url); + System.out.println("Response status code: " + response.getStatusCodeValue()); + // Check the class of the response body + if (response.getBody() != null) { + System.out.println("Response body class: " + response.getBody().getClass()); + } + // Check if the response body is an ArrayList + if (response.getBody() instanceof ArrayList) { + ArrayList responseBody = (ArrayList) response.getBody(); + // Assuming you want to extract keys from elements inside the ArrayList, + // you might need to iterate through the list and extract keys from each element. + Set keys = new HashSet<>(); + for (Object element : responseBody) { + if (element instanceof LinkedHashMap) { + LinkedHashMap elementMap = (LinkedHashMap) element; + keys.addAll(elementMap.keySet()); + } + } + return keys; + } else { + return null; + } + } + + public ResponseEntity GET(String get) { + org.springframework.web.client.RestTemplate restTemplate = new org.springframework.web.client.RestTemplate(); + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + return u; + } + + @GetMapping("/fetch_data_url") + public ResponseEntity fetchURL(@RequestParam String url) { + try { + // Create an instance of RestTemplate + RestTemplate restTemplate = new RestTemplate(); + + // Send an HTTP GET request to the provided URL and retrieve the response body as a String + String responseBody = restTemplate.getForObject(url, String.class); + + // Create a Map to hold the URL and body data + Map responseMap = new HashMap<>(); + responseMap.put("url", url); + responseMap.put("body", responseBody); + + // Return the response map as JSON + return ResponseEntity.ok(responseMap); + } catch (Exception e) { + // Handle exceptions, such as invalid URLs or network errors + Map errorMap = new HashMap<>(); + errorMap.put("error", "Failed to fetch URL: " + e.getMessage()); + return ResponseEntity.badRequest().body(errorMap); + } + } + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java new file mode 100644 index 0000000..4c3d0bb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.java @@ -0,0 +1,28 @@ +package com.realnet.Rpt_builder2_lines.Entity; + +import lombok.*; +import javax.persistence.*; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.Rpt_builder2.Entity.Rpt_builder2_t; + +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Rpt_builder2_lines_t { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String header_id; + @Lob + private String model; + + @JsonBackReference + @ManyToOne + private Rpt_builder2_t rpt_builder2_t; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java new file mode 100644 index 0000000..3b35066 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.java @@ -0,0 +1,15 @@ +package com.realnet.Rpt_builder2_lines.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + + +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t; + +@Repository +public interface Rpt_builder2_lines_Repository extends JpaRepository { + @Query(value = "SELECT * FROM rpt_builder2_lines_t where rpt_builder2_t_id =?1", nativeQuery = true) + Rpt_builder2_lines_t getRpt_builder2_lines(Long id); +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java new file mode 100644 index 0000000..09fff0c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.java @@ -0,0 +1,37 @@ +package com.realnet.Rpt_builder2_lines.Services; +import com.realnet.Rpt_builder2_lines.Repository.Rpt_builder2_lines_Repository; +import com.realnet.Rpt_builder2_lines.Entity.Rpt_builder2_lines_t;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class Rpt_builder2_lines_Service { +@Autowired +private Rpt_builder2_lines_Repository Repository; +public Rpt_builder2_lines_t Savedata(Rpt_builder2_lines_t data) { + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Rpt_builder2_lines_t getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Long id) { + Repository.deleteById(id); +} + + +public Rpt_builder2_lines_t update(Rpt_builder2_lines_t data,Long id) { + Rpt_builder2_lines_t old = Repository.findById(id).get(); +old.setHeader_id(data.getHeader_id()); +old.setModel(data.getModel()); +final Rpt_builder2_lines_t test = Repository.save(old); + return test;}} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java new file mode 100644 index 0000000..6f78fb7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Controller/SequenceController.java @@ -0,0 +1,182 @@ +package com.realnet.SequenceGenerator.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.SequenceGenerator.Entity.Sequence; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.SequenceGenerator.repo.SeqRepo; + +@RequestMapping(value = "/sureserve/sequence") +@RestController +public class SequenceController { +// +// @Autowired +// private SeqRepo seqRepo; +// +//// add data +// @PostMapping("/seq") +// public ResponseEntity post(@RequestBody Sequence j) { +// +// Sequence save = seqRepo.save(j); +// return new ResponseEntity<>(save, HttpStatus.OK); +// +// } +// +//// update data +// @PutMapping("/seq/{id}") +// public ResponseEntity update(@PathVariable Long id, @RequestBody Sequence j) { +// Sequence get = seqRepo.findById(id).get(); +// +// get.setCr_prefix(j.getCr_prefix()); +// get.setDate_format(j.getDate_format()); +// get.setIn_prefix(j.getIn_prefix()); +// get.setSequence_size(j.getSequence_size()); +// get.setPr_prefix(j.getPr_prefix()); +// get.setStating_no(j.getStating_no()); +// get.setCurrent_no(j.getCurrent_no()); +// get.setDemonstration(j.getDemonstration()); +// get.setImplementation(j.getImplementation()); +// get.setSequence_code(j.getSequence_code()); +// get.setSequence_name(j.getSequence_name()); +// get.setStating_no(j.getStating_no()); +// get.setSuffix(j.getSuffix()); +// +// Sequence save = seqRepo.save(get); +// return new ResponseEntity<>(save, HttpStatus.OK); +// +// } +// +// // get by id +// @GetMapping("/seq/{id}") +// public ResponseEntity get(@PathVariable Long id) { +// +// Sequence get = seqRepo.findById(id).get(); +// return new ResponseEntity<>(get, HttpStatus.OK); +// +// } +// +// // get all +// @GetMapping("/seq") +// public List getdetails() { +// List get = seqRepo.findAll(); +// return get; +// } +// +// // delete by id +// @DeleteMapping("/seq/{id}") +// public void delete_by_id(@PathVariable Long id) { +// seqRepo.deleteById(id); +// +// } + + + + + + @Autowired + private SeqRepo seqRepo; + + @Autowired + private SequenceService service; + + + @PostMapping("/seq") + public ResponseEntity Savedata(@RequestBody Sequence data) { +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long userId = loggedInUser.getUserId(); +// data.setAccountId(userId); + service.Savedata(data); + return ResponseEntity.ok().build(); + } + + + //create sequence-series + @PostMapping("create") + public ResponseEntity createSequence( + @RequestBody Sequence seq + ) + { + Sequence old = seqRepo.findByPrefixAndSuffix(seq.getPrefix(), seq.getSuffix()).orElse(null); + if(old != null){ + String error = "\nPrefix: " + seq.getPrefix() + "\nSuffix: " + seq.getSuffix(); + return ResponseEntity.status(HttpStatus.CONFLICT).body("Sequence already exists with "+error); + } + + return new ResponseEntity(service.createSequence(seq), HttpStatus.CREATED); + } + + //Testing sequence generation + @GetMapping("/seq/test") + public String generate( + @RequestParam String pre, + @RequestParam(defaultValue = "#{T(java.time.Year).now().toString()}") String suf + ) + { + System.out.println(suf); + return service.GenerateSequence(pre,suf); + } + + + //update Data + @PutMapping("/seq/{id}") + public ResponseEntity updateSequence( + @PathVariable Long id, + @RequestBody Sequence seq + ) { + Sequence old = seqRepo.findById(id).orElse(null); + + if (old != null) { + old.setSequence_size(seq.getSequence_size()); + old.setStarting_no(seq.getStarting_no()); + old.setCurrent_no(seq.getCurrent_no()); + old.setDemonstration(seq.getDemonstration()); + old.setSequence_code(seq.getSequence_code()); + old.setSequence_name(seq.getSequence_name()); + old.setSuffix(seq.getSuffix()); + old.setPrefix(seq.getPrefix()); + old.setSeperator(seq.getSeperator()); + + Sequence savedSequence = seqRepo.save(old); + return new ResponseEntity<>(savedSequence, HttpStatus.OK); + } else { + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } + // get by id + @GetMapping("/seq/{id}") + public ResponseEntity get( + @PathVariable Long id + ) { + + Sequence get = seqRepo.findById(id).get(); + return new ResponseEntity<>(get, HttpStatus.OK); + + } + + // get all + @GetMapping("/seq") + public List getdetails() { + List get = seqRepo.findAll(); + return get; + } + + // delete by id + @DeleteMapping("/seq/{id}") + public void delete_by_id(@PathVariable Long id) { + seqRepo.deleteById(id); + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java new file mode 100644 index 0000000..c418611 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Entity/Sequence.java @@ -0,0 +1,78 @@ +package com.realnet.SequenceGenerator.Entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import lombok.Data; + +@Data +@Entity +public class Sequence { + +// @Id +// @GeneratedValue(strategy = GenerationType.IDENTITY) +// private Long id; +// +// private int stating_no; +// +// private int current_no; +// +// private String date_format; +// +// private String sequence_size; +// +// private String in_prefix; +// private String pr_prefix; +// +// private String seperator; +// +// private String cr_prefix; +// +// private String sequence_name; +// +// private String sequence_code; +// +// private String implementation; +// +// private String suffix; +// private String demonstration; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String sequence_name; + private Integer sequence_size; + private Integer starting_no; + private Integer current_no; + private String prefix; + private String seperator; + private String sequence_code; + private String suffix; + + private String demonstration; + + public Sequence(Long id, String sequence_name, Integer sequence_size, Integer stating_no, Integer current_no, String prefix, String seperator, String sequence_code, String suffix, String demonstration) { + this.id = id; + this.sequence_name = sequence_name; + this.sequence_size = sequence_size; + this.starting_no = stating_no; + this.current_no = current_no; + this.prefix = prefix; + this.seperator = seperator; + this.sequence_code = sequence_code; + this.suffix = suffix; + this.demonstration = demonstration; + } + + public Sequence() { + this.sequence_name = "RIS-Seq"; + this.sequence_size = 5; + this.starting_no = 1; + this.current_no = 1; + this.prefix = "RIS"; + this.seperator = "/"; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java new file mode 100644 index 0000000..56203f1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/Service/SequenceService.java @@ -0,0 +1,123 @@ +package com.realnet.SequenceGenerator.Service; + +import java.text.DateFormat; +import java.text.DecimalFormat; +import java.text.SimpleDateFormat; +import java.util.Date; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.SequenceGenerator.Entity.Sequence; +import com.realnet.SequenceGenerator.repo.SeqRepo; + +@Service +public class SequenceService { + +// +// @Autowired +// private SeqRepo seqRepo; +// +// public String GenerateSequence(String name, Long id) { +// +// String prefix ="PR"; +// int i =1; +// String format = ""; +// +// Sequence s = seqRepo.findById(id).get(); +// +// int starting_no = s.getStating_no(); +// String date_format = s.getDate_format(); +// String digit = s.getSequence_size(); +// String seperator = s.getSeperator(); +// int current_no = s.getCurrent_no(); +// +// if (name.equalsIgnoreCase("in_prefix")) { +// prefix=s.getIn_prefix(); +// } +// if (name.equalsIgnoreCase("pr_prefix")) { +// prefix=s.getPr_prefix(); +// } +// if (name.equalsIgnoreCase("cr_prefix")) { +// prefix=s.getCr_prefix(); +// } +// +// Date date = new Date(); +// +//// DateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); +// DateFormat dateFormat = new SimpleDateFormat(date_format); +// +// String format2 = dateFormat.format(date); +// +//// final DecimalFormat decimalFormat = new DecimalFormat("0000"); +// final DecimalFormat decimalFormat = new DecimalFormat(digit); +// +// if (current_no != 0) { +// format = decimalFormat.format(current_no); +// +// }else { +// format = decimalFormat.format(starting_no); +// +// } +// +// String str = prefix + seperator + format2 + seperator + format; +// +// s.setCurrent_no(starting_no+1); +// s.setDemonstration(str); +// seqRepo.save(s); +// return str; +// } + + + @Autowired + private SeqRepo seqRepo; + + public Sequence createSequence(Sequence seq){ + return seqRepo.save(seq); + } + + + public Sequence Savedata(Sequence data) { + return seqRepo.save(data); + } + + public String GenerateSequence(String pre) { + return GenerateSequence(pre, String.valueOf(java.time.Year.now())); + } + + public String GenerateSequence(String pre, String suf) { + Sequence seq = seqRepo.findByPrefixAndSuffix(pre,suf).orElse(null); + + if(seq == null){ + return "Given Prefix: " + pre + " and Suffix: "+ suf + + "\nDoes not exist try creating the sequence first...."; + } + + String prefix = seq.getPrefix(); + Integer seq_size = seq.getSequence_size(); + + //Current Number Building Logic + if(seq.getCurrent_no() == null) { + seq.setCurrent_no(seq.getStarting_no()); + } + String current_no = String.valueOf( seq.getCurrent_no()+1 ); + if(seq_size == null) seq_size = 5; + while(current_no.length() < seq_size){ + current_no = "0" + current_no; + } + + String suffix = seq.getSuffix(); + String sep = seq.getSeperator(); + + //--- final Sequence --- + String new_seq = prefix + sep + current_no + sep + suffix; + seq.setDemonstration(new_seq); + + // Saving Current-Sequence-State into DataBase + seq.setCurrent_no(seq.getCurrent_no()+1); + seqRepo.save(seq); + return new_seq; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java new file mode 100644 index 0000000..9c657c5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/SequenceGenerator/repo/SeqRepo.java @@ -0,0 +1,15 @@ +package com.realnet.SequenceGenerator.repo; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.SequenceGenerator.Entity.Sequence; +@Repository +public interface SeqRepo extends JpaRepository { + + + + Optional findByPrefixAndSuffix(String pre, String suf); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Extension.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Extension.java new file mode 100644 index 0000000..6e63351 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Extension.java @@ -0,0 +1,34 @@ +package com.realnet.WhoColumn; + + +import lombok.*; +import javax.persistence.*; + +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Extension extends Who_column { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String extn1; + private String extn2; + private String extn3; + private String extn4; + private String extn5; + private String extn6; + private String extn7; + private String extn8; + private String extn9; + private String extn10; + private String extn11; + private String extn12; + private String extn13; + private String extn14; + private String extn15; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Who_column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Who_column.java new file mode 100644 index 0000000..0fd69bb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/WhoColumn/Who_column.java @@ -0,0 +1,45 @@ +package com.realnet.WhoColumn; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Who_column implements Serializable { + + private static final long serialVersionUID = 1L; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java new file mode 100644 index 0000000..37379ad --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_headerController.java @@ -0,0 +1,75 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Services.Api_registery_headerService; + +@RequestMapping(value = "/Api_registery_header") +//@CrossOrigin("*") +@RestController +public class Api_registery_headerController { + @Autowired + private Api_registery_headerService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Api_registery_header") + public Api_registery_header Savedata(@RequestBody Api_registery_header data) { + Api_registery_header save = Service.Savedata(data); + + return save; + } + + @PutMapping("/Api_registery_header/{id}") + public Api_registery_header update(@RequestBody Api_registery_header data, @PathVariable Long id) { + Api_registery_header update = Service.update(data, id); + return update; + } + +// get all with pagination + @GetMapping("/Api_registery_header/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Api_registery_header") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Api_registery_header/{id}") + public Api_registery_header getdetailsbyId(@PathVariable Long id) { + Api_registery_header get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Api_registery_header/{id}") + public void delete_by_id(@PathVariable Long id) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java new file mode 100644 index 0000000..6bfd0f9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/Api_registery_lineController.java @@ -0,0 +1,82 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Services.Api_registery_lineService; + +@RequestMapping(value = "/Api_registery_line") +//@CrossOrigin("*") +@RestController +public class Api_registery_lineController { + @Autowired + private Api_registery_lineService Service; + + @Value("${projectPath}") + private String projectPath; + + @PostMapping("/Api_registery_line") + public Api_registery_line Savedata(@RequestBody Api_registery_line data) { + Api_registery_line save = Service.Savedata(data); + + return save; + } + + @PutMapping("/Api_registery_line/{id}") + public Api_registery_line update(@RequestBody Api_registery_line data, @PathVariable Integer id) { + Api_registery_line update = Service.update(data, id); + return update; + } + +// get all with pagination + @GetMapping("/Api_registery_line/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + + @GetMapping("/Api_registery_line") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Api_registery_line/{id}") + public Api_registery_line getdetailsbyId(@PathVariable Integer id) { + Api_registery_line get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Api_registery_line/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +// get all by header id + @GetMapping("/header/Api_registery_line/{header_id}") + public List getallbyheaderId(@PathVariable Long header_id) { + List get = Service.getLinesbyHeaderid(header_id); + return get; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java new file mode 100644 index 0000000..6686419 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Controllers/GeneratetokenController.java @@ -0,0 +1,50 @@ +package com.realnet.api_registery.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.api_registery.Entity.Token_registery; +import com.realnet.api_registery.Services.GeneratetokenService; + +@RestController +@RequestMapping(value = "/apiregistery") +public class GeneratetokenController { + + @Autowired + private GeneratetokenService generatetokenService; + + @PostMapping("/generateToken") + public String generatetoken(@RequestParam String token_name) throws JsonProcessingException { + + String token = generatetokenService.generatetoken(token_name); + + return token; + + } + + @GetMapping("/getall") + public List getall() { + + List getall = generatetokenService.getall(); + + return getall; + + } + + @DeleteMapping("/delete") + public void delete(@PathVariable Integer id) { + + generatetokenService.delete(id); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java new file mode 100644 index 0000000..2082334 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_header.java @@ -0,0 +1,23 @@ +package com.realnet.api_registery.Entity; + +import lombok.*; +import com.realnet.WhoColumn.Extension; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Api_registery_header extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private String table_name; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java new file mode 100644 index 0000000..67a978b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Api_registery_line.java @@ -0,0 +1,27 @@ +package com.realnet.api_registery.Entity; + +import lombok.*; +import com.realnet.WhoColumn.Extension; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Api_registery_line extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String url; + + private String method; + + private Long header_id; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java new file mode 100644 index 0000000..e1bcfb6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Entity/Token_registery.java @@ -0,0 +1,26 @@ +package com.realnet.api_registery.Entity; + +import lombok.*; +import com.realnet.WhoColumn.Extension; +import javax.persistence.*; +import java.time.LocalDateTime; +import java.util.*; + +@Entity +@Data +public class Token_registery extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String token_name; + + @Lob + private String token; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java new file mode 100644 index 0000000..cbe6bcb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_headerRepository.java @@ -0,0 +1,13 @@ +package com.realnet.api_registery.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.api_registery.Entity.Api_registery_header; + +@Repository +public interface Api_registery_headerRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java new file mode 100644 index 0000000..548ddc6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Api_registery_lineRepository.java @@ -0,0 +1,17 @@ +package com.realnet.api_registery.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.api_registery.Entity.Api_registery_line; + +@Repository +public interface Api_registery_lineRepository extends JpaRepository { + + @Query(value = "select * from api_registery_line where header_id=?1", nativeQuery = true) + List getLinesbyheaderid(Long header_id); + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java new file mode 100644 index 0000000..c3d89eb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Repository/Token_registery_Repository.java @@ -0,0 +1,17 @@ +package com.realnet.api_registery.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.api_registery.Entity.Token_registery; + +@Repository +public interface Token_registery_Repository extends JpaRepository { + + @Query(value = "select * from token_registery where created_by=?1", nativeQuery = true) + + List getallbycreatedby(Long createdby); +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java new file mode 100644 index 0000000..3239189 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_headerService.java @@ -0,0 +1,59 @@ +package com.realnet.api_registery.Services; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.api_registery.Entity.Api_registery_header; +import com.realnet.api_registery.Repository.Api_registery_headerRepository; +import com.realnet.exceptions.ResourceNotFoundException; + +@Service +public class Api_registery_headerService { + @Autowired + private Api_registery_headerRepository Repository; + + public Api_registery_header Savedata(Api_registery_header data) { + + Api_registery_header save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public Api_registery_header getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public Api_registery_header update(Api_registery_header data, Long id) { + Optional old1 = Repository.findById(id); + + if (old1.isPresent()) { + + Api_registery_header old = old1.get(); + + old.setTable_name(data.getTable_name()); + + final Api_registery_header test = Repository.save(old); + return test; + } else { + throw new ResourceNotFoundException("not found"); + } + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java new file mode 100644 index 0000000..c7a3777 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/Api_registery_lineService.java @@ -0,0 +1,67 @@ +package com.realnet.api_registery.Services; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.api_registery.Entity.Api_registery_line; +import com.realnet.api_registery.Repository.Api_registery_lineRepository; +import com.realnet.exceptions.ResourceNotFoundException; + +@Service +public class Api_registery_lineService { + @Autowired + private Api_registery_lineRepository Repository; + + public Api_registery_line Savedata(Api_registery_line data) { + + Api_registery_line save = Repository.save(data); + return save; + } + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + +// get lines by header id + public List getLinesbyHeaderid(Long header_id) { + + List list = Repository.getLinesbyheaderid(header_id); + return list; + } + + public Api_registery_line getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Integer id) { + Repository.deleteById(id); + } + + public Api_registery_line update(Api_registery_line data, Integer id) { + Optional old1 = Repository.findById(id); + + if (old1.isPresent()) { + Api_registery_line old = old1.get(); + old.setUrl(data.getUrl()); + + old.setMethod(data.getMethod()); + + old.setHeader_id(data.getHeader_id()); + + final Api_registery_line test = Repository.save(old); + return test; + } else { + throw new ResourceNotFoundException("not found"); + } + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java new file mode 100644 index 0000000..5401fff --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/api_registery/Services/GeneratetokenService.java @@ -0,0 +1,122 @@ +package com.realnet.api_registery.Services; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.web.client.RestTemplate; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.api_registery.Entity.Token_registery; +import com.realnet.api_registery.Repository.Token_registery_Repository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class GeneratetokenService { + + @Autowired + private AppUserServiceImpl userServiceImpl; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + private Token_registery_Repository token_registery_Repository; + + public String generatetoken(String toekn_name) throws JsonProcessingException { + + AppUser loggedInUser = userServiceImpl.getLoggedInUser(); + + String username = loggedInUser.getUsername(); + + String userPassw = loggedInUser.getUserPassw(); + + StringBuilder builder = new StringBuilder(); + + builder.append( + "{\n" + " \"email\" :\"" + username + "\",\n" + " \"password\" : \"" + userPassw + "\"\n" + "}"); + + String url = "http://localhost:9292"; + String repo = "/token/session"; + + // ADD DATA IN GITEA + + System.out.println(builder.toString()); + + String job_url = url + repo; + + RestTemplate restTemplate = new RestTemplate(); + + String resourceUrl = job_url; + HttpHeaders headers = getHeaders(); + HttpEntity request = new HttpEntity(builder.toString(), headers); + + ResponseEntity res = restTemplate.postForEntity(resourceUrl, request, String.class); + Object object = res.getBody(); + + ObjectMapper mapper = new ObjectMapper(); + String str = mapper.writeValueAsString(object); + + JsonParser parser = new JsonParser(); + JsonElement element = parser.parse(str); + + JsonObject obj = element.getAsJsonObject(); + JsonObject item = obj.get("item").getAsJsonObject(); + + String token = item.get("token").getAsString(); + + Token_registery token_registery = new Token_registery(); + token_registery.setToken(token); + token_registery.setToken_name(toekn_name); + token_registery.setCreatedBy(loggedInUser.getUserId()); + + System.out.println("token is == " + token); + + return token; + + } + + public List getall() { + AppUser loggedInUser = userServiceImpl.getLoggedInUser(); + + Long userId = loggedInUser.getUserId(); + + List list = token_registery_Repository.getallbycreatedby(userId); + + return list; + + } + + public void delete(Integer id) { + + token_registery_Repository.deleteById(id); + + } + + private HttpHeaders getHeaders() { + HttpHeaders headers = new HttpHeaders(); + headers.set("Content-Type", MediaType.APPLICATION_JSON_VALUE); + headers.set("Accept", MediaType.APPLICATION_JSON_VALUE); + return headers; + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java new file mode 100644 index 0000000..cad8884 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/AppConfig.java @@ -0,0 +1,39 @@ +package com.realnet.config; + +import org.modelmapper.ModelMapper; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.realnet.logging.NoLogging; + +@Configuration +public class AppConfig { +// @Bean +// public HibernateJpaSessionFactoryBean sessionFactory() { +// return new HibernateJpaSessionFactoryBean(); +// } + + @NoLogging + @Bean + public ModelMapper modelMapper() { + return new ModelMapper(); + } + + @Bean + public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { + ObjectMapper mapper = new ObjectMapper(); + mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false); + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(mapper); + return converter; + } + + @Bean + public ObjectMapper objectMapper() { + return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java new file mode 100644 index 0000000..1fd68ff --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/CorsFilter.java @@ -0,0 +1,56 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.FilterConfig; +import javax.servlet.ServletException; +import javax.servlet.ServletRequest; +import javax.servlet.ServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import com.realnet.logging.NoLogging; + + +public class CorsFilter implements javax.servlet.Filter { + @NoLogging + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { + HttpServletResponse res = (HttpServletResponse) response; + HttpServletRequest req = (HttpServletRequest) request; + + res.setHeader("Access-Control-Allow-Origin", "*"); + res.setHeader("Access-Control-Allow-Credentials", "true"); + res.setHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT, OPTIONS"); + res.setHeader("Access-Control-Max-Age", "3600"); + res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Connection, User-Agent, authorization, sw-useragent, sw-version"); + //res.setHeader("Access-Control-Allow-Headers", "Access-Control-Allow-Headers, Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers"); + // Just REPLY OK if request method is OPTIONS for CORS (pre-flight) + if ( req.getMethod().equals("OPTIONS") ) { + res.setStatus(HttpServletResponse.SC_OK); + return; + } + chain.doFilter(request, response); + } + +// public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { +// System.out.println("Filtering on..........................................................."); +// HttpServletResponse response = (HttpServletResponse) res; +// response.setHeader("Access-Control-Allow-Origin", "*"); +// response.setHeader("Access-Control-Allow-Credentials", "true"); +// response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE"); +// response.setHeader("Access-Control-Max-Age", "3600"); +// response.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Origin, Accept, Access-Control-Request-Method, Access-Control-Request-Headers"); +// +// chain.doFilter(req, res); +//} + + @NoLogging + @Override + public void destroy() {} + + @NoLogging + @Override + public void init(FilterConfig filterConfig) throws ServletException {} +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java new file mode 100644 index 0000000..78a7a49 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/EmailService.java @@ -0,0 +1,80 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mail.MailException; +import org.springframework.mail.SimpleMailMessage; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class EmailService { + @Autowired + private JavaMailSender mailSender; + + public void sendSimpleMessage(String from, String to, String subject, String text) throws MailException { + SimpleMailMessage message = new SimpleMailMessage(); + log.debug("email to sent.."); + // message.setFrom(from); + message.setTo(to); + message.setSubject(subject); + message.setText(text); + mailSender.send(message); + log.debug("email sent successfully"); + } + + public void sendEmailWithAttachment(String to, String subject, String text) throws MessagingException, IOException { + + MimeMessage msg = mailSender.createMimeMessage(); + + // true = multipart message + MimeMessageHelper helper = new MimeMessageHelper(msg, true); + log.debug("email to sent.."); + helper.setTo(to); + + helper.setSubject(subject); + + // default = text/plain + // helper.setText("Check attachment for image!"); + + // true = text/html + // helper.setText("

Check attachment for image!

", true); + + helper.setText(text, true); + + // hard coded a file path + // FileSystemResource file = new FileSystemResource(new + // File("path/android.png")); + // helper.addAttachment("my_photo.png", new ClassPathResource("android.png")); + mailSender.send(msg); + log.debug("email sent successfully"); + } + + public void constructEmail(String em, String subject, String url) { + SimpleMailMessage email = new SimpleMailMessage(); + email.setSubject(subject); + email.setText(url); + email.setTo(em); + mailSender.send(email); + + } + + // FOR ADD USER VIA ADMIN + public void sendEmail(String sendTo, String subject, String body) { + SimpleMailMessage email = new SimpleMailMessage(); + email.setSubject(subject); + email.setText(body); + email.setTo(sendTo); + mailSender.send(email); + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java new file mode 100644 index 0000000..0db3a18 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/HttpLoggingFilter.java @@ -0,0 +1,521 @@ +//package com.realnet.config; +// +//import java.io.BufferedReader; +//import java.io.ByteArrayInputStream; +//import java.io.ByteArrayOutputStream; +//import java.io.File; +//import java.io.FileWriter; +//import java.io.IOException; +//import java.io.InputStream; +//import java.io.InputStreamReader; +//import java.io.OutputStream; +//import java.io.PrintWriter; +//import java.nio.file.FileSystems; +//import java.nio.file.Path; +//import java.nio.file.Paths; +//import java.text.DateFormat; +//import java.text.SimpleDateFormat; +//import java.util.Collection; +//import java.util.Date; +//import java.util.Enumeration; +//import java.util.HashMap; +//import java.util.Locale; +//import java.util.Map; +// +//import javax.servlet.Filter; +//import javax.servlet.FilterChain; +//import javax.servlet.FilterConfig; +//import javax.servlet.ReadListener; +//import javax.servlet.ServletException; +//import javax.servlet.ServletInputStream; +//import javax.servlet.ServletOutputStream; +//import javax.servlet.ServletRequest; +//import javax.servlet.ServletResponse; +//import javax.servlet.WriteListener; +//import javax.servlet.http.Cookie; +//import javax.servlet.http.HttpServletRequest; +//import javax.servlet.http.HttpServletRequestWrapper; +//import javax.servlet.http.HttpServletResponse; +//import javax.servlet.http.HttpSession; +// +//import org.apache.commons.io.output.TeeOutputStream; +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.ObjectFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Component; +//import org.springframework.web.context.request.RequestContextHolder; +//import org.springframework.web.context.request.ServletRequestAttributes; +// +//import com.realnet.logging1.service.LoggingService; +//import com.realnet.users.entity1.AppUser; +//import com.realnet.users.service1.AppUserServiceImpl; +// +// +// +//@Component +//public class HttpLoggingFilter implements Filter{ +// public static StringBuilder logInfo; +// public static boolean logged=false; +// private final Logger LOGGER = LoggerFactory.getLogger(getClass()); +// public static String sessionLogging = "no"; +// @Autowired +// ObjectFactory httpSessionFactory; +// private AppUserServiceImpl appUserServiceImpl; +// private LoggingService loggingService; +// +// public HttpLoggingFilter(ObjectFactory httpSessionFactory, AppUserServiceImpl appUserServiceImpl, +// LoggingService loggingService) { +// super(); +// this.httpSessionFactory = httpSessionFactory; +// this.appUserServiceImpl = appUserServiceImpl; +// this.loggingService=loggingService; +// } +// +// @Override +// public void init(FilterConfig filterConfig) throws ServletException { +// } +// +// @Override +// public void doFilter(ServletRequest request, ServletResponse response, +// FilterChain chain) throws IOException, ServletException { +// try { +// HttpServletRequest httpServletRequest = (HttpServletRequest) request; +// HttpServletResponse httpServletResponse = (HttpServletResponse) response; +// +// Map requestMap = this.getParameters(httpServletRequest); +// BufferedRequestWrapper bufferedRequest = new BufferedRequestWrapper( +// httpServletRequest); +// BufferedResponseWrapper bufferedResponse = new BufferedResponseWrapper( +// httpServletResponse); +// Date d = new Date(); +// DateFormat simple =new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); +// String timeStamp = simple.format(d); +// String servletPath = httpServletRequest.getServletPath(); +// final StringBuilder logMessage = new StringBuilder( +// "["+timeStamp+"]") +// .append("REST Request - ").append("[HTTP METHOD:") +// .append(httpServletRequest.getMethod()) +// .append("] [PATH INFO:") +// .append(servletPath) +// .append("] [REQUEST PARAMETERS:").append(requestMap) +// .append("] [REQUEST BODY:") +// .append(bufferedRequest.getRequestBody()) +// .append("] [REMOTE ADDRESS:") +// .append(httpServletRequest.getRemoteAddr()).append("]"); +// +// logInfo=logMessage; +// +// chain.doFilter(bufferedRequest, bufferedResponse); +// +// if(!servletPath.startsWith("/token/") || !servletPath.startsWith("/api/")) +// { +// if(httpSessionFactory.getObject().getAttribute("generate_log")==null) { +// Long id = appUserServiceImpl.getLoggedInUser().getUserId(); +// if(loggingService.getOne(id)!=null) { +// httpSessionFactory.getObject().setAttribute("generate_log",loggingService.getOne(id).getGenerateLog()); +// httpSessionFactory.getObject().setAttribute("generate_log",loggingService.getOne(id).getLogLevel()); +// httpSessionFactory.getObject().setAttribute("generate_log",loggingService.getOne(id).getLogFileName()); +// }else { +// httpSessionFactory.getObject().setAttribute("generate_log","N"); +// } +// +// } +// if(!httpSessionFactory.getObject().getAttribute("generate_log").equals("N")) { +// try { +// logMessage.append(" [RESPONSE:").append(bufferedResponse.getContent()).append("]"); +// } catch (Exception ex) { +// System.out.println(ex); +// } +// System.out.println(httpSessionFactory.getObject().getAttribute("LogginLevel")); +// if (httpSessionFactory.getObject().getAttribute("LogginLevel").equals("info")) { +// AppUser u = appUserServiceImpl.getLoggedInUser(); +// if (u != null) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",httpSessionFactory.getObject().getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// logInfo = logMessage; +// fw.write(logInfo.toString() + "\n"); +// fw.close(); +// +// } +// } else if (httpSessionFactory.getObject().getAttribute("LogginLevel").equals("debug") && logged==false) { +// AppUser u = appUserServiceImpl.getLoggedInUser(); +// if (u != null) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",httpSessionFactory.getObject().getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// logInfo = logMessage; +// fw.write(logInfo.toString() + "\n"); +// fw.close(); +// } +// +// } else { +// +// } +// } +// } +// +// } catch (Exception a) { +// throw a; +// } +// +// } +// +// +// +// private Map getParameters(HttpServletRequest request) { +// Map typesafeRequestMap = new HashMap(); +// Enumeration requestParamNames = request.getParameterNames(); +// while (requestParamNames.hasMoreElements()) { +// String requestParamName = (String) requestParamNames.nextElement(); +// String requestParamValue; +// if (requestParamName.equalsIgnoreCase("password")) { +// requestParamValue = "****"; +// } else { +// requestParamValue = request.getParameter(requestParamName); +// } +// typesafeRequestMap.put(requestParamName, requestParamValue); +// } +// return typesafeRequestMap; +// } +// +// @Override +// public void destroy() { +// } +// +// private static final class BufferedRequestWrapper extends +// HttpServletRequestWrapper { +// +// private ByteArrayInputStream bais = null; +// private ByteArrayOutputStream baos = null; +// private BufferedServletInputStream bsis = null; +// private byte[] buffer = null; +// +// public BufferedRequestWrapper(HttpServletRequest req) +// throws IOException { +// super(req); +// // Read InputStream and store its content in a buffer. +// InputStream is = req.getInputStream(); +// this.baos = new ByteArrayOutputStream(); +// byte buf[] = new byte[1024]; +// int read; +// while ((read = is.read(buf)) > 0) { +// this.baos.write(buf, 0, read); +// } +// this.buffer = this.baos.toByteArray(); +// is.close(); +// } +// +// @Override +// public ServletInputStream getInputStream() { +// this.bais = new ByteArrayInputStream(this.buffer); +// this.bsis = new BufferedServletInputStream(this.bais); +// return this.bsis; +// } +// +// String getRequestBody() throws IOException { +// BufferedReader reader = new BufferedReader(new InputStreamReader( +// this.getInputStream())); +// String line = null; +// StringBuilder inputBuffer = new StringBuilder(); +// do { +// line = reader.readLine(); +// if (null != line) { +// inputBuffer.append(line.trim()); +// } +// } while (line != null); +// reader.close(); +// return inputBuffer.toString().trim(); +// } +// +// } +// +// private static final class BufferedServletInputStream extends +// ServletInputStream { +// +// private ByteArrayInputStream bais; +// +// public BufferedServletInputStream(ByteArrayInputStream bais) { +// this.bais = bais; +// } +// +// @Override +// public int available() { +// return this.bais.available(); +// } +// +// @Override +// public int read() { +// return this.bais.read(); +// } +// +// @Override +// public int read(byte[] buf, int off, int len) { +// return this.bais.read(buf, off, len); +// } +// +// @Override +// public boolean isFinished() { +// return false; +// } +// +// @Override +// public boolean isReady() { +// return true; +// } +// +// @Override +// public void setReadListener(ReadListener readListener) { +// +// } +// } +// +// public class TeeServletOutputStream extends ServletOutputStream { +// +// private final TeeOutputStream targetStream; +// +// public TeeServletOutputStream(OutputStream one, OutputStream two) { +// targetStream = new TeeOutputStream(one, two); +// } +// +// @Override +// public void write(int arg0) throws IOException { +// this.targetStream.write(arg0); +// } +// +// public void flush() throws IOException { +// super.flush(); +// this.targetStream.flush(); +// } +// +// public void close() throws IOException { +// super.close(); +// this.targetStream.close(); +// } +// +// @Override +// public boolean isReady() { +// return false; +// } +// +// @Override +// public void setWriteListener(WriteListener writeListener) { +// +// } +// } +// +// +// +//public class BufferedResponseWrapper implements HttpServletResponse { +// +// HttpServletResponse original; +// TeeServletOutputStream tee; +// ByteArrayOutputStream bos; +// +// public BufferedResponseWrapper(HttpServletResponse response) { +// original = response; +// } +// +// public String getContent() { +// return bos.toString(); +// } +// +// public PrintWriter getWriter() throws IOException { +// return original.getWriter(); +// } +// +// public ServletOutputStream getOutputStream() throws IOException { +// if (tee == null) { +// bos = new ByteArrayOutputStream(); +// tee = new TeeServletOutputStream(original.getOutputStream(), +// bos); +// } +// return tee; +// +// } +// +// @Override +// public String getCharacterEncoding() { +// return original.getCharacterEncoding(); +// } +// +// @Override +// public String getContentType() { +// return original.getContentType(); +// } +// +// @Override +// public void setCharacterEncoding(String charset) { +// original.setCharacterEncoding(charset); +// } +// +// @Override +// public void setContentLength(int len) { +// original.setContentLength(len); +// } +// +// @Override +// public void setContentLengthLong(long l) { +// original.setContentLengthLong(l); +// } +// +// @Override +// public void setContentType(String type) { +// original.setContentType(type); +// } +// +// @Override +// public void setBufferSize(int size) { +// original.setBufferSize(size); +// } +// +// @Override +// public int getBufferSize() { +// return original.getBufferSize(); +// } +// +// @Override +// public void flushBuffer() throws IOException { +// tee.flush(); +// } +// +// @Override +// public void resetBuffer() { +// original.resetBuffer(); +// } +// +// @Override +// public boolean isCommitted() { +// return original.isCommitted(); +// } +// +// @Override +// public void reset() { +// original.reset(); +// } +// +// @Override +// public void setLocale(Locale loc) { +// original.setLocale(loc); +// } +// +// @Override +// public Locale getLocale() { +// return original.getLocale(); +// } +// +// @Override +// public void addCookie(Cookie cookie) { +// original.addCookie(cookie); +// } +// +// @Override +// public boolean containsHeader(String name) { +// return original.containsHeader(name); +// } +// +// @Override +// public String encodeURL(String url) { +// return original.encodeURL(url); +// } +// +// @Override +// public String encodeRedirectURL(String url) { +// return original.encodeRedirectURL(url); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public String encodeUrl(String url) { +// return original.encodeUrl(url); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public String encodeRedirectUrl(String url) { +// return original.encodeRedirectUrl(url); +// } +// +// @Override +// public void sendError(int sc, String msg) throws IOException { +// original.sendError(sc, msg); +// } +// +// @Override +// public void sendError(int sc) throws IOException { +// original.sendError(sc); +// } +// +// @Override +// public void sendRedirect(String location) throws IOException { +// original.sendRedirect(location); +// } +// +// @Override +// public void setDateHeader(String name, long date) { +// original.setDateHeader(name, date); +// } +// +// @Override +// public void addDateHeader(String name, long date) { +// original.addDateHeader(name, date); +// } +// +// @Override +// public void setHeader(String name, String value) { +// original.setHeader(name, value); +// } +// +// @Override +// public void addHeader(String name, String value) { +// original.addHeader(name, value); +// } +// +// @Override +// public void setIntHeader(String name, int value) { +// original.setIntHeader(name, value); +// } +// +// @Override +// public void addIntHeader(String name, int value) { +// original.addIntHeader(name, value); +// } +// +// @Override +// public void setStatus(int sc) { +// original.setStatus(sc); +// } +// +// @SuppressWarnings("deprecation") +// @Override +// public void setStatus(int sc, String sm) { +// original.setStatus(sc, sm); +// } +// +// @Override +// public String getHeader(String arg0) { +// return original.getHeader(arg0); +// } +// +// @Override +// public Collection getHeaderNames() { +// return original.getHeaderNames(); +// } +// +// @Override +// public Collection getHeaders(String arg0) { +// return original.getHeaders(arg0); +// } +// +// @Override +// public int getStatus() { +// return original.getStatus(); +// } +// +// } +//} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java new file mode 100644 index 0000000..2994c47 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JWTConstant.java @@ -0,0 +1,22 @@ +package com.realnet.config; + +public class JWTConstant { + + // private static final long VALIDITY_TIME_MS = 10 * 24 * 60 * 60 * 1000;// 10 + // days Validity + public static final long VALIDITY_TIME_MS = 2 * 60 * 60 * 1000; // 2 hours validity + + public static final long ACCESS_TOKEN_VALIDITY_SECONDS = 30 * 24 * 60 * 60; + public static final String SECRET_KEY = "realnet"; + public static final String TOKEN_PREFIX = "Bearer "; + public static final String HEADER_STRING = "Authorization"; + public static final String AUTHORITIES_KEY = "scopes"; + + + public static final String JWT_ILLEGAL_ARGUMENT_MESSAGE = "An error occured during getting username from token"; + public static final String JWT_EXPIRED_MESSAGE = "The token is expired and not valid anymore"; + public static final String JWT_SIGNATURE_MESSAGE = "Authentication Failed. Username or Password not valid."; + public static final String UNAUTHORIZED_MESSAGE = "You are not authorized to view the resource"; + public static final String FORBIDDEN_MESSAGE = "You don't have the right to access to this resource"; + public static final String INVALID_DATA_MESSAGE = "One or many parameters in the request's body are invalid"; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java new file mode 100644 index 0000000..12b4ddb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationEntryPoint.java @@ -0,0 +1,37 @@ +package com.realnet.config; + +import java.io.IOException; +import java.io.Serializable; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +import com.realnet.logging.NoLogging; +import com.realnet.logging.SecurityNoLogging; + +@Component +public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable { + + /** + * + */ + private static final long serialVersionUID = 1L; + + /* + * This is invoked when user tries to access a secured REST resource without supplying any credentials + * We should just send a 401 Unauthorized response because there is no 'login page' to redirect to + * Here you can place any message you want + * */ + @NoLogging + @Override + public void commence(HttpServletRequest request, HttpServletResponse response, + AuthenticationException authException) throws IOException { + + //response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Unauthorized"); + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java new file mode 100644 index 0000000..d5b889a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/JwtAuthenticationFilter.java @@ -0,0 +1,104 @@ +package com.realnet.config; + +import java.io.IOException; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.authentication.WebAuthenticationDetailsSource; +import org.springframework.web.filter.OncePerRequestFilter; + +import com.realnet.logging.NoLogging; + +import io.jsonwebtoken.ExpiredJwtException; +import io.jsonwebtoken.SignatureException; + +public class JwtAuthenticationFilter extends OncePerRequestFilter { + + private static final Logger logger = LoggerFactory.getLogger(JwtAuthenticationFilter.class); + + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private TokenProvider jwtTokenUtil; + + + + protected void configure(HttpSecurity http) throws Exception + { + http + .csrf().disable() + .authorizeRequests() + .antMatchers(HttpMethod.OPTIONS,"/path/to/allow").permitAll()//allow CORS option calls + .antMatchers("/resources/**").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .and() + .httpBasic(); + } + + + + + + + @NoLogging + @Override + protected void doFilterInternal(HttpServletRequest req, HttpServletResponse res, FilterChain chain) + throws IOException, ServletException { + String header = req.getHeader(JWTConstant.HEADER_STRING); + //System.out.println("HEADER => {}" + header); + String username = null; + String email = null; + String authToken = null; + if (header != null && header.startsWith(JWTConstant.TOKEN_PREFIX)) { + authToken = header.replace(JWTConstant.TOKEN_PREFIX, ""); + try { + username = jwtTokenUtil.getUsernameFromToken(authToken); + //logger.info("getting username from token : {}" + username); + email = jwtTokenUtil.getEmailFromToken(authToken); + //logger.info("getting email from token : {}" + email); + //System.out.println("email => {}" + email); + + } catch (IllegalArgumentException e) { + logger.error("an error occured during getting username from token", e); + } catch (ExpiredJwtException e) { + logger.warn("the token is expired and not valid anymore", e); + } catch (SignatureException e) { + logger.error("Authentication Failed. Username or Password not valid."); + } + } else { + logger.warn("couldn't find bearer string, will ignore the header"); + } + //if (username != null && SecurityContextHolder.getContext().getAuthentication() == null) { + if (email != null && SecurityContextHolder.getContext().getAuthentication() == null) { + + UserDetails userDetails = userDetailsService.loadUserByUsername(email); + + if (jwtTokenUtil.validateToken(authToken, userDetails)) { + UsernamePasswordAuthenticationToken authentication = jwtTokenUtil.getAuthentication(authToken, + SecurityContextHolder.getContext().getAuthentication(), userDetails); + // UsernamePasswordAuthenticationToken authentication = new + // UsernamePasswordAuthenticationToken(userDetails, null, Arrays.asList(new + // SimpleGrantedAuthority("ROLE_ADMIN"))); + authentication.setDetails(new WebAuthenticationDetailsSource().buildDetails(req)); + logger.debug("authenticated user " + email + ", setting security context"); + SecurityContextHolder.getContext().setAuthentication(authentication); + } + } + chain.doFilter(req, res); + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java new file mode 100644 index 0000000..ced005e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MessageSourceConfig.java @@ -0,0 +1,32 @@ +package com.realnet.config; + +import org.springframework.context.MessageSource; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.support.ReloadableResourceBundleMessageSource; +import org.springframework.validation.beanvalidation.LocalValidatorFactoryBean; + +import com.realnet.logging.NoLogging; + +@Configuration +public class MessageSourceConfig { + + @NoLogging + @Bean + public MessageSource messageSource() { + ReloadableResourceBundleMessageSource messageSource + = new ReloadableResourceBundleMessageSource(); + + messageSource.setBasename("classpath:messages"); + messageSource.setDefaultEncoding("UTF-8"); + return messageSource; + } + @NoLogging + @Bean + public LocalValidatorFactoryBean getValidator() { + LocalValidatorFactoryBean bean = new LocalValidatorFactoryBean(); + bean.setValidationMessageSource(messageSource()); + return bean; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java new file mode 100644 index 0000000..de32e5e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/MyCommandLineRunner.java @@ -0,0 +1,49 @@ +package com.realnet.config; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import com.realnet.Builders.Services.BuilderService; + +@Component +public class MyCommandLineRunner implements CommandLineRunner { + + @Autowired + private BuilderService builderService; + + @Override + public void run(String... args) throws Exception { + + System.out.println("call command line runner..."); + if (args.length == 0) { + System.err.println("Usage: java -jar your-app.jar proj_id profile_id addString"); + builderService.callotherService(); + + System.out.println("call other service"); + + return; + } + if (args.length == 1) { + System.err.println("Usage: java -jar your-app.jar proj_id profile_id addString"); + builderService.callotherService(); + + System.out.println("call other service"); + + return; + } + + } + + public ResponseEntity GET(String get) { + RestTemplate restTemplate = new RestTemplate(); + + ResponseEntity u = restTemplate.getForEntity(get, Object.class); + + return u; + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java new file mode 100644 index 0000000..a483ef8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SecurityConfig.java @@ -0,0 +1,204 @@ +package com.realnet.config; + +import java.util.Arrays; +import java.util.Collections; +import java.util.concurrent.TimeUnit; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.info.ProjectInfoProperties.Build; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.cache.CacheManager; +import org.springframework.cache.caffeine.CaffeineCacheManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.builders.WebSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.access.channel.ChannelProcessingFilter; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; +import org.springframework.web.cors.CorsConfiguration; +import org.springframework.web.cors.CorsConfigurationSource; +import org.springframework.web.cors.UrlBasedCorsConfigurationSource; + +import com.github.benmanes.caffeine.cache.Caffeine; +import com.realnet.logging.NoLogging; + + +/* + * @EnableGlobalMethodSecurity annotation is what enables the @PreAuthorize annotation. + * */ +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) + +public class SecurityConfig extends WebSecurityConfigurerAdapter { + + + + @Autowired + private UserDetailsService userDetailsService; + + @Autowired + private JwtAuthenticationEntryPoint unauthorizedHandler; + + + ///// + + public void configure12(WebSecurity web) throws Exception { + web.ignoring().antMatchers(HttpMethod.OPTIONS, "/**"); + } + + + + + @Bean + protected CorsConfigurationSource corsConfigurationSource() { + final CorsConfiguration configuration = new CorsConfiguration(); + + configuration.setAllowedOrigins(Collections.singletonList("http://localhost:3000")); + configuration.setAllowedMethods(Arrays.asList("HEAD", "GET", "POST", "PUT", "DELETE", "PATCH")); + + // NOTE: setAllowCredentials(true) is important, + // otherwise, the value of the 'Access-Control-Allow-Origin' header in the response + // must not be the wildcard '*' when the request's credentials mode is 'include'. + configuration.setAllowCredentials(true); + + // NOTE: setAllowedHeaders is important! + // Without it, OPTIONS preflight request will fail with 403 Invalid CORS request + configuration.setAllowedHeaders(Arrays.asList( + "Authorization", + "Accept", + "Cache-Control", + "Content-Type", + "Origin", + "ajax", // <-- This is needed for jQuery's ajax request. + "x-csrf-token", + "x-requested-with" + )); + + final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); + source.registerCorsConfiguration("/**", configuration); + return source; + } + + + protected void configure123(HttpSecurity http) throws Exception + { + http + .csrf().disable() + .authorizeRequests() + .antMatchers("/resources/**").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .and() + .httpBasic() + .and() + .oauth2Login() + .and() + .cors(); + + } + + + + + + + @NoLogging + @Override + @Bean + public AuthenticationManager authenticationManagerBean() throws Exception { + return super.authenticationManagerBean(); + } + + @NoLogging + @Autowired + public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(userDetailsService).passwordEncoder(encoder()); + } + + @NoLogging + @Bean + public JwtAuthenticationFilter authenticationTokenFilterBean() throws Exception { + return new JwtAuthenticationFilter(); + } + + @NoLogging + @Override + public void configure(WebSecurity web) throws Exception { + // Filters will not get executed for the resources + web.ignoring().antMatchers("/", "/resources/**", "/static/**", "/public/**", "/webui/**", "/h2-console/**", + "/configuration/**", "/swagger-ui/**", "/swagger-resources/**", "/webjars/**", "/api-docs", + "/api-docs/**", "/v2/api-docs/**", "/*.html", "/**/*.html", "/**/*.css", "/**/*.js", "/**/*.png", + "/**/*.jpg", "/**/*.gif", "/**/*.svg", "/**/*.ico", "/**/*.ttf", "/**/*.woff", "/**/*.otf"); + } + + +// } + + @NoLogging + @Override + protected void configure(HttpSecurity http) throws Exception { + http.csrf().disable() + // Add CORS Filter //http.cors().and().csrf().disable(). + .addFilterBefore(new CorsFilter(), ChannelProcessingFilter.class).authorizeRequests() + .antMatchers("/token/**").permitAll() + .antMatchers("/log2/**").permitAll() + .antMatchers("/api/**").permitAll() +// .antMatchers("/SqlworkbenchSqlcont/**").hasRole("ADMIN") + .anyRequest().authenticated() + .and().exceptionHandling() + .authenticationEntryPoint(unauthorizedHandler).and().sessionManagement() + .sessionCreationPolicy(SessionCreationPolicy.IF_REQUIRED); + http.addFilterBefore(authenticationTokenFilterBean(), UsernamePasswordAuthenticationFilter.class); + + + } + + /* + * http.csrf().disable().exceptionHandling().authenticationEntryPoint( + * unauthorizedHandler).and() + * .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS). + * and().authorizeRequests() .antMatchers("/token/**", + * "/signup").permitAll().antMatchers(HttpMethod.OPTIONS, "/**").permitAll() + * .anyRequest().authenticated(); + * + * http.addFilterBefore(authenticationTokenFilterBean(), + * UsernamePasswordAuthenticationFilter.class); + */ + + /* + * If You want to store encoded password in your databases and authenticate user + * based on encoded password then uncomment the below method and provde an + * encoder + */ + @NoLogging + @Bean + public BCryptPasswordEncoder encoder() { + return new BCryptPasswordEncoder(); + } + + + + @Bean + public Caffeine caffeineConfig() { + return Caffeine.newBuilder().expireAfterWrite(60, TimeUnit.MINUTES); + } + @Bean + public CacheManager cacheManager(Caffeine caffeine) { + CaffeineCacheManager caffeineCacheManager = new CaffeineCacheManager(); + caffeineCacheManager.setCaffeine(caffeine); + return caffeineCacheManager; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java new file mode 100644 index 0000000..6ca6c0c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/SwaggerConfig.java @@ -0,0 +1,132 @@ +package com.realnet.config; + +import static com.google.common.collect.Lists.newArrayList; + +import java.util.Arrays; +import java.util.List; + +import org.joda.time.LocalDate; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.fasterxml.classmate.TypeResolver; +import com.realnet.logging.NoLogging; + +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.builders.ResponseMessageBuilder; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.ApiKey; +import springfox.documentation.service.AuthorizationScope; +import springfox.documentation.service.SecurityReference; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spi.service.contexts.SecurityContext; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +@Configuration +@EnableSwagger2 +public class SwaggerConfig { + + @Autowired + private TypeResolver typeResolver; + + public static final String AUTHORIZATION_HEADER = "Authorization"; + public static final String DEFAULT_INCLUDE_PATTERN = "/api/.*"; + + @NoLogging + private ApiKey apiKey() { + // return new ApiKey("Authorization", "", "header"); // <<< === Create a Header + //return new ApiKey("JWT", "Authorization", "header"); + // (We are createing header named "Authorization" here) + return new ApiKey("JWT", AUTHORIZATION_HEADER, "header"); + + } + + // This path will be called when swagger is loaded first time to get a token + /* + * @Bean public UiConfiguration uiConfig() { return new + * UiConfiguration("session"); } + */ + + @NoLogging + private SecurityContext securityContext() { + return SecurityContext.builder().securityReferences(defaultAuth()).build(); + } + + @NoLogging + private List defaultAuth() { + AuthorizationScope authorizationScope = new AuthorizationScope("global", "accessEverything"); + AuthorizationScope[] authorizationScopes = new AuthorizationScope[1]; + authorizationScopes[0] = authorizationScope; + return Arrays.asList(new SecurityReference("JWT", authorizationScopes)); + } + +// ApiInfo apiInfo() { +// return new ApiInfoBuilder() +// .title("API Reference") +// .version("1.0.0") +// .build(); +// } + + @NoLogging + ApiInfo realItApiInfo() { + return new ApiInfoBuilder() + .title("RealIt APIs") + .version("1.0.0") + .build(); + } + +// @Bean +// public Docket customImplementation() { +// return new Docket(DocumentationType.SWAGGER_2) +// .groupName("public") +// .apiInfo(apiInfo()) +// .securityContexts(Arrays.asList(securityContext())) +// .securitySchemes(newArrayList(apiKey())) +// .select() +// .paths(PathSelectors.any()) +// // .apis(RequestHandlerSelectors.any()) // If you want to list all the apis +// // including springboots own +// .apis(RequestHandlerSelectors.basePackage("com.app.api")) +// .build() +// .pathMapping("/") +// .useDefaultResponseMessages(false) +// .directModelSubstitute(LocalDate.class, String.class) +// .genericModelSubstitutes(ResponseEntity.class); +// } + + @NoLogging + @Bean + public Docket realItCustomeImplementation() { + return new Docket(DocumentationType.SWAGGER_2) + .groupName("realit") + .apiInfo(realItApiInfo()) + .securityContexts(Arrays.asList(securityContext())) + .securitySchemes(newArrayList(apiKey())) + .select() + .paths(PathSelectors.any()) + .apis(RequestHandlerSelectors.basePackage("com.realnet")).build().pathMapping("/") + .useDefaultResponseMessages(false) + .globalResponseMessage(RequestMethod.GET, newArrayList( + new ResponseMessageBuilder() + .code(500) + .message("Internal Server Error").build(), + //.responseModel(new ModelRef("Error")).build(), + new ResponseMessageBuilder() + .code(403) + .message("Forbidden!").build(), + new ResponseMessageBuilder() + .code(400) + .message("Bad Request").build() + //.responseModel(new ModelRef("Error")).build() + )) + .directModelSubstitute(LocalDate.class, String.class) + .genericModelSubstitutes(ResponseEntity.class); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java new file mode 100644 index 0000000..fd3a47f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/config/TokenProvider.java @@ -0,0 +1,135 @@ +package com.realnet.config; + +import java.io.Serializable; +import java.util.Arrays; +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.stereotype.Component; + +import com.realnet.logging.NoLogging; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jws; +import io.jsonwebtoken.JwtParser; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; + +@Component +public class TokenProvider implements Serializable { +// private static final Logger logger = LoggerFactory.getLogger(TokenProvider.class); + + /** + * + */ + private static final long serialVersionUID = 1L; + + // get subject (sub) from token + @NoLogging + public String getUsernameFromToken(String token) { + return getClaimFromToken(token, Claims::getSubject); + } + + @NoLogging + public String getEmailFromToken(String token) { + String email = null; + try { + Claims claims = getAllClaimsFromToken(token); + email = claims.getSubject(); + } catch (Exception e) { + email = null; + } + // logger.info("email = {} ", email); + return email; + } + + @NoLogging + public List getRolesFromToken(String token) { + List roles = null; + try { + Claims claims = getAllClaimsFromToken(token); + roles = Arrays.asList((String) claims.get(JWTConstant.AUTHORITIES_KEY)); + // logger.info("roles = {} ", roles); + } catch (Exception e) { + roles = null; + } + return roles; + } + + // get expiration (exp) from token + public Date getExpirationDateFromToken(String token) { + return getClaimFromToken(token, Claims::getExpiration); + } + + @NoLogging + public T getClaimFromToken(String token, Function claimsResolver) { + final Claims claims = getAllClaimsFromToken(token); + return claimsResolver.apply(claims); + } + + @NoLogging + private Claims getAllClaimsFromToken(String token) { + return Jwts.parser().setSigningKey(JWTConstant.SECRET_KEY).parseClaimsJws(token).getBody(); + } + + @NoLogging + private Boolean isTokenExpired(String token) { + final Date expiration = getExpirationDateFromToken(token); + return expiration.before(new Date()); + } + + @NoLogging + public String generateToken(Authentication authentication) { + final String authorities = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.joining(",")); + // logger.info("authorities = {} ", authorities); + final List AuthorityList = authentication.getAuthorities().stream().map(GrantedAuthority::getAuthority) + .collect(Collectors.toList()); + //logger.info("authentication.getName() = {} ", authentication.getName()); + //logger.info("Authority List = {}", AuthorityList); + return Jwts.builder().setSubject(authentication.getName()) // USER NAME OR EMAIL + .claim(JWTConstant.AUTHORITIES_KEY, authorities) // ROLES + .signWith(SignatureAlgorithm.HS256, JWTConstant.SECRET_KEY).setIssuedAt(new Date(System.currentTimeMillis())) + .setExpiration(new Date(System.currentTimeMillis() + JWTConstant.ACCESS_TOKEN_VALIDITY_SECONDS * 1000)).compact(); + } + + @NoLogging + public Boolean validateToken(String token, UserDetails userDetails) { + // CustomUserDetails user = (CustomUserDetails) userDetails; + // System.out.println("validateToken -> jwtUser : " + user); + // return (username.equals(user.getUsername()) && !isTokenExpired(token)); + + // final String username = getUsernameFromToken(token); + final String email = getEmailFromToken(token); + return (email.equals(userDetails.getUsername()) && !isTokenExpired(token)); + + } + + @NoLogging + UsernamePasswordAuthenticationToken getAuthentication(final String token, final Authentication existingAuth, + final UserDetails userDetails) { + + final JwtParser jwtParser = Jwts.parser().setSigningKey(JWTConstant.SECRET_KEY); + + final Jws claimsJws = jwtParser.parseClaimsJws(token); + + final Claims claims = claimsJws.getBody(); + + final Collection authorities = Arrays + .stream(claims.get(JWTConstant.AUTHORITIES_KEY).toString().split(",")).map(SimpleGrantedAuthority::new) + .collect(Collectors.toList()); + + return new UsernamePasswordAuthenticationToken(userDetails, "", authorities); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java new file mode 100644 index 0000000..08fab8f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.java @@ -0,0 +1,63 @@ +package com.realnet.dashboard_builder_authsec.Controllers; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.dashboard_builder_authsec.Entity.Dashboard; +import com.realnet.dashboard_builder_authsec.Services.DashboardService; + +@RequestMapping(value = "/Dashboard") +// @CrossOrigin("*") +@RestController +public class DashboardController { + @Autowired + private DashboardService Service; + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + @PostMapping("/Dashboard") + public Dashboard Savedata(@RequestBody Dashboard data) { + Dashboard save = Service.Savedata(data); + + System.out.println(save); + return save; + } + + @PutMapping("/Dashboard/{id}") + public Dashboard update(@RequestBody Dashboard data, @PathVariable Integer id) { + Dashboard update = Service.update(data, id); + return update; + } + + @GetMapping("/Dashboard") + public List getdetails() { + List get = Service.getdetails(); + return get; + } + + @GetMapping("/Dashboard/{id}") + public Dashboard getdetailsbyId(@PathVariable Integer id) { + Dashboard get = Service.getdetailsbyId(id); + return get; + } + + @DeleteMapping("/Dashboard/{id}") + public void delete_by_id(@PathVariable Integer id) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java new file mode 100644 index 0000000..0c70660 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Dashboard.java @@ -0,0 +1,27 @@ +package com.realnet.dashboard_builder_authsec.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Dashboard extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String name; + +@Column(length = 5000) +private String model; + +private boolean isdashboard; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Extension.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Extension.java new file mode 100644 index 0000000..ce6d181 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/Extension.java @@ -0,0 +1,34 @@ +package com.realnet.dashboard_builder_authsec.Entity; + import lombok.*; + +import lombok.*; +import javax.persistence.*; + +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Extension extends who_column { + /** + * + */ + private static final long serialVersionUID = 1L; + +private String extn1; + private String extn2; + private String extn3; + private String extn4; + private String extn5; + private String extn6; + private String extn7; + private String extn8; + private String extn9; + private String extn10; + private String extn11; + private String extn12; + private String extn13; + private String extn14; + private String extn15; + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/who_column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/who_column.java new file mode 100644 index 0000000..a3a592a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Entity/who_column.java @@ -0,0 +1,46 @@ +package com.realnet.dashboard_builder_authsec.Entity; + import lombok.*; + import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class who_column implements Serializable{ + + private static final long serialVersionUID = 1L; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java new file mode 100644 index 0000000..ad816bc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.java @@ -0,0 +1,13 @@ +package com.realnet.dashboard_builder_authsec.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.dashboard_builder_authsec.Entity.Dashboard; + +@Repository +public interface DashboardRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java new file mode 100644 index 0000000..0a45ca7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/dashboard_builder_authsec/Services/DashboardService.java @@ -0,0 +1,54 @@ +package com.realnet.dashboard_builder_authsec.Services; +import com.realnet.dashboard_builder_authsec.Repository.DashboardRepository; +import com.realnet.dashboard_builder_authsec.Entity.Dashboard;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; + import org.springframework.stereotype.Service; + +@Service + public class DashboardService { +@Autowired +private DashboardRepository Repository; + + + + + + +public Dashboard Savedata(Dashboard data) { + + + + + + + return Repository.save(data); + } + + +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Dashboard getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Dashboard update(Dashboard data,Integer id) { + Dashboard old = Repository.findById(id).get(); +old.setName(data.getName()); + +old.setModel(data.getModel()); + +old.setIsdashboard (data.isIsdashboard()); + +final Dashboard test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java new file mode 100644 index 0000000..4c2689d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Controllers/Event_ManagementController.java @@ -0,0 +1,100 @@ +package com.realnet.event_management.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.event_management.Entity.Event_Management; +import com.realnet.event_management.Services.Event_ManagementService ; +@RequestMapping(value = "/Event_Management") + @CrossOrigin("*") +@RestController +public class Event_ManagementController { + @Autowired + private Event_ManagementService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + + + + + + + @PostMapping("/Event_Management") + public Event_Management Savedata(@RequestBody Event_Management data) { + Event_Management save = Service.Savedata(data) ; + + + + + + + + + + + + + + + return save; + } +@PutMapping("/Event_Management/{id}") + public Event_Management update(@RequestBody Event_Management data,@PathVariable Integer id ) { + Event_Management update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Event_Management/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Event_Management") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Event_Management") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Event_Management/{id}") + public Event_Management getdetailsbyId(@PathVariable Integer id ) { + Event_Management get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Event_Management/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java new file mode 100644 index 0000000..cbb9261 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Entity/Event_Management.java @@ -0,0 +1,37 @@ +package com.realnet.event_management.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Event_Management extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String practice_match; + +private String admin_name; + +private String ground; + +private String datetime; + +private String name; + + +@Column(length = 2000) +private String description; + +private boolean active; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java new file mode 100644 index 0000000..2a9ed32 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Repository/Event_ManagementRepository.java @@ -0,0 +1,13 @@ +package com.realnet.event_management.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.event_management.Entity.Event_Management; + +@Repository +public interface Event_ManagementRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java new file mode 100644 index 0000000..d4cb3be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/event_management/Services/Event_ManagementService.java @@ -0,0 +1,86 @@ +package com.realnet.event_management.Services; +import com.realnet.event_management.Repository.Event_ManagementRepository; +import com.realnet.event_management.Entity.Event_Management;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class Event_ManagementService { +@Autowired +private Event_ManagementRepository Repository; + + + + + + + + + + + + + + +public Event_Management Savedata(Event_Management data) { + + + + + + + + + + + + + + +Event_Management save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Event_Management getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Event_Management update(Event_Management data,Integer id) { + Event_Management old = Repository.findById(id).get(); +old.setPractice_match(data.getPractice_match()); + +old.setAdmin_name(data.getAdmin_name()); + +old.setGround(data.getGround()); + +old.setDatetime(data.getDatetime()); + +old.setName(data.getName()); + +old.setDescription(data.getDescription()); + +old.setActive (data.isActive()); + +final Event_Management test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java new file mode 100644 index 0000000..6080b83 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/InvalidUserDataException.java @@ -0,0 +1,12 @@ +package com.realnet.exceptions; + +public class InvalidUserDataException extends RuntimeException { + /** + * + */ + private static final long serialVersionUID = 1L; + + public InvalidUserDataException(String message) { + super(message); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java new file mode 100644 index 0000000..df4ba2d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/ResourceNotFoundException.java @@ -0,0 +1,14 @@ +package com.realnet.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class ResourceNotFoundException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public ResourceNotFoundException(String msg) { + super(msg); + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java new file mode 100644 index 0000000..7326c1b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/exceptions/StorageException.java @@ -0,0 +1,18 @@ +package com.realnet.exceptions; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ResponseStatus(value = HttpStatus.NOT_FOUND) +public class StorageException extends RuntimeException { + private static final long serialVersionUID = 1L; + + public StorageException(String message) { + super(message); + } + + public StorageException(String message, Throwable cause) { + super(message, cause); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java new file mode 100644 index 0000000..956eec9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/MainController.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.controller; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import springfox.documentation.annotations.ApiIgnore; + +@ApiIgnore +@Controller // Dont use RestController as this method is mapping to a static file not a JSON +public class MainController { + + @GetMapping("/") + public String index() { + return "index.html"; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java new file mode 100644 index 0000000..c52cf38 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_DynamicTransactionController.java @@ -0,0 +1,119 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; +import com.realnet.fnd.response.Rn_DynamicTransactionResponse; +import com.realnet.fnd.service.Rn_DynamicTransactionService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Dynamic_Transaction" }) +public class Rn_DynamicTransactionController { + + @Autowired + private Rn_DynamicTransactionService rn_dynamicTransactionService; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Dynamic Transaction", response = Rn_DynamicTransactionResponse.class) + @GetMapping("/dynamic_transaction/all") + public Rn_DynamicTransactionResponse getDynamicTx( + @RequestParam(value = "page", defaultValue = "0", required = false) int page, + @RequestParam(value = "size", defaultValue = "20", required = false) int size) { + + Rn_DynamicTransactionResponse resp = new Rn_DynamicTransactionResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = rn_dynamicTransactionService.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY FROM ID (GRID) + @ApiOperation(value = "Get A Dynamic Transaction") + @GetMapping("/dynamic_transaction") + public ResponseEntity> getDynamicTxByFormId( + @RequestParam(value = "form_id") int form_id) { + List rn_dynamic_transaction = rn_dynamicTransactionService.getByFormId(form_id); + return ResponseEntity.ok().body(rn_dynamic_transaction); + } + + // SAVE + @ApiOperation(value = "Add A New Dynamic Transaction", response = Rn_DynamicTransactionResponse.class) + @PostMapping("/dynamic_transaction") + public ResponseEntity createDynamicTx( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Dynamic_Transaction rn_dynamic_transaction) { +// String userId = tokenUtil.getUserId(authToken); +// rn_dynamic_transaction.setCreatedBy(userId); +// rn_dynamic_transaction.setAccountId(userId); + Rn_Dynamic_Transaction savedRn_Dynamic_Transaction = rn_dynamicTransactionService.save(rn_dynamic_transaction); + if (savedRn_Dynamic_Transaction == null) { + throw new ResourceNotFoundException("Dynamic Transaction Is Not Saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Dynamic_Transaction); + } + + // GET BY ID + @ApiOperation(value = "Get a Single Form", response = Rn_Dynamic_Transaction.class) + @GetMapping("/dynamic_transaction/{id}") + public ResponseEntity getById(@PathVariable(value = "id") int id, + @RequestParam(value = "form_id") int form_id) { + Rn_Dynamic_Transaction dynamicTransaction = rn_dynamicTransactionService.getByIdAndFormId(id, form_id); + return ResponseEntity.ok().body(dynamicTransaction); + } + + // UPDATE + @ApiOperation(value = "Update A Dynamic Transaction", response = Rn_Dynamic_Transaction.class) + @PutMapping("/dynamic_transaction/{id}") + public ResponseEntity updateDynamicTx( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @RequestParam(value = "form_id") int form_id, + @Valid @RequestBody Rn_Dynamic_Transaction rn_dynamic_transaction) { +// String userId = tokenUtil.getUserId(authToken); +// rn_dynamic_transaction.setUpdatedBy(userId); + Rn_Dynamic_Transaction updatedDynamicTransaction = rn_dynamicTransactionService.updateByFormId(id, form_id, + rn_dynamic_transaction); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedDynamicTransaction); + } + + // DELETE + @DeleteMapping("/dynamic_transaction/{id}") + public ResponseEntity> deleteDynamicTx(@PathVariable(value = "id") int id) { + boolean deleted = rn_dynamicTransactionService.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java new file mode 100644 index 0000000..8e03bb2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_ExtensionController.java @@ -0,0 +1,155 @@ +package com.realnet.fnd.controller; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.FromExtensionJson.Entity.FromExtensionJson_t; +import com.realnet.FromExtensionJson.Services.FromExtensionJson_Service; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Ext_Fields; +import com.realnet.fnd.service.ExtFieldService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Extension Fields" }) +public class Rn_ExtensionController { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Autowired + private ExtFieldService extFieldService; + + + @Autowired + private FromExtensionJson_Service formeExtensionJson_Service; + + @Autowired(required = false) + // private UserService userService; + private AppUserServiceImpl userService; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Extensions") + @GetMapping("/extension") + public ResponseEntity> getExtensions() { + List result = extFieldService.getAll(); + return ResponseEntity.ok().body(result); + } + + // GET BY ID + @ApiOperation(value = "Get an Extension") + @GetMapping("/extension/{id}") + public ResponseEntity getExtensionById(@PathVariable(value = "id") int id) { + Rn_Ext_Fields rn_ext_fields = extFieldService.getById(id); + return ResponseEntity.ok().body(rn_ext_fields); + } + + // SAVE + @ApiOperation(value = "Add new Extension", response = Rn_Ext_Fields.class) + @PostMapping("/extension") + public ResponseEntity saveExtension( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Ext_Fields rn_ext_fields) { + // String userId = tokenUtil.getUserId(authToken); + AppUser loggedInUser = userService.getLoggedInUser(); + // rn_ext_fields.setCreated_by(loggedInUser.getUserId()); + rn_ext_fields.setAccount_id(loggedInUser.getAccount().getAccount_id()); + Rn_Ext_Fields savedRn_Ext_Fields = extFieldService.save(rn_ext_fields); + if (savedRn_Ext_Fields == null) { + throw new ResourceNotFoundException("Rn_Ext_Field is not saved"); + } + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Ext_Fields); + } + + // UPDATE + @ApiOperation(value = "Update an Extension", response = Rn_Ext_Fields.class) + @PutMapping("/extension/{id}") + public ResponseEntity updateRn_Ext_Field( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") int id, @Valid @RequestBody Rn_Ext_Fields rn_ext_fields) { +// String userId = tokenUtil.getUserId(authToken); +// // teacher.setAccountId(userId); +// rn_ext_fields.setUpdatedBy(userId); + Rn_Ext_Fields updatedRn_Ext_Field = extFieldService.updateById(id, rn_ext_fields); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Ext_Field); + } + + // DELETE + @DeleteMapping("/extension/{id}") + public ResponseEntity> deleteRn_Ext_Field(@PathVariable(value = "id") int id) { + boolean deleted = extFieldService.deleteById(id); + Map response = new HashMap<>(); + if (deleted) { + response.put("deleted", Boolean.TRUE); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + return ResponseEntity.status(HttpStatus.NOT_FOUND).body(response); + } + +// @GetMapping("/lookup_values") +// public ResponseEntity> getLookUps() { +// List result = extFieldService.getLookupValues(); +// System.out.println(result); +// return ResponseEntity.ok().body(result); +// } +// +// @GetMapping("/datatypes") +// public ResponseEntity> getDataTypes() { +// List result = extFieldService.getDataTypeValues(); +// System.out.println(result); +// return ResponseEntity.ok().body(result); +// } + + @GetMapping("/extension_build/{formId}") + public ResponseEntity buildExtension(@RequestParam(value = "account_id", required = false) String account_id, + @RequestParam(value = "form_code", required = false) String form_code, @PathVariable Integer formId) { + + ArrayList list = new ArrayList<>(); + + System.out.println("Acc Id" + account_id + " Form Code = " + form_code); + String formCode = extFieldService.buildExtensionByFormCode(account_id, form_code,formId); + list.add(formCode); + Map res = new HashMap(); + res.put("build", true); + FromExtensionJson_t json_t = new FromExtensionJson_t(); + json_t.setAccount_id(account_id); + json_t.setForm_code(form_code); + + json_t.setJsonObject(formCode); + + formeExtensionJson_Service.Savedata(json_t); + + + return ResponseEntity.ok().body(list); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java new file mode 100644 index 0000000..4c7e642 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.java @@ -0,0 +1,114 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Forms_Setup; +import com.realnet.fnd.response.Rn_Forms_SetupResponse; +import com.realnet.fnd.service.Rn_Forms_Setup_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Forms_Setup" }) +public class Rn_Forms_Setup_Controller { + + @Autowired + private Rn_Forms_Setup_Service rn_forms_setup_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Forms", response = Rn_Forms_SetupResponse.class) + @GetMapping("/form_setup") + public Rn_Forms_SetupResponse getForms( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + Rn_Forms_SetupResponse resp = new Rn_Forms_SetupResponse(); + Pageable paging = PageRequest.of(page, size); + Page result = rn_forms_setup_service.getAll(paging); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Form", response = Rn_Forms_Setup.class) + @GetMapping("/form_setup/{id}") + public ResponseEntity getFormsById(@PathVariable(value = "id") int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_service.getById(id); + return ResponseEntity.ok().body(rn_forms_setup); + } + + // SAVE + @ApiOperation(value = "Add A New Form", response = Rn_Forms_Setup.class) + @PostMapping("/form_setup") + public ResponseEntity createRn_Forms_Setup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Forms_Setup rn_forms_setup) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setCreatedBy(userId); +// rn_forms_setup.setAccountId(userId); + Rn_Forms_Setup savedRn_Forms_Setup = rn_forms_setup_service.save(rn_forms_setup); + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Forms_Setup); + } + + // UPDATE + @ApiOperation(value = "Update A Form", response = Rn_Forms_Setup.class) + @PutMapping("/form_setup/{id}") + public ResponseEntity updateRn_Forms_Setup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Forms_Setup rn_forms_setup) { +// String userId = tokenUtil.getUserId(authToken); +// rn_forms_setup.setUpdatedBy(userId); + Rn_Forms_Setup updatedRn_Forms_Setup = rn_forms_setup_service.updateById(id, rn_forms_setup); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedRn_Forms_Setup); + } + + // DELETE + @DeleteMapping("/form_setup/{id}") + public ResponseEntity> deleteRn_Forms_Setup(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_forms_setup_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + + // BUILD DYNAMIC FORM + @GetMapping("/dynamic_form_build") + public ResponseEntity> buildDynamicForm(@RequestParam(value = "form_id", defaultValue = "0") int form_id) { + System.out.println("Dynamic form build form start"); + rn_forms_setup_service.buildDynamicForm(form_id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + return ResponseEntity.status(HttpStatus.OK).body(response); + + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java new file mode 100644 index 0000000..cc33c32 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Function_Register_Controller.java @@ -0,0 +1,105 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.response.Rn_Function_Register_Response; +import com.realnet.fnd.service.Rn_Function_Register_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Function Register" }) +public class Rn_Function_Register_Controller { + + @Autowired + private Rn_Function_Register_Service rn_menu_register_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Functions", response = Rn_Function_Register_Response.class) + @GetMapping("/function-register") + public Rn_Function_Register_Response getFunctions( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA + //Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_menu_register_service.getAll(paging); + Rn_Function_Register_Response resp = new Rn_Function_Register_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Function", response = Rn_Function_Register.class) + @GetMapping("/function-register/{id}") + public ResponseEntity getFunctionById(@PathVariable(value = "id") Integer id) { + Rn_Function_Register rn_function_register = rn_menu_register_service.getById(id); + return ResponseEntity.ok().body(rn_function_register); + } + + // SAVE + @ApiOperation(value = "Add A New Function", response = Rn_Function_Register.class) + @PostMapping("/function-register") + public ResponseEntity createFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Function_Register rn_function_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_function_register.setCreatedBy(userId); +// rn_function_register.setAccountId(userId); + Rn_Function_Register savedFunction = rn_menu_register_service.save(rn_function_register); + return ResponseEntity.status(HttpStatus.CREATED).body(savedFunction); + } + + // UPDATE + @ApiOperation(value = "Update A Function", response = Rn_Function_Register.class) + @PutMapping("/function-register/{id}") + public ResponseEntity updateFunction( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Function_Register rn_function_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_function_register.setUpdatedBy(userId); + Rn_Function_Register updatedFunction = rn_menu_register_service.updateById(id, rn_function_register); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedFunction); + } + + // DELETE + @DeleteMapping("/function-register/{id}") + public ResponseEntity> deleteFunction(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_menu_register_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java new file mode 100644 index 0000000..a753ba4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Main_Menu_Controller.java @@ -0,0 +1,121 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.response.Rn_Main_Menu_Response; +import com.realnet.fnd.service.Rn_Main_Menu_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "RealNet Menu" }) +public class Rn_Main_Menu_Controller { + + @Autowired + private Rn_Main_Menu_Service rn_main_menu_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Menu", response = Rn_Main_Menu_Response.class) + @GetMapping("/realnet-menu") + public Rn_Main_Menu_Response getMenus( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA : PageRequest.of(page, size,Sort.by("createdAt").descending()); + // UN-SORTED DATA : PageRequest.of(page, size); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_main_menu_service.getAll(paging); + Rn_Main_Menu_Response resp = new Rn_Main_Menu_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu", response = Rn_Main_Menu.class) + @GetMapping("/realnet-menu/{id}") + public ResponseEntity getMenuById(@PathVariable(value = "id") Integer id) { + Rn_Main_Menu rn_menu_register = rn_main_menu_service.getById(id); + return ResponseEntity.ok().body(rn_menu_register); + } + + // getByAccountId + // *** NEED MODIFICATION *** + // GET BY ACCOUNT_ID + @ApiOperation(value = "Get Menu By Accout Id", response = Rn_Main_Menu.class) + @GetMapping("/realnet-menu/user-menu") + public ResponseEntity> getMenuByAccountId( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { +// String accountId = tokenUtil.getUserId(authToken); +// System.out.println("get Menu List by Account Id --> " + accountId); + //List rn_menu_register = rn_main_menu_service.getByAccountId(accountId); + List rn_menu_register = rn_main_menu_service.getAll(); + return ResponseEntity.ok().body(rn_menu_register); + } + + // SAVE + @ApiOperation(value = "Add A New Menu", response = Rn_Main_Menu.class) + @PostMapping("/realnet-menu") + public ResponseEntity createMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Main_Menu rn_main_menu) { +// String userId = tokenUtil.getUserId(authToken); +// rn_main_menu.setCreatedBy(userId); +// rn_main_menu.setAccountId(userId); + Rn_Main_Menu savedMenu = rn_main_menu_service.save(rn_main_menu); + return ResponseEntity.status(HttpStatus.CREATED).body(savedMenu); + } + + // UPDATE + @ApiOperation(value = "Update A Menu", response = Rn_Main_Menu.class) + @PutMapping("/realnet-menu/{id}") + public ResponseEntity updateMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Main_Menu rn_main_menu) { +// String userId = tokenUtil.getUserId(authToken); +// rn_main_menu.setUpdatedBy(userId); + Rn_Main_Menu updatedMenu = rn_main_menu_service.updateById(id, rn_main_menu); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu); + } + + // DELETE + @DeleteMapping("/realnet-menu/{id}") + public ResponseEntity> deleteMenu(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_main_menu_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java new file mode 100644 index 0000000..0c43dda --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Controller.java @@ -0,0 +1,203 @@ +package com.realnet.fnd.controller; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.config.TokenProvider; +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.entity.Rn_Sub_Menu; +import com.realnet.fnd.response.Rn_Forms_SetupResponse; +import com.realnet.fnd.response.Rn_Menu_Group_Response; +import com.realnet.fnd.service.Rn_Function_Register_Service; +import com.realnet.fnd.service.Rn_Menu_Group_Service; +import com.realnet.fnd.service.Rn_Menu_Register_Service; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") +public class Rn_Menu_Group_Controller { + + @Autowired + private Rn_Menu_Group_Service rn_menu_group_service; + + @Autowired + private Rn_Menu_Register_Service rn_menu_register_service; + + @Autowired + private Rn_Function_Register_Service rn_function_register_service; + + @Autowired + private TokenProvider tokenProvider; + + @Autowired(required=false) + private AppUserService userService; + + // GET ALL + @ApiOperation(value = "List of Menu Group", response = Rn_Forms_SetupResponse.class) + @GetMapping("/menu-group") + public Rn_Menu_Group_Response getMenuGroups( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + // sorted data + Pageable paging = PageRequest.of(page, size, Sort.by("createdAt").descending()); + Page result = rn_menu_group_service.getAll(paging); + + Rn_Menu_Group_Response resp = new Rn_Menu_Group_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu Group", response = Rn_Menu_Group_Header.class) + @GetMapping("/menu-group/{id}") + public ResponseEntity getMenuGroupById(@PathVariable(value = "id") Long id) { + Rn_Menu_Group_Header rn_menu_group = rn_menu_group_service.getById(id); + return ResponseEntity.ok().body(rn_menu_group); + } + + // SAVE + @ApiOperation(value = "Save A New Menu Group", response = Rn_Menu_Group_Header.class) + @PostMapping("/menu-group") + public ResponseEntity createMenuGroup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Menu_Group_Header rn_menu_group_header) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_group_header.setCreatedBy(userId); +// rn_menu_group_header.setAccountId(userId); + Rn_Menu_Group_Header savedMenu_group = rn_menu_group_service.save(rn_menu_group_header); + return ResponseEntity.status(HttpStatus.CREATED).body(savedMenu_group); + } + + // UPDATE + @ApiOperation(value = "Update A Menu Group", response = Rn_Menu_Group_Header.class) + @PutMapping("/menu-group/{id}") + public ResponseEntity updateMenuGroup( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Long id, @Valid @RequestBody Rn_Menu_Group_Header rn_menu_group_header) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_group_header.setUpdatedBy(userId); + Rn_Menu_Group_Header updatedMenu_Group = rn_menu_group_service.updateById(id, rn_menu_group_header); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu_Group); + } + + // DELETE + @DeleteMapping("/menu-group/{id}") + public ResponseEntity> deleteMenuGroup(@PathVariable(value = "id") Long id) { + boolean deleted = rn_menu_group_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + + // ---- working code ---- + @ApiOperation(value = "Menus For Individual Group", response = Rn_Forms_SetupResponse.class) + @GetMapping("/load-menus") + public ResponseEntity getMenus( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { + //String userId = tokenProvider.getEmailFromToken(authToken); + AppUser user = userService.getLoggedInUser(); + System.out.println("getMenus controller " + user); + Long menu_group_id = user.getUsrGrp().getUsrGrp(); + System.out.println("getMenus() MENU GROUP ID = " + menu_group_id); + + // from user table, get menu_group_id + //int menu_group_id = 1; + + // rn_menu_group_service.loadmenuGroupByUser(menu_group_id); + // or + + // Rn_Main_Menu rn_main_menu = new Rn_Main_Menu(); + // Rn_Sub_Menu rn_sub_menu = new Rn_Sub_Menu(); + + List mainMenuList = new ArrayList(); + // List subMenuList = new ArrayList(); + + Rn_Menu_Group_Header menu_group_header = rn_menu_group_service.getById(menu_group_id); + List menu_group_lines = menu_group_header.getMenu_group_lines(); + + // menu_group loop start + for (Rn_Menu_Group_Line menu_group_line : menu_group_lines) { + // menu id will be diff + int menu_id = menu_group_line.getMenu_id(); + + // HEADER + Rn_Menu_Register rn_menu_register = rn_menu_register_service.getById(menu_id); + String main_menu_name = rn_menu_register.getMain_menu_name(); + String main_menu_action_name = rn_menu_register.getMain_menu_action_name(); + String main_menu_icon = rn_menu_register.getMain_menu_icon(); + // boolean main_menu_flag = rn_menu_register.getEnable_flag(); + + Rn_Main_Menu rn_main_menu = new Rn_Main_Menu(); + rn_main_menu.setMenu_name(main_menu_name); + rn_main_menu.setMenu_action_link(main_menu_action_name); + rn_main_menu.setMenu_icon(main_menu_icon); + + // LINE + // List subMenuList = new ArrayList(); + System.out.println("Before Fun Register"); + List functions = rn_function_register_service.getByMenuId(menu_id); + System.out.println("After Fun Register"); + if (!functions.isEmpty()) { + List subMenuList = new ArrayList(); + for (Rn_Function_Register function : functions) { + String function_name = function.getFunction_name(); + String function_action_name = function.getFunction_action_name(); + String function_icon = function.getFunction_icon(); + // LocalDate function_end_date = function.getEnd_date(); + // String function_flag = function.getEnable_flag(); + + Rn_Sub_Menu rn_sub_menu = new Rn_Sub_Menu(); + rn_sub_menu.setSub_menu_name(function_name); + rn_sub_menu.setSub_menu_action_link(function_action_name); + rn_sub_menu.setSub_menu_icon(function_icon); + + subMenuList.add(rn_sub_menu); + } // func loop end + rn_main_menu.setSub_menus(subMenuList); + } + // rn_main_menu.setSub_menus(sub_menus); + mainMenuList.add(rn_main_menu); + } // menu_group loop end + + + return ResponseEntity.ok().body(mainMenuList); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java new file mode 100644 index 0000000..059de2f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.java @@ -0,0 +1,57 @@ +package com.realnet.fnd.controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.service.RnGroupMenuLineServiec; + +import io.swagger.annotations.Api; + +@RestController +@RequestMapping(value = "/lines_m", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") +public class Rn_Menu_Group_Line_Controller { + + @Autowired + private RnGroupMenuLineServiec rnGroupMenuLineServiec; + + @PostMapping("/create") + public ResponseEntity add(@RequestBody Rn_Menu_Group_Line rn_Menu_Group_Line){ + Rn_Menu_Group_Line addToDb = this.rnGroupMenuLineServiec.addToDb(rn_Menu_Group_Line); + return ResponseEntity.ok(addToDb); + } + + @GetMapping("/get-one/{id}") + public ResponseEntity getone(@PathVariable("id") int id){ + Rn_Menu_Group_Line getoneById = this.rnGroupMenuLineServiec.getoneById(id); + return ResponseEntity.ok(getoneById); + } + + @GetMapping("/get-all") + public List getAll(){ + List all = this.rnGroupMenuLineServiec.getAll(); + return all; + } + + @PutMapping("/update") + public ResponseEntity update(@RequestBody Rn_Menu_Group_Line rn_Menu_Group_Line){ + Rn_Menu_Group_Line addToDb = this.rnGroupMenuLineServiec.updateToDb(rn_Menu_Group_Line); + return ResponseEntity.ok(addToDb); + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java new file mode 100644 index 0000000..119dc5e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller/Rn_Menu_Register_Controller.java @@ -0,0 +1,125 @@ +package com.realnet.fnd.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.response.Rn_Menu_Register_Response; +import com.realnet.fnd.service.Rn_Menu_Register_Service; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Menu Register" }) +@CrossOrigin("*") +public class Rn_Menu_Register_Controller { + + @Autowired + private Rn_Menu_Register_Service rn_menu_register_service; + +// @Autowired +// private TokenUtil tokenUtil; + + // GET ALL + @ApiOperation(value = "List of Menu", response = Rn_Menu_Register_Response.class) + @GetMapping("/menu-register") + public Rn_Menu_Register_Response getRegisteredMenu( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + + // SORTED DATA + // Pageable paging = PageRequest.of(page, size, + // Sort.by("createdAt").descending()); + + Pageable paging = PageRequest.of(page, size); + Page result = rn_menu_register_service.getAll(paging); + Rn_Menu_Register_Response resp = new Rn_Menu_Register_Response(); + resp.setPageStats(result, true); + resp.setItems(result.getContent()); + return resp; + } + + // GET BY ID + @ApiOperation(value = "Get a Menu", response = Rn_Menu_Register.class) + @GetMapping("/menu-register/{id}") + public ResponseEntity getRegisteredMenuById(@PathVariable(value = "id") Integer id) { + Rn_Menu_Register rn_menu_register = rn_menu_register_service.getById(id); + return ResponseEntity.ok().body(rn_menu_register); + } + + // getByAccountId + // *** NEED MODIFICATION *** + // GET BY ACCOUNT_ID + @ApiOperation(value = "Get Menu By Accout Id", response = Rn_Menu_Register.class) + @GetMapping("/menu-register/user-menu") + public ResponseEntity> getRegisteredMenuByAccountId( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken) { +// String accountId = tokenUtil.getUserId(authToken); +// System.out.println("get Menu List by Account Id --> " + accountId); + // ** NEED TO MODIFY ** +// List rn_menu_register = rn_menu_register_service.getByAccountId(accountId); + List rn_menu_register = rn_menu_register_service.getAll(); + return ResponseEntity.ok().body(rn_menu_register); + } + + // SAVE + @ApiOperation(value = "Add A New Menu", response = Rn_Menu_Register.class) + @PostMapping("/menu-register") + public ResponseEntity SaveMenuRegister( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @Valid @RequestBody Rn_Menu_Register rn_menu_register) { +// String userId = tokenUtil.getUserId(authToken); +// rn_menu_register.setCreatedBy(userId); +// rn_menu_register.setAccountId(userId); + Rn_Menu_Register savedRn_Forms_Setup = rn_menu_register_service.save(rn_menu_register); + return ResponseEntity.status(HttpStatus.CREATED).body(savedRn_Forms_Setup); + } + + // UPDATE + @ApiOperation(value = "Update A Menu", response = Rn_Menu_Register.class) + @PutMapping("/menu-register/{id}") + public ResponseEntity updateMenu( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody Rn_Menu_Register rn_menu_register) { + // String userId = tokenUtil.getUserId(authToken); + // rn_menu_register.setUpdatedBy(userId); + Rn_Menu_Register updatedMenu = rn_menu_register_service.updateById(id, rn_menu_register); + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedMenu); + } + + // DELETE + @DeleteMapping("/menu-register/{id}") + public ResponseEntity> deleteRn_Forms_Setup(@PathVariable(value = "id") Integer id) { + boolean deleted = rn_menu_register_service.deleteById(id); + Map response = new HashMap<>(); + response.put("deleted", Boolean.TRUE); + // response.put("deleted", deleted); + return ResponseEntity.status(HttpStatus.OK).body(response); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java new file mode 100644 index 0000000..07e2197 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/LoadMenuController.java @@ -0,0 +1,283 @@ +package com.realnet.fnd.controller1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Optional; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.fnd.service1.SecmenuDetailService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.service1.AppUserServiceImpl; + +@RequestMapping(value = "/fndMenu", produces = MediaType.APPLICATION_JSON_VALUE) +@RestController +public class LoadMenuController { + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + @Autowired + private MenuDetRepository menuDetRepository; + @Autowired + private GrpMenuAccessRepository grpMenuAccessRepository; + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private SecmenuDetailService secmenuDetailService; + + private static final Logger LOGGER = LoggerFactory.getLogger(LoadMenuController.class); + +// GROUP MENU ACCESS MENU LOAD BY USER + @GetMapping("/menuloadbyuser") + public ResponseEntity setmenuforuser() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); // menu id =0 + for (int i = 0; i < root.size(); i++) { + + // find menu item id by menu id =0 + List menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(), + root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique + for (GrpMenuAccess g : menu) { + + // all submenu by menuid = menu itemid with status + List allSubmenu = grpMenuAccessRepository + .findAllSubmenuByMenuIdWithStatus(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find + + g.setSubMenus(allSubmenu); + } + + } + return new ResponseEntity<>(root, HttpStatus.OK); + } + +// GET LIST OF TABLE + @GetMapping("/loadcolumn/{TABLE_NAME}") + public List getcolumnname(@PathVariable Object TABLE_NAME) { + List colun = menuDetRepository.findcolumnbytablename(TABLE_NAME); + + return colun; + + } + +// GET LIST OF USRGRP + @GetMapping("/listofusrgrp") + public ResponseEntity listofusrgrp() { + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List root = grpMenuAccessRepository.findAllRootsByMenuId(usrGrp); + return new ResponseEntity<>(root, HttpStatus.OK); + + } + +// GET LIST OF USRGRP + @GetMapping("/getuser/{user_id}") + public ResponseEntity getuser(@PathVariable Long user_id) { + + AppUser root = appUserRepository.findById(user_id).orElseThrow(null); + return new ResponseEntity<>(root, HttpStatus.OK); + + } + +// SINK GRPMENU ACCESS TO SEC MENU DET SUBMENU BY PASSING GMENUID + @PutMapping("/sink/{gmenuid}") + public ResponseEntity sync(@PathVariable Long gmenuid, @RequestBody GrpMenuAccess gr) { + + List list = secmenuDetailService.sync(gmenuid, gr); + + return new ResponseEntity<>(list, HttpStatus.CREATED); + + } + +// COMPLETED +// SINK GRPMENU ACCESS FROM MENU DET BY PASSING MENU ITEM ID OF MENU BY LOGIN USER + @PutMapping("/sink1/{gmenuid}") + public ResponseEntity sink(@PathVariable Long gmenuid, @RequestBody GrpMenuAccess gr) { + + AppUser loggedInUser = userService.getLoggedInUser(); + Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + List list = new ArrayList<>(); + MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + + GrpMenuAccess a = grpMenuAccessRepository.findAllRootsByMenuIdAndGrp(gmenuid, usrGrp); + if (a != null) { + + a.setMenuItemId(formenu); + a.setItemSeq(formenu.getItemSeq()); + a.setMenuItemDesc(formenu.getMenuItemDesc()); + a.setModuleName(formenu.getModuleName()); + a.setStatus(formenu.getStatus()); + a.setMain_menu_action_name(formenu.getMain_menu_action_name()); + a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + a.setMenuId(formenu.getMenuId()); + GrpMenuAccess save = grpMenuAccessRepository.save(a); + list.add(save); + + List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); +// List listofsubmenu = grpMenuAccessRepository.findAllSubmenuByMenuitemidAndUsrGrp(gmenuid,usrGrp); +// for (int j = 0; j < listofsubmenu.size(); j++) { + GrpMenuAccess g = grpMenuAccessRepository.findById2(m.getMenuItemId(), usrGrp); + if (g != null) { + + g.setMenuItemId(m); + + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + } else { + + AppUserRole app = appUserRoleRepository.findById(usrGrp).orElseThrow(null); + gr.setUsrGrp(app); + gr.setMenuItemId(m); + + gr.setItemSeq(m.getItemSeq()); + gr.setMenuItemDesc(m.getMenuItemDesc()); + gr.setModuleName(m.getModuleName()); + gr.setStatus(m.getStatus()); + gr.setMain_menu_action_name(m.getMain_menu_action_name()); + gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); + gr.setMenuId(m.getMenuId()); + + gr.setMCreate("true"); + gr.setMDelete("true"); + gr.setMEdit("true"); + gr.setMQuery("true"); + gr.setMVisible("true"); + gr.setIsdisable("true"); + gr.setMexport("true"); + + gr.setCreatedAt(new Date()); + gr.setUpdatedAt(new Date()); + + GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); + list.add(save2); + + } + + } + +// } + } else { + return new ResponseEntity<>(HttpStatus.BAD_REQUEST); + + } + + return new ResponseEntity<>(list, HttpStatus.CREATED); + } + +// DELETE MENU AND SUBMENU INCLUDING GRPMENU ACCESS by menuItemId + @DeleteMapping("/DelMenuWithSub/{menu_item_id}") + public void delete(@PathVariable Long menu_item_id) { + + // delete submenu + List submenu = menuDetRepository.findAllSubmenuByMenuId(menu_item_id); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + + for (GrpMenuAccess g : li) { + grpMenuAccessRepository.delete(g); + } + menuDetRepository.delete(m); + } + + // delete menu + MenuDet formenu = menuDetRepository.findById(menu_item_id).orElseThrow(null); + + List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + + for (GrpMenuAccess a : all) { + grpMenuAccessRepository.delete(a); + } + + menuDetRepository.delete(formenu); + + } + +////LOAD MENU DET' MENU AND SUBMENU BY USER ID +//@GetMapping("/loadmenu/{use_by}") +//public List getmenubyuserid(@PathVariable Long use_by) { +// List root = menuDetRepository.findAllrootsbyuseby(use_by); +// +// for(MenuDet m:root) { +// +// List allSubmenu = menuDetRepository.findAllSubmenuByMenuId(m.getMenuItemId()); +// MenuDet menu = menuDetRepository.findById(m.getMenuItemId()).orElse(null); +// menu.setSubMenus(allSubmenu); +// } +// +// return root; +//} + +////GROUP MENU ACCESS MENU LOAD BY USER +//@GetMapping("/menuloadbyuser") +//public ResponseEntity setmenuforuser(){ +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); +// +// List root = grpMenuAccessRepository.findAllRootsbyusrGrp(usrGrp); +// for(int i =0; i allSubmenu = grpMenuAccessRepository.findAllSubmenu(root.get(i).getParent()); +// menu.setSubMenus(allSubmenu); +// } +// return new ResponseEntity<>(root, HttpStatus.OK); +//} + // DELETE MENU AND SUBMENU IN GRP MENU ACCESS BY MENU ITEM ID + @DeleteMapping("/DelMenu_WithSub1/{menu_item_id}/{usrGrp}") + public void deletemenuandsubmenu(@PathVariable Long menu_item_id, @PathVariable Long usrGrp) { +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long usrGrp = loggedInUser.getUsrGrp().getUsrGrp(); + + // delete submenu + List li = grpMenuAccessRepository.findAllSubmenuByMenuId(menu_item_id, usrGrp); + for (GrpMenuAccess g : li) { + grpMenuAccessRepository.delete(g); + } + + // delete menu + GrpMenuAccess all = grpMenuAccessRepository.findSingle(usrGrp, menu_item_id); + grpMenuAccessRepository.delete(all); + + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java new file mode 100644 index 0000000..0efe67a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/MenuController.java @@ -0,0 +1,404 @@ +package com.realnet.fnd.controller1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Objects; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.entity1.MixMenuNew; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.fnd.service1.GrpMenuAccessServiceImpl; +import com.realnet.fnd.service1.MenuDetServiceImpl; +import com.realnet.fnd.service1.SecmenuDetailService; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.service1.AppUserServiceImpl; + +import io.swagger.annotations.Api; + +@RestController +@RequestMapping(value = "/api1", produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Rn_Menu_Group" }) +@CrossOrigin("*") + +public class MenuController { + + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + @Autowired + private AppUserRepository appUserRepository; + + private MenuDetServiceImpl menuDetServiceImpl; + private GrpMenuAccessServiceImpl grpMenuAccessServiceImpl; + private AppUserServiceImpl appUserServiceImpl; + private MenuDetRepository menuDetRepository; + private GrpMenuAccessRepository grpMenuAccessRepository; + + @Autowired + public MenuController(MenuDetServiceImpl menuDetServiceImpl, GrpMenuAccessServiceImpl grpMenuAccessServiceImpl, + AppUserServiceImpl appUserServiceImpl, MenuDetRepository menuDetRepository, + GrpMenuAccessRepository grpMenuAccessRepository) { + super(); + this.menuDetServiceImpl = menuDetServiceImpl; + this.grpMenuAccessServiceImpl = grpMenuAccessServiceImpl; + this.appUserServiceImpl = appUserServiceImpl; + this.menuDetRepository = menuDetRepository; + this.grpMenuAccessRepository = grpMenuAccessRepository; + } + + @GetMapping("/allmenus") + public ResponseEntity getallmenu() { + List menu = menuDetRepository.getallmenu(); + return new ResponseEntity<>(menu, HttpStatus.OK); + } + +//// // ADD DATA FOR SEC MENU DETAIL + @PostMapping("/Sec_menuDet") + public ResponseEntity adddata(@RequestBody MenuDet menuDet) { + MenuDet save = menuDetRepository.save(menuDet); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + + +// GET BY MENU ITEM ID + @GetMapping("/Sec_menuDet/{menu_item_id}") + public ResponseEntity getdata(@PathVariable Long menu_item_id) { + MenuDet save = menuDetRepository.findById(menu_item_id) + .orElseThrow(() -> new ResourceNotFoundException("id not found")); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// GET MENU AND SUBMENU of MENU DET + @GetMapping("/submenu1") + public List submenu() { + List root = menuDetRepository.findAllRootsByMenuId(); + + for (MenuDet m : root) { + + List allSubmenu = menuDetRepository.findAllSubmenuByMenuId(m.getMenuItemId()); + MenuDet menu = menuDetRepository.findById(m.getMenuItemId()).orElse(null); + menu.setSubMenus(allSubmenu); + } + + return root; + } + +// Get Only SubMenu OF MENU DET + @GetMapping("/submenu1/{menu_item_id}") + public ResponseEntity getonlysubmenu(@PathVariable Long menu_item_id) { + List submenu = menuDetRepository.findAllSubmenuByMenuId(menu_item_id); + + return new ResponseEntity<>(submenu, HttpStatus.OK); + + } + +// GET MENU AND SUBMENU of GROUP MENU ACCESS + @GetMapping("/grpmenuandsubmenu") + public List GRPMENUACCESS() { + List root = grpMenuAccessRepository.findAllRoots(); + + for (int i = 0; i < root.size(); i++) { + + // find menu item id by menu id =0 + List menu = grpMenuAccessRepository.findById(root.get(i).getUsrGrp().getUsrGrp(), + root.get(i).getMenuItemId().getMenuItemId()); // menuItem id will be unique + for (GrpMenuAccess g : menu) { + + List allSubmenu = grpMenuAccessRepository + .findAllSubmenuByMenuId(g.getMenuItemId().getMenuItemId(), g.getUsrGrp().getUsrGrp()); // find + // all + // submenu + // by + // menuid + // = + // menu + // itemid + g.setSubMenus(allSubmenu); + } + + } + + return root; + } + +// Get Only SubMenu of GROUP MENU ACCESS + @GetMapping("/grpmenuandsubmenu/{menu_item_id}") + public ResponseEntity grpmenuaccess(@PathVariable Long menu_item_id) { + List submenu = grpMenuAccessRepository.findAllSubmenu(menu_item_id); + + return new ResponseEntity<>(submenu, HttpStatus.OK); + + } + +// update by menu_item_id + @PutMapping("/submenu1/{menu_item_id}") + public ResponseEntity updatedata(@RequestBody MenuDet d, @PathVariable Long menu_item_id) { + MenuDet menu = menuDetRepository.findById(menu_item_id).orElseThrow(null); + + menu.setItemSeq(d.getItemSeq()); + menu.setMain_menu_action_name(d.getMain_menu_action_name()); + menu.setMain_menu_icon_name(d.getMain_menu_icon_name()); + menu.setMenuId(d.getMenuId()); + menu.setMenuItemDesc(d.getMenuItemDesc()); + menu.setModuleName(d.getModuleName()); + menu.setStatus(d.getStatus()); + + MenuDet save = menuDetRepository.save(menu); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// delete DATA SEC MENU DET WITH GRPMENUACCESS by menuItemId + @DeleteMapping("/menu/{menu_item_id}") + public void delete(@PathVariable Long menu_item_id) { + + List findlist = grpMenuAccessRepository.findlist(menu_item_id); + for (GrpMenuAccess g : findlist) { + grpMenuAccessRepository.delete(g); + } + + MenuDet menu = menuDetRepository.findById(menu_item_id).orElseThrow(null); + menuDetRepository.delete(menu); + } + +// GET GROUP MENU ACCESS BY USR_GROUP with WITH SUBMENU + + @GetMapping("/grpmenuaccess/{usr_grp}") + public ResponseEntity GETGROUPMENU(@PathVariable Long usr_grp) { + + List list = new ArrayList<>(); + GrpMenuAccess grp = grpMenuAccessRepository.findByUsrGrp(usr_grp); + +// List sub = menuDetRepository.findAllSubmenuByMenuId(grp.getMenuItemId().getMenuItemId()); + List sub = menuDetRepository.findAllSubmenuforusrgrp(grp.getMenuItemId().getMenuItemId()); + + list.add(grp); + list.add(sub); + return new ResponseEntity<>(list, HttpStatus.OK); + + } + +// get all + @GetMapping("/getAllData") + public ResponseEntity> getAllGroupMenuAccess() { + List listgrp = grpMenuAccessRepository.findAll(); + return new ResponseEntity<>(listgrp, HttpStatus.OK); + } + +// get by USRGRP WITHOUT SUBMENU + +// @GetMapping("/getById/{userId}") +// public ResponseEntity getGrpMenuByUserId(@PathVariable Long userId){ +// GrpMenuAccess grpMenuAccess=grpMenuAccessRepository.findByUsrGrp(userId); +// if(grpMenuAccess==null)throw new ResourceNotFoundException("no resource found"); +// return new ResponseEntity<>(grpMenuAccess,HttpStatus.OK); +// } + +// update by usr grp id + @PutMapping("/updatemenuaccess/{userId}") + public ResponseEntity updateMenuAccess(@PathVariable Long userId, @RequestBody GrpMenuAccess grpMenuAccess) { + GrpMenuAccess g1 = grpMenuAccessRepository.findByUsrGrp(userId); + if (g1 == null) { + throw new ResourceNotFoundException("no resource found"); + } + g1.setMCreate(grpMenuAccess.getMCreate()); + g1.setMDelete(grpMenuAccess.getMDelete()); + g1.setMEdit(grpMenuAccess.getMEdit()); + g1.setMQuery(grpMenuAccess.getMQuery()); + g1.setMVisible(grpMenuAccess.getMVisible()); + g1.setMexport(grpMenuAccess.getMexport()); + + GrpMenuAccess grpMenuAccess2 = grpMenuAccessRepository.save(g1); + return new ResponseEntity<>(grpMenuAccess2, HttpStatus.OK); + } + +// delete by usrgrp + @DeleteMapping("/deleteMenuAcces/{userId}") + public void deleteMenuAccess(@PathVariable Long userId) { + GrpMenuAccess grpMenuAccess = grpMenuAccessRepository.findByUsrGrp(userId); + if (Objects.isNull(grpMenuAccess)) + throw new ResourceNotFoundException("no resource found"); + grpMenuAccessRepository.delete(grpMenuAccess); + } + +// ADD MULTIPLE DATA FOR GROUP MENU ACCESS + @PostMapping("/group") + public ResponseEntity addgroupmenuaccess(@RequestBody List grp) { + + for (GrpMenuAccess g : grp) { + MenuDet menu1 = menuDetRepository.findById(g.getGmenuid()).orElseThrow(null); + AppUserRole a = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + + g.setUsrGrp(a); + g.setMenuItemId(menu1); + } + List save = grpMenuAccessRepository.saveAll(grp); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// ADD DATA FOR group menu access + @PostMapping("/singlegroup") + public ResponseEntity addsinglegroup(@RequestBody GrpMenuAccess grp) { + + MenuDet menu1 = menuDetRepository.findById(grp.getGmenuid()).orElseThrow(null); + AppUserRole a = appUserRoleRepository.findById(grp.getGrpid()).orElseThrow(null); + + grp.setUsrGrp(a); + grp.setMenuItemId(menu1); + + GrpMenuAccess save = grpMenuAccessRepository.save(grp); + return new ResponseEntity<>(save, HttpStatus.CREATED); + } + +// NEWWWW post MENU AND SUBMENU IN GROUPMENUACCESS + + @PostMapping("/addgrpwithsubmenu") + public ResponseEntity adds(@RequestBody GrpMenuAccess g) { + + List list = new ArrayList<>(); + + Optional a = grpMenuAccessRepository.findbygrpandmenuid(g.getGmenuid(), g.getGrpid()); + if (!a.isPresent()) { + MenuDet me = menuDetRepository.findById(g.getGmenuid()).orElseThrow(null); + g.setMenuItemId(me); + g.setItemSeq(me.getItemSeq()); + g.setMenuItemDesc(me.getMenuItemDesc()); + g.setMenuItemDesc(me.getMenuItemDesc()); + g.setModuleName(me.getModuleName()); + g.setStatus(me.getStatus()); + g.setMain_menu_action_name(me.getMain_menu_action_name()); + g.setMain_menu_icon_name(me.getMain_menu_icon_name()); + g.setMenuId(me.getMenuId()); + + AppUserRole app1 = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + g.setUsrGrp(app1); + g.setMCreate("true"); + g.setMDelete("true"); + g.setMEdit("true"); + g.setMQuery("true"); + g.setMVisible("true"); + g.setIsdisable("true"); + g.setMexport("true"); + + g.setCreatedAt(new Date()); + g.setUpdatedAt(new Date()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + + List submenu = menuDetRepository.findAllSubmenuByMenuId(g.getGmenuid()); + + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + g.setMenuItemId(m); + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + AppUserRole app = appUserRoleRepository.findById(g.getGrpid()).orElseThrow(null); + g.setUsrGrp(app); + g.setMCreate("true"); + g.setMDelete("true"); + g.setMEdit("true"); + g.setMQuery("true"); + g.setMVisible("true"); + g.setIsdisable("true"); + g.setMexport("true"); + + g.setCreatedAt(new Date()); + g.setUpdatedAt(new Date()); + + GrpMenuAccess save = grpMenuAccessRepository.save(g); + list.add(save); + } + + return new ResponseEntity<>(list, HttpStatus.CREATED); + + } else { + return new ResponseEntity<>("already added menu", HttpStatus.BAD_REQUEST); + } + + } + +// GET ALL GRPACCESS BY USRGRP + @GetMapping("getusracces1/{usr_grp}") + public ResponseEntity getallbyusrgrp(@PathVariable Long usr_grp) { + List list = grpMenuAccessRepository.findAllByUsrGrp(usr_grp); + return new ResponseEntity<>(list, HttpStatus.OK); + + } + +// UPDATE GRP MENU ACCESS BY MENU ITEMID + @PutMapping("/update/{menu_item_id}/{usr_grp}") + public ResponseEntity updateMenuGRPAccess(@PathVariable Long menu_item_id, @PathVariable Long usr_grp, + @RequestBody GrpMenuAccess grpMenuAccess) { + GrpMenuAccess g1 = grpMenuAccessRepository.findByUsrgrpAndMenuitemid(menu_item_id, usr_grp); + if (g1 == null) { + throw new ResourceNotFoundException("no resource found"); + } + g1.setMCreate(grpMenuAccess.getMCreate()); + g1.setMDelete(grpMenuAccess.getMDelete()); + g1.setMEdit(grpMenuAccess.getMEdit()); + g1.setMQuery(grpMenuAccess.getMQuery()); + g1.setMVisible(grpMenuAccess.getMVisible()); + g1.setIsdisable(grpMenuAccess.getIsdisable()); + g1.setItemSeq(grpMenuAccess.getItemSeq()); + g1.setMain_menu_action_name(grpMenuAccess.getMain_menu_action_name()); + g1.setMain_menu_icon_name(grpMenuAccess.getMain_menu_action_name()); + g1.setMenuId(grpMenuAccess.getMenuId()); + g1.setMenuItemDesc(grpMenuAccess.getMenuItemDesc()); + g1.setModuleName(grpMenuAccess.getModuleName()); + g1.setStatus(grpMenuAccess.getStatus()); + g1.setMexport(grpMenuAccess.getMexport()); + + GrpMenuAccess grpMenuAccess2 = grpMenuAccessRepository.save(g1); + return new ResponseEntity<>(grpMenuAccess2, HttpStatus.OK); + } + +// DELETE GRPMENU ACCESS BY MENUITEMID AND USRGRP + @DeleteMapping("/deleteGrpMenuAcces/{menu_item_id}/{usr_grp}") + public void deleteGrpMenuAccess(@PathVariable Long menu_item_id, @PathVariable Long usr_grp) { + GrpMenuAccess grpMenuAccess = grpMenuAccessRepository.findByUsrgrpAndMenuitemid(menu_item_id, usr_grp); + if (Objects.isNull(grpMenuAccess)) + throw new ResourceNotFoundException("no resource found"); + grpMenuAccessRepository.delete(grpMenuAccess); + } + +// GET GRPMENU ACCESS BY MENUITEM ID BUT NOT WORKING WITH SUBMENU + @GetMapping("/getsec/{menu_item_id}") + public ResponseEntity getgrpmenuaccess(@PathVariable Long menu_item_id) { + GrpMenuAccess get = grpMenuAccessRepository.findById1(menu_item_id); + + return new ResponseEntity<>(get, HttpStatus.CREATED); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java new file mode 100644 index 0000000..875fd89 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/controller1/TokenFreeController.java @@ -0,0 +1,43 @@ +package com.realnet.fnd.controller1; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.Dashboard1.Entity.Dashbord_Header; +import com.realnet.Dashboard1.Service.HeaderService; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.service1.SecmenuDetailService; + +@RestController +@RequestMapping("/token") +public class TokenFreeController { + + @Autowired + private SecmenuDetailService secmenuDetailService; + + @Autowired + private HeaderService headerService; + +// add Custom sec menu detail + @PostMapping("/Sec_menuDet/custom") + public ResponseEntity addCustomMenu(@RequestParam String tableName, @RequestParam Long menuid) { + + MenuDet menuDet = secmenuDetailService.customsecmenuadd(tableName, menuid); + + return new ResponseEntity<>(menuDet, HttpStatus.CREATED); + } + +// add dashboard + @PostMapping("/dashboard") + public Dashbord_Header Savedata(@RequestBody Dashbord_Header dashbord_Header) { + Dashbord_Header dash = headerService.Savedata(dashbord_Header); + return dash; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java new file mode 100644 index 0000000..bb3f136 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/DropDownDTO.java @@ -0,0 +1,35 @@ +package com.realnet.fnd.entity; + +public class DropDownDTO { + private int id; + private String name; + + public DropDownDTO() { + super(); + // TODO Auto-generated constructor stub + } + + public DropDownDTO(int id, String name) { + super(); + this.id = id; + this.name = name; + } + + public int getId() { + return id; + } + public void setId(int id) { + this.id = id; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + + @Override + public String toString() { + return "DropDownDTO [id=" + id + ", name=" + name + "]"; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java new file mode 100644 index 0000000..dcf2fc4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Error.java @@ -0,0 +1,41 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class Error implements Serializable { + + private static final long serialVersionUID = 1L; + + private String message; + + private String title; + + public String getMessage () + { + return message; + } + + public void setMessage (String message) + { + this.message = message; + } + + public String getTitle () + { + return title; + } + + public void setTitle (String title) + { + this.title = title; + } + + @Override + public String toString() + { + return "ClassPojo [message = "+message+", title = "+title+"]"; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java new file mode 100644 index 0000000..c99f3ec --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ErrorPojo.java @@ -0,0 +1,38 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class ErrorPojo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Error error; + + public ErrorPojo() { + + } + + public ErrorPojo(Error error) { + this.error = error; + } + + public Error getError () + { + return error; + } + + public void setError (Error error) + { + this.error = error; + } + + @Override + public String toString() + { + return "ClassPojo [error = "+error+"]"; + } +} + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java new file mode 100644 index 0000000..3b60623 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ModuleCopyDTO.java @@ -0,0 +1,12 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class ModuleCopyDTO { + private int from_projectId; + private int from_moduleId; + private String to_moduleName; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java new file mode 100644 index 0000000..888ff33 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Modulemini.java @@ -0,0 +1,8 @@ +package com.realnet.fnd.entity; + +public interface Modulemini { + + String getid(); + String getmodule_name(); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java new file mode 100644 index 0000000..f063c68 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/ProjectMini.java @@ -0,0 +1,7 @@ +package com.realnet.fnd.entity; + +public interface ProjectMini { + String getid(); + String getproject_name(); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java new file mode 100644 index 0000000..3c5431d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_AuditEntity.java @@ -0,0 +1,82 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public abstract class Rn_AuditEntity extends Rn_ExtensionEntity implements Serializable { + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + //@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private String createdBy; + + @Column(name = "UPDATED_BY") + private String updatedBy; + + @Column(name = "ACCOUNT_ID") + private String accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public String getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(String updatedBy) { + this.updatedBy = updatedBy; + } + + public String getAccountId() { + return accountId; + } + + public void setAccountId(String accountId) { + this.accountId = accountId; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java new file mode 100644 index 0000000..aabeec7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Dynamic_Transaction.java @@ -0,0 +1,435 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_DYNAMIC_TRANSACTION") +public class Rn_Dynamic_Transaction extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "FORM_ID") + private int form_id; + + @Column(name = "FORM_VERSION") + private int form_version; + + @Column(name = "COMP1") + private String comp1; + + @Column(name = "COMP2") + private String comp2; + + @Column(name = "COMP3") + private String comp3; + + @Column(name = "COMP4") + private String comp4; + + @Column(name = "COMP5") + private String comp5; + + @Column(name = "COMP6") + private String comp6; + + @Column(name = "COMP7") + private String comp7; + + @Column(name = "COMP8") + private String comp8; + + @Column(name = "COMP9") + private String comp9; + + @Column(name = "COMP10") + private String comp10; + + @Column(name = "COMP11") + private String comp11; + + @Column(name = "COMP12") + private String comp12; + + @Column(name = "COMP13") + private String comp13; + + @Column(name = "COMP14") + private String comp14; + + @Column(name = "COMP15") + private String comp15; + + @Column(name = "COMP16") + private String comp16; + + @Column(name = "COMP17") + private String comp17; + + @Column(name = "COMP18") + private String comp18; + + @Column(name = "COMP19") + private String comp19; + + @Column(name = "COMP20") + private String comp20; + + @Column(name = "COMP21") + private String comp21; + + @Column(name = "COMP22") + private String comp22; + + @Column(name = "COMP23") + private String comp23; + + @Column(name = "COMP24") + private String comp24; + + @Column(name = "COMP25") + private String comp25; + + // FOR LONG-TEXT FIELDS + @Lob + @Column(name = "COMP_L26", length = 100000) + private String comp_l26; + + @Lob + @Column(name = "COMP_L27", length = 100000) + private String comp_l27; + + @Lob + @Column(name = "COMP_L28", length = 100000) + private String comp_l28; + + @Lob + @Column(name = "COMP_L29", length = 100000) + private String comp_l29; + + @Lob + @Column(name = "COMP_L30", length = 100000) + private String comp_l30; + + public Rn_Dynamic_Transaction() { + super(); + } + + public Rn_Dynamic_Transaction(int id, int form_id, int form_version, String comp1, String comp2, String comp3, + String comp4, String comp5, String comp6, String comp7, String comp8, String comp9, String comp10, + String comp11, String comp12, String comp13, String comp14, String comp15, String comp16, String comp17, + String comp18, String comp19, String comp20, String comp21, String comp22, String comp23, String comp24, + String comp25, String comp_l26, String comp_l27, String comp_l28, String comp_l29, String comp_l30) { + super(); + this.id = id; + this.form_id = form_id; + this.form_version = form_version; + this.comp1 = comp1; + this.comp2 = comp2; + this.comp3 = comp3; + this.comp4 = comp4; + this.comp5 = comp5; + this.comp6 = comp6; + this.comp7 = comp7; + this.comp8 = comp8; + this.comp9 = comp9; + this.comp10 = comp10; + this.comp11 = comp11; + this.comp12 = comp12; + this.comp13 = comp13; + this.comp14 = comp14; + this.comp15 = comp15; + this.comp16 = comp16; + this.comp17 = comp17; + this.comp18 = comp18; + this.comp19 = comp19; + this.comp20 = comp20; + this.comp21 = comp21; + this.comp22 = comp22; + this.comp23 = comp23; + this.comp24 = comp24; + this.comp25 = comp25; + this.comp_l26 = comp_l26; + this.comp_l27 = comp_l27; + this.comp_l28 = comp_l28; + this.comp_l29 = comp_l29; + this.comp_l30 = comp_l30; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getForm_id() { + return form_id; + } + + public void setForm_id(int form_id) { + this.form_id = form_id; + } + + public int getForm_version() { + return form_version; + } + + public void setForm_version(int form_version) { + this.form_version = form_version; + } + + public String getComp1() { + return comp1; + } + + public void setComp1(String comp1) { + this.comp1 = comp1; + } + + public String getComp2() { + return comp2; + } + + public void setComp2(String comp2) { + this.comp2 = comp2; + } + + public String getComp3() { + return comp3; + } + + public void setComp3(String comp3) { + this.comp3 = comp3; + } + + public String getComp4() { + return comp4; + } + + public void setComp4(String comp4) { + this.comp4 = comp4; + } + + public String getComp5() { + return comp5; + } + + public void setComp5(String comp5) { + this.comp5 = comp5; + } + + public String getComp6() { + return comp6; + } + + public void setComp6(String comp6) { + this.comp6 = comp6; + } + + public String getComp7() { + return comp7; + } + + public void setComp7(String comp7) { + this.comp7 = comp7; + } + + public String getComp8() { + return comp8; + } + + public void setComp8(String comp8) { + this.comp8 = comp8; + } + + public String getComp9() { + return comp9; + } + + public void setComp9(String comp9) { + this.comp9 = comp9; + } + + public String getComp10() { + return comp10; + } + + public void setComp10(String comp10) { + this.comp10 = comp10; + } + + public String getComp11() { + return comp11; + } + + public void setComp11(String comp11) { + this.comp11 = comp11; + } + + public String getComp12() { + return comp12; + } + + public void setComp12(String comp12) { + this.comp12 = comp12; + } + + public String getComp13() { + return comp13; + } + + public void setComp13(String comp13) { + this.comp13 = comp13; + } + + public String getComp14() { + return comp14; + } + + public void setComp14(String comp14) { + this.comp14 = comp14; + } + + public String getComp15() { + return comp15; + } + + public void setComp15(String comp15) { + this.comp15 = comp15; + } + + public String getComp16() { + return comp16; + } + + public void setComp16(String comp16) { + this.comp16 = comp16; + } + + public String getComp17() { + return comp17; + } + + public void setComp17(String comp17) { + this.comp17 = comp17; + } + + public String getComp18() { + return comp18; + } + + public void setComp18(String comp18) { + this.comp18 = comp18; + } + + public String getComp19() { + return comp19; + } + + public void setComp19(String comp19) { + this.comp19 = comp19; + } + + public String getComp20() { + return comp20; + } + + public void setComp20(String comp20) { + this.comp20 = comp20; + } + + public String getComp21() { + return comp21; + } + + public void setComp21(String comp21) { + this.comp21 = comp21; + } + + public String getComp22() { + return comp22; + } + + public void setComp22(String comp22) { + this.comp22 = comp22; + } + + public String getComp23() { + return comp23; + } + + public void setComp23(String comp23) { + this.comp23 = comp23; + } + + public String getComp24() { + return comp24; + } + + public void setComp24(String comp24) { + this.comp24 = comp24; + } + + public String getComp25() { + return comp25; + } + + public void setComp25(String comp25) { + this.comp25 = comp25; + } + + public String getComp_l26() { + return comp_l26; + } + + public void setComp_l26(String comp_l26) { + this.comp_l26 = comp_l26; + } + + public String getComp_l27() { + return comp_l27; + } + + public void setComp_l27(String comp_l27) { + this.comp_l27 = comp_l27; + } + + public String getComp_l28() { + return comp_l28; + } + + public void setComp_l28(String comp_l28) { + this.comp_l28 = comp_l28; + } + + public String getComp_l29() { + return comp_l29; + } + + public void setComp_l29(String comp_l29) { + this.comp_l29 = comp_l29; + } + + public String getComp_l30() { + return comp_l30; + } + + public void setComp_l30(String comp_l30) { + this.comp_l30 = comp_l30; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java new file mode 100644 index 0000000..1712b55 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Ext_Fields.java @@ -0,0 +1,157 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name = "RN_EXT_FIELD_T") +public class Rn_Ext_Fields extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "TYPE") + private String type; + + @Column(name = "FIELD_NAME") + private String field_name; + + @Column(name = "MAPPING") + private String mapping; + + @Column(name = "DATA_TYPE") + private String data_type; + + @Column(name = "FORM_CODE") + private String form_code; + + @Column(name = "IS_ACTIVE") + private boolean isActive; + + @Column(name = "ACCOUNT_ID") + private long account_id; + + + + + + + + +// @Column(name = "SP_NAME_FOR_AUTOCOMPLETE") +// private String sp_name_for_autocomplete; +// +// @Column(name = "SP_FOR_AUTOCOMPLETE") +// private String sp_for_autocomplete; +// +// @Column(name = "EXT_AUTO_ID") +// private String ext_auto_id; +// +// @Column(name = "EXT_DEPENDENT_ID") +// private String ext_dependent_id; +// +// @Column(name = "EXT_DD_ID") +// private String ext_dd_id; +// +// @Column(name = "SP_NAME") +// private String sp_name; +// +// @Column(name = "DROP_VALUE") +// private String drop_value; +// +// @Column(name = "DROPDOWN") +// private String dropdown; +// +// @Column(name = "MANDATORY") +// private String mandatory; +// +// @Column(name = "HIDDEN") +// private String hidden; +// +// @Column(name = "READONLY") +// private String readonly; +// +// @Column(name = "DEPENDENT") +// private String dependent; +// @Column(name = "SEQ_NAME") +// private String seq_name; +// +// @Column(name = "DEPENDENT_SP") +// private String dependent_sp; +// +// @Column(name = "DEPENDENT_SP_PARAM") +// private String dependent_sp_param; +// +// @Column(name = "VALIDATION_1") +// private String validation_1; +// +// @Column(name = "VAL_TYPE") +// private String val_type; +// +// @Column(name = "VAL_SP") +// private String val_sp; +// +// @Column(name = "VAL_SP_PARAM") +// private String val_sp_param; +// +// @Column(name = "SEQUENCE") +// private String sequence; +// +// @Column(name = "SEQ_SP") +// private String seq_sp; +// +// @Column(name = "SEQ_SP_PARAM") +// private String seq_sp_param; +// +// @Column(name = "DEFAULT_1") +// private String default_1; +// +// @Column(name = "DEFAULT_TYPE") +// private String default_type; +// +// @Column(name = "DEFAULT_VALUE") +// private String default_value; +// +// @Column(name = "DEFAULT_SP") +// private String default_sp; +// +// @Column(name = "DEFAULT_SP_PARAM") +// private String default_sp_param; +// +// @Column(name = "CALCULATED_FIELD") +// private String calculated_field; +// +// @Column(name = "CAL_SP") +// private String cal_sp; +// +// @Column(name = "CAL_SP_PARAM") +// private String cal_sp_param; +// +// @Column(name = "ADD_TO_GRID") +// private String add_to_grid; +// +// @Column(name = "DEPENDENT_ON") +// private String dependent_on; +// @Column(name = "RADIO") +// private String radio; +// @Column(name = "RADIO_OPTION") +// private String radio_option; + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java new file mode 100644 index 0000000..ed13b04 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_ExtensionEntity.java @@ -0,0 +1,183 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class Rn_ExtensionEntity extends Rn_FlexEntity { + @Column(name = "EXTN1") + private String extn1; + @Column(name = "EXTN2") + private String extn2; + @Column(name = "EXTN3") + private String extn3; + @Column(name = "EXTN4") + private String extn4; + @Column(name = "EXTN5") + private String extn5; + @Column(name = "EXTN6") + private String extn6; + @Column(name = "EXTN7") + private String extn7; + @Column(name = "EXTN8") + private String extn8; + @Column(name = "EXTN9") + private String extn9; + @Column(name = "EXTN10") + private String extn10; + @Column(name = "EXTN11") + private String extn11; + @Column(name = "EXTN12") + private String extn12; + @Column(name = "EXTN13") + private String extn13; + @Column(name = "EXTN14") + private String extn14; + @Column(name = "EXTN15") + private String extn15; + + public Rn_ExtensionEntity() { + super(); + } + + public Rn_ExtensionEntity(String extn1, String extn2, String extn3, String extn4, String extn5, String extn6, + String extn7, String extn8, String extn9, String extn10, String extn11, String extn12, String extn13, + String extn14, String extn15) { + super(); + this.extn1 = extn1; + this.extn2 = extn2; + this.extn3 = extn3; + this.extn4 = extn4; + this.extn5 = extn5; + this.extn6 = extn6; + this.extn7 = extn7; + this.extn8 = extn8; + this.extn9 = extn9; + this.extn10 = extn10; + this.extn11 = extn11; + this.extn12 = extn12; + this.extn13 = extn13; + this.extn14 = extn14; + this.extn15 = extn15; + } + + public String getExtn1() { + return extn1; + } + + public void setExtn1(String extn1) { + this.extn1 = extn1; + } + + public String getExtn2() { + return extn2; + } + + public void setExtn2(String extn2) { + this.extn2 = extn2; + } + + public String getExtn3() { + return extn3; + } + + public void setExtn3(String extn3) { + this.extn3 = extn3; + } + + public String getExtn4() { + return extn4; + } + + public void setExtn4(String extn4) { + this.extn4 = extn4; + } + + public String getExtn5() { + return extn5; + } + + public void setExtn5(String extn5) { + this.extn5 = extn5; + } + + public String getExtn6() { + return extn6; + } + + public void setExtn6(String extn6) { + this.extn6 = extn6; + } + + public String getExtn7() { + return extn7; + } + + public void setExtn7(String extn7) { + this.extn7 = extn7; + } + + public String getExtn8() { + return extn8; + } + + public void setExtn8(String extn8) { + this.extn8 = extn8; + } + + public String getExtn9() { + return extn9; + } + + public void setExtn9(String extn9) { + this.extn9 = extn9; + } + + public String getExtn10() { + return extn10; + } + + public void setExtn10(String extn10) { + this.extn10 = extn10; + } + + public String getExtn11() { + return extn11; + } + + public void setExtn11(String extn11) { + this.extn11 = extn11; + } + + public String getExtn12() { + return extn12; + } + + public void setExtn12(String extn12) { + this.extn12 = extn12; + } + + public String getExtn13() { + return extn13; + } + + public void setExtn13(String extn13) { + this.extn13 = extn13; + } + + public String getExtn14() { + return extn14; + } + + public void setExtn14(String extn14) { + this.extn14 = extn14; + } + + public String getExtn15() { + return extn15; + } + + public void setExtn15(String extn15) { + this.extn15 = extn15; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java new file mode 100644 index 0000000..f498a5c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_FlexEntity.java @@ -0,0 +1,72 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.MappedSuperclass; + +@MappedSuperclass +public class Rn_FlexEntity { + @Column(name = "FLEX1") + private String flex1; + @Column(name = "FLEX2") + private String flex2; + @Column(name = "FLEX3") + private String flex3; + @Column(name = "FLEX4") + private String flex4; + @Column(name = "FLEX5") + private String flex5; + + public Rn_FlexEntity() { + super(); + } + + public Rn_FlexEntity(String flex1, String flex2, String flex3, String flex4, String flex5) { + super(); + this.flex1 = flex1; + this.flex2 = flex2; + this.flex3 = flex3; + this.flex4 = flex4; + this.flex5 = flex5; + } + + public String getFlex1() { + return flex1; + } + + public void setFlex1(String flex1) { + this.flex1 = flex1; + } + + public String getFlex2() { + return flex2; + } + + public void setFlex2(String flex2) { + this.flex2 = flex2; + } + + public String getFlex3() { + return flex3; + } + + public void setFlex3(String flex3) { + this.flex3 = flex3; + } + + public String getFlex4() { + return flex4; + } + + public void setFlex4(String flex4) { + this.flex4 = flex4; + } + + public String getFlex5() { + return flex5; + } + + public void setFlex5(String flex5) { + this.flex5 = flex5; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java new file mode 100644 index 0000000..b3edae3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Component_Setup.java @@ -0,0 +1,124 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +//@Data +//@EqualsAndHashCode(callSuper = false) +@Entity +@Table(name = "RN_FORMS_COMPONENT_SETUP_T") +public class Rn_Forms_Component_Setup extends Rn_Who_Columns { + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "COMPONENT_ID") + private int component_id; + + @Column(name = "LABEL") + private String label; + + @Column(name = "TYPE") + private String type; + + @Column(name = "MAPPING") + private String mapping; + + @Column(name = "MANDATORY") + private String mandatory; + + @Column(name = "READONLY") + private String readonly; + + @Column(name = "DROP_VALUES") + private String drop_values; + + @Column(name = "SP") + private String sp; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "form_id", nullable = false) + @JsonBackReference + private Rn_Forms_Setup rn_forms_setup; + + public int getComponent_id() { + return component_id; + } + + public void setComponent_id(int component_id) { + this.component_id = component_id; + } + + public String getLabel() { + return label; + } + + public void setLabel(String label) { + this.label = label; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getMapping() { + return mapping; + } + + public void setMapping(String mapping) { + this.mapping = mapping; + } + + public String getMandatory() { + return mandatory; + } + + public void setMandatory(String mandatory) { + this.mandatory = mandatory; + } + + public String getReadonly() { + return readonly; + } + + public void setReadonly(String readonly) { + this.readonly = readonly; + } + + public String getDrop_values() { + return drop_values; + } + + public void setDrop_values(String drop_values) { + this.drop_values = drop_values; + } + + public String getSp() { + return sp; + } + + public void setSp(String sp) { + this.sp = sp; + } + + public Rn_Forms_Setup getRn_forms_setup() { + return rn_forms_setup; + } + + public void setRn_forms_setup(Rn_Forms_Setup rn_forms_setup) { + this.rn_forms_setup = rn_forms_setup; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java new file mode 100644 index 0000000..1391ade --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Forms_Setup.java @@ -0,0 +1,102 @@ +package com.realnet.fnd.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +//@Data +//@EqualsAndHashCode(callSuper = false) +@Entity +@Table(name = "RN_FORMS_SETUP_T") +public class Rn_Forms_Setup extends Rn_Who_Columns { + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "FORM_ID") + private int form_id; + + @Column(name = "FORM_NAME") + private String form_name; + + @Column(name = "FORM_DESC") + private String form_desc; + + @Column(name = "RELATED_TO") + private String related_to; + + @Column(name = "PAGE_EVENT") + private String page_event; + + @Column(name = "BUTTON_CAPTION") + private String button_caption; + + @OneToMany(mappedBy = "rn_forms_setup", cascade = CascadeType.ALL) + @JsonManagedReference + private List components; + + public int getForm_id() { + return form_id; + } + + public void setForm_id(int form_id) { + this.form_id = form_id; + } + + public String getForm_name() { + return form_name; + } + + public void setForm_name(String form_name) { + this.form_name = form_name; + } + + public String getForm_desc() { + return form_desc; + } + + public void setForm_desc(String form_desc) { + this.form_desc = form_desc; + } + + public String getRelated_to() { + return related_to; + } + + public void setRelated_to(String related_to) { + this.related_to = related_to; + } + + public String getPage_event() { + return page_event; + } + + public void setPage_event(String page_event) { + this.page_event = page_event; + } + + public String getButton_caption() { + return button_caption; + } + + public void setButton_caption(String button_caption) { + this.button_caption = button_caption; + } + + public List getComponents() { + return components; + } + + public void setComponents(List components) { + this.components = components; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java new file mode 100644 index 0000000..2e57239 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Function_Register.java @@ -0,0 +1,111 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; + +@Entity +@Table(name = "RN_FUNC_REGISTER") +public class Rn_Function_Register extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MENU_ID") + private int menu_id; + + @Column(name = "FUNCTION_NAME") + private String function_name; + + @Column(name = "FUNCTION_ACTION_NAME") + private String function_action_name; + + @Column(name = "FUNCTION_ICON") + private String function_icon; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @Column(name = "END_DATE") + private LocalDate end_date; + + @Column(name = "ENABLE_FLAG") + private String enable_flag; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public int getMenu_id() { + return menu_id; + } + + public void setMenu_id(int menu_id) { + this.menu_id = menu_id; + } + + public String getFunction_name() { + return function_name; + } + + public void setFunction_name(String function_name) { + this.function_name = function_name; + } + + public String getFunction_action_name() { + return function_action_name; + } + + public void setFunction_action_name(String function_action_name) { + this.function_action_name = function_action_name; + } + + public String getFunction_icon() { + return function_icon; + } + + public void setFunction_icon(String function_icon) { + this.function_icon = function_icon; + } + + public LocalDate getEnd_date() { + return end_date; + } + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + public String getEnable_flag() { + return enable_flag; + } + + public void setEnable_flag(String enable_flag) { + this.enable_flag = enable_flag; + } + +// @Column(name = "MENU_NAME") +// private String menu_name; +// public String getMenu_name() { +// return menu_name; +// } +// public void setMenu_name(String menu_name) { +// this.menu_name = menu_name; +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java new file mode 100644 index 0000000..579154c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Instance_Type.java @@ -0,0 +1,37 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_INSTANCE_TYPE_T") +public class Rn_Instance_Type { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + @Column(name = "INSTANCE_TYPE") + private String instanceType; + + public String getInstanceType() { + return instanceType; + } + + public void setInstanceType(String instanceType) { + this.instanceType = instanceType; + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java new file mode 100644 index 0000000..e55cc87 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Lookup_Values.java @@ -0,0 +1,201 @@ +package com.realnet.fnd.entity; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +@Entity +@Table(name = "RN_LOOKUP_VALUES_T") + +public class Rn_Lookup_Values extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "LOOKUP_CODE") + private String lookupCode; + + @Column(name = "MEANING") + private String meaning; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "LOOKUP_TYPE") + private String lookupType; + + @Column(name = "ACTIVE_START_DATE") + private Date active_start_date; + + @Column(name = "ACTIVE_END_DATE") + private Date active_end_date; + + @Column(name = "DROP_VALUE") + private String dropValue; + + @Column(name = "ENABLED_FLAG") + private boolean enabled_flag; + + // +// @Column(name = "PATIENT_COUNTRY") +// private String patientCountry; +// +// +// +// @Column(name = "STATE_NAME") +// private String stateName; +// +// @Column(name = "CITY_NAME") +// private String cityName; +// +// @Column(name = "ZIP_CODE") +// private String zipCode; +// +// @Column(name = "COUNTRY_ID") +// private int country_id; + + public Rn_Lookup_Values() { + super(); + } + + + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getLookupCode() { + return lookupCode; + } + + public void setLookupCode(String lookupCode) { + this.lookupCode = lookupCode; + } + + public String getMeaning() { + return meaning; + } + + public void setMeaning(String meaning) { + this.meaning = meaning; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getLookupType() { + return lookupType; + } + + public void setLookupType(String lookupType) { + this.lookupType = lookupType; + } + + + + public String getDropValue() { + return dropValue; + } + + public void setDropValue(String dropValue) { + this.dropValue = dropValue; + } + + public Date getActive_start_date() { + return active_start_date; + } + + public void setActive_start_date(Date active_start_date) { + this.active_start_date = active_start_date; + } + + public Date getActive_end_date() { + return active_end_date; + } + + public void setActive_end_date(Date active_end_date) { + this.active_end_date = active_end_date; + } + + public boolean isEnabled_flag() { + return enabled_flag; + } + + public void setEnabled_flag(boolean enabled_flag) { + this.enabled_flag = enabled_flag; + } + +// @Column(name = "CREATED_BY") +// private int created_by; +// +// @DateTimeFormat(pattern = "dd/mm/yyyy") +// @Column(name = "CREATION_DATE") +// private Date creation_date = new java.sql.Date(new java.util.Date().getTime()); +// +// @Column(name = "LAST_UPDATED_BY") +// private int last_updated_by; +// +// @DateTimeFormat(pattern = "dd/mm/yyyy") +// @Column(name = "LAST_UPDATE_DATE") +// private Date last_update_date = new java.sql.Date(new java.util.Date().getTime()); + +// public String getPatientCountry() { +// return patientCountry; +// } +// +// public void setPatientCountry(String patientCountry) { +// this.patientCountry = patientCountry; +// } +// public String getStateName() { +// return stateName; +// } +// +// public void setStateName(String stateName) { +// this.stateName = stateName; +// } +// +// public String getCityName() { +// return cityName; +// } +// +// public void setCityName(String cityName) { +// this.cityName = cityName; +// } +// +// public String getZipCode() { +// return zipCode; +// } +// +// public void setZipCode(String zipCode) { +// this.zipCode = zipCode; +// } +// +// public int getCountry_id() { +// return country_id; +// } +// +// public void setCountry_id(int country_id) { +// this.country_id = country_id; +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java new file mode 100644 index 0000000..f5ee817 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Main_Menu.java @@ -0,0 +1,108 @@ +package com.realnet.fnd.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +@Entity +@Table(name = "RN_MAIN_MENU") +public class Rn_Main_Menu extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "MENU_NAME") + private String menu_name; + + @Column(name = "MENU_ACTION_LINK") + private String menu_action_link; + + @Column(name = "MENU_ICON") + private String menu_icon; + + @Column(name = "MENU_TYPE") + private String menu_type; + + @OneToMany(mappedBy = "rn_main_menu", cascade = CascadeType.ALL) + @JsonManagedReference + private List sub_menus; + + public Rn_Main_Menu() { + super(); + } + + public Rn_Main_Menu(Integer id, String menu_name, String menu_action_link, String menu_icon, String menu_type, + List sub_menus) { + super(); + this.id = id; + this.menu_name = menu_name; + this.menu_action_link = menu_action_link; + this.menu_icon = menu_icon; + this.menu_type = menu_type; + this.sub_menus = sub_menus; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getMenu_name() { + return menu_name; + } + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + public String getMenu_action_link() { + return menu_action_link; + } + + public void setMenu_action_link(String menu_action_link) { + this.menu_action_link = menu_action_link; + } + + public String getMenu_icon() { + return menu_icon; + } + + public void setMenu_icon(String menu_icon) { + this.menu_icon = menu_icon; + } + + public String getMenu_type() { + return menu_type; + } + + public void setMenu_type(String menu_type) { + this.menu_type = menu_type; + } + + public List getSub_menus() { + return sub_menus; + } + + public void setSub_menus(List sub_menus) { + this.sub_menus = sub_menus; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java new file mode 100644 index 0000000..d1d87d7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Header.java @@ -0,0 +1,265 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer; + +import lombok.Data; +import lombok.Getter; +import lombok.Setter; + +@Entity +@Table(name = "RN_MENU_GROUP_HEADER") +public class Rn_Menu_Group_Header extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Long id; + + @Column(name = "MENU_NAME") + private String menu_name; + + @Column(name = "DESCRIPTION") + private String description; + + @Column(name = "ACTIVE") + private boolean active; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @JsonSerialize(using = LocalDateSerializer.class) + @Column(name = "START_DATE") + private LocalDate start_date; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @JsonSerialize(using = LocalDateSerializer.class) + @Column(name = "END_DATE") + private LocalDate end_date; + + private String start_date_1; + private String end_date_1; + + // header + @OneToMany(mappedBy = "menu_group_header", cascade = CascadeType.ALL) + @JsonManagedReference + private List menu_group_lines; + + + public Rn_Menu_Group_Header() { + super(); + } + + + public Long getId() { + return id; + } + + + public void setId(Long id) { + this.id = id; + } + + + public String getMenu_name() { + return menu_name; + } + + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + + public String getDescription() { + return description; + } + + + public void setDescription(String description) { + this.description = description; + } + + + public boolean isActive() { + return active; + } + + + public void setActive(boolean active) { + this.active = active; + } + + + public LocalDate getStart_date() { + return start_date; + } + + + public void setStart_date(LocalDate start_date) { + this.start_date = start_date; + } + + + public LocalDate getEnd_date() { + return end_date; + } + + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + + public String getStart_date_1() { + return start_date_1; + } + + + public void setStart_date_1(String start_date_1) { + this.start_date_1 = start_date_1; + } + + + public String getEnd_date_1() { + return end_date_1; + } + + + public void setEnd_date_1(String end_date_1) { + this.end_date_1 = end_date_1; + } + + + public List getMenu_group_lines() { + return menu_group_lines; + } + + + public void setMenu_group_lines(List menu_group_lines) { + this.menu_group_lines = menu_group_lines; + } + + + public static long getSerialversionuid() { + return serialVersionUID; + } + + + public Rn_Menu_Group_Header(Long id, String menu_name, String description, boolean active, LocalDate start_date, + LocalDate end_date, String start_date_1, String end_date_1, List menu_group_lines) { + super(); + this.id = id; + this.menu_name = menu_name; + this.description = description; + this.active = active; + this.start_date = start_date; + this.end_date = end_date; + this.start_date_1 = start_date_1; + this.end_date_1 = end_date_1; + this.menu_group_lines = menu_group_lines; + } + +// public Rn_Menu_Group_Header(int id, String menu_name, String description, boolean active, LocalDate start_date, +// LocalDate end_date, List menu_group_lines) { +// super(); +// this.id = id; +// this.menu_name = menu_name; +// this.description = description; +// this.active = active; +// this.start_date = start_date; +// this.end_date = end_date; +// this.menu_group_lines = menu_group_lines; +// } +// +// public int getId() { +// return id; +// } +// +// public void setId(int id) { +// this.id = id; +// } +// +// public String getMenu_name() { +// return menu_name; +// } +// +// public void setMenu_name(String menu_name) { +// this.menu_name = menu_name; +// } +// +// public String getDescription() { +// return description; +// } +// +// public void setDescription(String description) { +// this.description = description; +// } +// +// public boolean getActive() { +// return active; +// } +// +// public void setActive(boolean active) { +// this.active = active; +// } +// +// public LocalDate getStart_date() { +// return start_date; +// } +// +// public void setStart_date(LocalDate start_date) { +// this.start_date = start_date; +// } +// +// public LocalDate getEnd_date() { +// return end_date; +// } +// +// public void setEnd_date(LocalDate end_date) { +// this.end_date = end_date; +// } +// +// public List getMenu_group_lines() { +// return menu_group_lines; +// } +// +// public void setMenu_group_lines(List menu_group_lines) { +// this.menu_group_lines = menu_group_lines; +// } +// +// public String getStart_date_1() { +// return start_date_1; +// } +// +// public void setStart_date_1(String start_date_1) { +// this.start_date_1 = start_date_1; +// } +// +// public String getEnd_date_1() { +// return end_date_1; +// } +// +// public void setEnd_date_1(String end_date_1) { +// this.end_date_1 = end_date_1; +// } +// +// +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java new file mode 100644 index 0000000..64fc465 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Group_Line.java @@ -0,0 +1,137 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +@Entity +@Table(name = "RN_MENU_GROUP_LINE") +// @Table(name = "rn_menu_group_line_1") +public class Rn_Menu_Group_Line extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MENU_ID") + private int menu_id; + + private String menu_name; + + + + @Column(name = "NAME") + private String name; + + @Column(name = "ACTIVE") + private boolean active; + + + @Column(name = "SEQ") + private int seq; + + @Column(name = "TYPE") + private String type; + + // line + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "menu_group_header_id", nullable = false) + @JsonBackReference + private Rn_Menu_Group_Header menu_group_header; + + public Rn_Menu_Group_Line() { + super(); + } + + public Rn_Menu_Group_Line(int id, String name, boolean active, int menu_id, + int seq, String type, Rn_Menu_Group_Header menu_group_header) { + super(); + this.id = id; + this.name = name; + this.active = active; + this.menu_id = menu_id; + this.seq = seq; + this.type = type; + this.menu_group_header = menu_group_header; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public boolean getActive() { + return active; + } + + public void setActive(boolean active) { + this.active = active; + } + + + public int getMenu_id() { + return menu_id; + } + + public void setMenu_id(int menu_id) { + this.menu_id = menu_id; + } + + public int getSeq() { + return seq; + } + + public void setSeq(int seq) { + this.seq = seq; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public Rn_Menu_Group_Header getMenu_group_header() { + return menu_group_header; + } + + public void setMenu_group_header(Rn_Menu_Group_Header menu_group_header) { + this.menu_group_header = menu_group_header; + } + + public String getMenu_name() { + return menu_name; + } + + public void setMenu_name(String menu_name) { + this.menu_name = menu_name; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java new file mode 100644 index 0000000..4c6e7ea --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Menu_Register.java @@ -0,0 +1,109 @@ +package com.realnet.fnd.entity; + +import java.time.LocalDate; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import com.fasterxml.jackson.annotation.JsonFormat; + +@Entity +@Table(name = "RN_MENU_REGISTER") +public class Rn_Menu_Register extends Rn_Who_Columns { + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private int id; + + @Column(name = "MAIN_MENU_NAME") + private String main_menu_name; + + @Column(name = "MAIN_MENU_ACTION_NAME") + private String main_menu_action_name; + + @Column(name = "MAIN_MENU_ICON") + private String main_menu_icon; + + @Column(name = "ENABLE_FLAG") + private boolean enable_flag; + + // @DateTimeFormat(pattern = "dd/mm/yyyy") + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "MM/dd/yyyy") + @Column(name = "END_DATE") + private LocalDate end_date; + + private String end_date_1; + + public Rn_Menu_Register() {} + + public boolean getEnable_flag() { + return enable_flag; + } + + public void setEnable_flag(boolean enable_flag) { + this.enable_flag = enable_flag; + } + + public LocalDate getEnd_date() { + return end_date; + } + + public void setEnd_date(LocalDate end_date) { + this.end_date = end_date; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getMain_menu_name() { + return main_menu_name; + } + + public void setMain_menu_name(String main_menu_name) { + this.main_menu_name = main_menu_name; + } + + public String getMain_menu_action_name() { + return main_menu_action_name; + } + + public void setMain_menu_action_name(String main_menu_action_name) { + this.main_menu_action_name = main_menu_action_name; + } + + public String getMain_menu_icon() { + return main_menu_icon; + } + + public void setMain_menu_icon(String main_menu_icon) { + this.main_menu_icon = main_menu_icon; + } + + public String getEnd_date_1() { + return end_date_1; + } + + public void setEnd_date_1(String end_date_1) { + this.end_date_1 = end_date_1; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java new file mode 100644 index 0000000..7a10303 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Sub_Menu.java @@ -0,0 +1,98 @@ +package com.realnet.fnd.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonBackReference; + +@Entity +@Table(name = "RN_SUB_MENU") +public class Rn_Sub_Menu extends Rn_Who_Columns { + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + @Column(name = "SUB_MENU_NAME") + private String sub_menu_name; + + @Column(name = "SUB_MENU_ICON") + private String sub_menu_icon; + + @Column(name = "SUB_MENU_ACTION_LINK") + private String sub_menu_action_link; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JoinColumn(name = "MAIN_MENU_ID") + @JsonBackReference + private Rn_Main_Menu rn_main_menu; + + public Rn_Sub_Menu() { + super(); + } + + + + public Rn_Sub_Menu(Integer id, String sub_menu_name, String sub_menu_icon, String sub_menu_action_link, + Rn_Main_Menu rn_main_menu) { + super(); + this.id = id; + this.sub_menu_name = sub_menu_name; + this.sub_menu_icon = sub_menu_icon; + this.sub_menu_action_link = sub_menu_action_link; + this.rn_main_menu = rn_main_menu; + } + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getSub_menu_name() { + return sub_menu_name; + } + + public void setSub_menu_name(String sub_menu_name) { + this.sub_menu_name = sub_menu_name; + } + + public String getSub_menu_icon() { + return sub_menu_icon; + } + + public void setSub_menu_icon(String sub_menu_icon) { + this.sub_menu_icon = sub_menu_icon; + } + + public String getSub_menu_action_link() { + return sub_menu_action_link; + } + + public void setSub_menu_action_link(String sub_menu_action_link) { + this.sub_menu_action_link = sub_menu_action_link; + } + + public Rn_Main_Menu getRn_main_menu() { + return rn_main_menu; + } + + public void setRn_main_menu(Rn_Main_Menu rn_main_menu) { + this.rn_main_menu = rn_main_menu; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java new file mode 100644 index 0000000..ba025d4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_AccId_Column.java @@ -0,0 +1,81 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_AccId_Column implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java new file mode 100644 index 0000000..b6a2d38 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Rn_Who_Columns.java @@ -0,0 +1,65 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_Columns implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + @Column(name = "UPDATED_BY") + private Long updatedBy; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java new file mode 100644 index 0000000..10ade6b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SingleSerise.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.entity; + +import java.math.BigDecimal; + +import lombok.Data; + +@Data +public class SingleSerise { + private String name; + private BigDecimal value; + + public SingleSerise( String name, BigDecimal value){ + this.name = name; + this.value = value; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java new file mode 100644 index 0000000..4061bc0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Success.java @@ -0,0 +1,41 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class Success implements Serializable { + + private static final long serialVersionUID = 1L; + + private String message; + + private String title; + + public String getMessage () + { + return message; + } + + public void setMessage (String message) + { + this.message = message; + } + + public String getTitle () + { + return title; + } + + public void setTitle (String title) + { + this.title = title; + } + + @Override + public String toString() + { + return "ClassPojo [message = "+message+", title = "+title+"]"; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java new file mode 100644 index 0000000..df220bb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/SuccessPojo.java @@ -0,0 +1,36 @@ +package com.realnet.fnd.entity; + +import java.io.Serializable; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; + +@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" }) +public class SuccessPojo implements Serializable { + + private static final long serialVersionUID = 1L; + + private Success success; + + public SuccessPojo() { + + } + + public SuccessPojo(Success success) { + this.success = success; + } + + + public Success getSuccess() { + return success; + } + + public void setSuccess(Success success) { + this.success = success; + } + + @Override + public String toString() + { + return "ClassPojo [success = "+success+"]"; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java new file mode 100644 index 0000000..95cb5c0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/Version.java @@ -0,0 +1,32 @@ +package com.realnet.fnd.entity; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.session.entity.VersionModel; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; + +@RestController +@RequestMapping(value = "/version", produces = { "application/json" }) +@Api(tags = {"Common"}) +public class Version { + @ApiOperation(value = "Gets the version of the REST API", notes = "", response = VersionModel.class) + @ApiResponses(value = { @ApiResponse(code = 200, message = "Returns the version info for the REST API.", response = VersionModel.class) }) + @RequestMapping( method = RequestMethod.GET) + public VersionModel getVersion() { + //Authentication ath = SecurityContextHolder.getContext().getAuthentication(); + //TokenUser usr = (TokenUser)ath.getDetails(); + //String customerId = usr.getUser().getCustomerId() + VersionModel r = new VersionModel(); + r.setVersion("1.0.0"); + r.setMajor(1); + r.setMinor(0); + r.setPatch(0); + return r; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java new file mode 100644 index 0000000..36b5d34 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/WireFrameCopyDTO.java @@ -0,0 +1,18 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class WireFrameCopyDTO { + private int from_projectId; + private int from_moduleId; + private int from_WireFrameId; + private String to_uiName; + + public WireFrameCopyDTO() { + super(); + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java new file mode 100644 index 0000000..a04cae9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity/projectCopyDTO.java @@ -0,0 +1,12 @@ +package com.realnet.fnd.entity; + +import lombok.Data; + +@Data +public class projectCopyDTO { + private int from_projectId; + private String to_projectName; + private String to_tech_stack; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java new file mode 100644 index 0000000..63bec83 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/ExtensionModel.java @@ -0,0 +1,47 @@ +package com.realnet.fnd.entity1; + +import javax.persistence.Column; + +import lombok.Data; + +@Data +public class ExtensionModel { + + + + private String ext1; + private String ext2; + private String ext3; + private String ext4; + private String ext5; + private String ext6; + private String ext7; + private String ext8; + private String ext9; + private String ext10; + + @Column(length = 4000) + private String bigext1; + + @Column(length = 4000) + private String bigext2; + + @Column(length = 4000) + private String bigext3; + + @Column(length = 4000) + private String bigext4; + + @Column(length = 4000) + private String bigext5; + + private String flex1; + private String flex2; + + private String flex3; + private String flex4; + private String flex5; + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java new file mode 100644 index 0000000..8186c9d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccess.java @@ -0,0 +1,90 @@ +package com.realnet.fnd.entity1; + + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + +import com.realnet.users.entity1.AppUserRole; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_GRP_MENU_ACCESS") +@IdClass(GrpMenuAccesscompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class GrpMenuAccess { + @Id + @ManyToOne + @JoinColumn(name = "usr_grp") + private AppUserRole usrGrp; + @Id + @ManyToOne + @JoinColumn(name = "menu_item_id") + private MenuDet menuItemId; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mexport; + + + private Long menuId; + private String mVisible; + private String createby; + private Date createdAt; + private String updateby; + private Date updatedAt; + + private String isdisable; + + + @Column(name = "itemSeq") + private Long itemSeq; + + @Column(name = "MenuItemDesc") + private String menuItemDesc; + private String status; + + + @Column(name = "moduleName") + private String moduleName; + + + + @Column(name = "MainMenuActionName") + private String main_menu_action_name; + + @Column(name = "MainMenuIconName") + private String main_menu_icon_name; + + @Transient + private List subMenus=new ArrayList(); + + + @Transient + private Long grpid; + @Transient + private Long gmenuid; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java new file mode 100644 index 0000000..5fedd4e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.entity1; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class GrpMenuAccesscompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long menuItemId; + private Long usrGrp; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java new file mode 100644 index 0000000..2334163 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MIXMENUN.java @@ -0,0 +1,33 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MIXMENUN { + private long menuItemId; + private String menuItemDesc; + private long menuId; + + private String mainMenuActionName; + private String mainMenuIconName; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mVisible; + private List subMenus; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java new file mode 100644 index 0000000..35c26f7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MenuDet.java @@ -0,0 +1,80 @@ +package com.realnet.fnd.entity1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "SEC_MENU_DET") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MenuDet extends menudet_who{ + + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long menuItemId; + + @Column(name = "itemSeq") + private Long itemSeq; + + @Column(name = "MenuItemDesc") + private String menuItemDesc; + private String status; + + private Long menuId; + + @Column(name = "moduleName") + private String moduleName; + + + + + + @Column(name = "MainMenuActionName") + private String main_menu_action_name; + + @Column(name = "MainMenuIconName") + private String main_menu_icon_name; + + @Transient + private List subMenus=new ArrayList();; + + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java new file mode 100644 index 0000000..72a0ee9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenu.java @@ -0,0 +1,37 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.List; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class MixMenu { +// private BigDecimal menuItemId; + private BigInteger menuItemId; + + private String menuItemDesc; +// private BigDecimal menuId; + private BigInteger menuId; + + + private String mainMenuActionName; + private String mainMenuIconName; + private String mCreate; + private String mEdit; + private String mQuery; + private String mDelete; + private String mVisible; + private List subMenus; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java new file mode 100644 index 0000000..72fcedd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/MixMenuNew.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.entity1; + +import java.math.BigDecimal; + +public interface MixMenuNew { + + BigDecimal getmenu_item_id(); + String getmenu_item_desc(); + BigDecimal getmenu_id(); + String getm_create(); + String getmain_menu_action_name(); + String getmain_menu_icon_name(); + String getm_edit(); + String getm_query(); + String getm_delete(); + String getm_visible(); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java new file mode 100644 index 0000000..d7de0ef --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/entity1/menudet_who.java @@ -0,0 +1,46 @@ +package com.realnet.fnd.entity1; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class menudet_who implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; + +// @Column(name = "UPDATED_BY") +// private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java new file mode 100644 index 0000000..d2d7daa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/ExtFieldRepository.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Ext_Fields; + +@Repository +public interface ExtFieldRepository extends JpaRepository { + + @Query(value= "SELECT * FROM rn_ext_field_t WHERE ACCOUNT_ID=:acc_id AND FORM_CODE=:f_code" , nativeQuery = true) + List getExtensionFieldByFormCode(@Param("acc_id")String accountId, @Param("f_code") String form_code); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java new file mode 100644 index 0000000..a896224 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/LookUpRepository.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Lookup_Values; + +@Repository +public interface LookUpRepository extends JpaRepository { + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List getLookupValues(); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='DataType'" , nativeQuery = true) + List getDataTypeValues(); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java new file mode 100644 index 0000000..c88de92 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/RnGroupLineRepository.java @@ -0,0 +1,14 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; + +public interface RnGroupLineRepository extends JpaRepository { + +// public List findByHeader(Rn_Menu_Group_Header menu_group_header); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java new file mode 100644 index 0000000..9d25b05 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.java @@ -0,0 +1,30 @@ +package com.realnet.fnd.repository; + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +@Repository +public interface Rn_DynamicTransactionRepository extends JpaRepository { + + // JPQL + // @Query("SELECT e from RN_DYNAMIC_TRANSACTION e where e.FORM_ID =:form_id") + // @Query("SELECT e from RN_DYNAMIC_TRANSACTION e where e.FORM_ID =:form_id AND e.ID =:id") + + // NATIVE + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE FORM_ID =:form_id", nativeQuery = true) + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE ID =:id ANDFORM_ID =:form_id" , nativeQuery = true) + + @Query(value = "SELECT * FROM rn_dynamic_transaction WHERE FORM_ID =:form_id", nativeQuery = true) + List findByFormId(@Param("form_id") int form_id); + + @Query(value = "SELECT * FROM rn_dynamic_transaction WHERE ID =:id AND FORM_ID =:form_id", nativeQuery = true) + Optional findByIdAndFormId(@Param("id") int id, @Param("form_id") int form_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java new file mode 100644 index 0000000..95df5fc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.java @@ -0,0 +1,24 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +@Repository +public interface Rn_Forms_Setup_Repository extends JpaRepository { + + // JPQL: @Query("SELECT e from RN_FORMS_SETUP_T e where e.FORM_ID =:form_id") + // NATIVE : @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id" , nativeQuery = true) + + @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id", nativeQuery = true) + List findByFormId(@Param("form_id") int form_id); + + // @Query(value = "SELECT * FROM RN_DYNAMIC_TRANSACTION WHERE FORM_ID=:form_id", + // nativeQuery = true) + // Optional findByFormId(@Param("form_id") int form_id); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java new file mode 100644 index 0000000..2fc624d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Function_Register_Repository.java @@ -0,0 +1,22 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Function_Register; + +@Repository +public interface Rn_Function_Register_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_FUNC_REGISTER WHERE MENU_ID =:menu_id" , nativeQuery = true) + List findByMenuId(@Param("menu_id") int menu_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java new file mode 100644 index 0000000..3419ced --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_InstanceTypeRepository.java @@ -0,0 +1,11 @@ +package com.realnet.fnd.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Instance_Type; + +@Repository +public interface Rn_InstanceTypeRepository extends JpaRepository { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java new file mode 100644 index 0000000..aa3403d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_LookUpRepository.java @@ -0,0 +1,30 @@ +package com.realnet.fnd.repository; + +import java.io.IOException; +import java.util.List; + +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 com.realnet.fnd.entity.Rn_Lookup_Values; + +@Repository +public interface Rn_LookUpRepository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List findLookupValues(); + + @Query(value = "SELECT LOOKUP_CODE FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='DataType'" , nativeQuery = true) + List findDataTypeValues(); + + + @Query(value = "SELECT * FROM RN_LOOKUP_VALUES_T WHERE LOOKUP_TYPE ='Form_ext'" , nativeQuery = true) + List findExtensions(); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java new file mode 100644 index 0000000..1222879 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Main_Menu_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +@Repository +public interface Rn_Main_Menu_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_MAIN_MENU WHERE ACCOUNT_ID =:acc_id" , nativeQuery = true) + List findByAccountId(@Param("acc_id") String account_id); // accountId +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java new file mode 100644 index 0000000..53c9f91 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Group_Repository.java @@ -0,0 +1,17 @@ +package com.realnet.fnd.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +@Repository +public interface Rn_Menu_Group_Repository extends JpaRepository { + + // JPQL: @Query("SELECT e from RN_FORMS_SETUP_T e where e.FORM_ID =:form_id") + // NATIVE : @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id" , nativeQuery = true) + +// @Query(value = "SELECT * FROM RN_FORMS_SETUP_T WHERE FORM_ID=:form_id", nativeQuery = true) +// List findByFormId(@Param("form_id") int form_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java new file mode 100644 index 0000000..c0c8b3e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository/Rn_Menu_Register_Repository.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.repository; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +@Repository +public interface Rn_Menu_Register_Repository extends JpaRepository { + // for pagination + Page findAll(Pageable p); + + @Query(value = "SELECT * FROM RN_MENU_REGISTER WHERE ACCOUNT_ID =:acc_id" , nativeQuery = true) + List findByAccountId(@Param("acc_id") String account_id); // accountId +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java new file mode 100644 index 0000000..9cf5daa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/GrpMenuAccessRepository.java @@ -0,0 +1,87 @@ +package com.realnet.fnd.repository1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.GrpMenuAccesscompositeKey; + +@Repository +public interface GrpMenuAccessRepository extends JpaRepository{ + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1", nativeQuery = true) + GrpMenuAccess findByUsrGrp(Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1 ORDER BY item_seq", nativeQuery = true) + List< GrpMenuAccess> findAllByUsrGrp(Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=?1",nativeQuery = true) + GrpMenuAccess findbymenuitemid(Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access where child = 0 ", nativeQuery = true) + List findAllRoots(); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.child=:parent", nativeQuery = true) + List findAllSubmenu(@Param("parent") Long parent); +// @Query(value="SELECT * FROM sec_grp_menu_access a where a.parent=:parent", nativeQuery = true) +// GrpMenuAccess findById(@Param("parent") Long parent); + +// @Query(value="SELECT * FROM sec_grp_menu_access where child = 0 and created_for =:created_for ", nativeQuery = true) +// List findAllRootsbyusrGrp(@Param("created_for") Long created_for); + + @Query(value="SELECT * FROM sec_grp_menu_access where child = 0 and usr_grp =:usr_grp ", nativeQuery = true) + List findAllRootsbyusrGrp(@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access where menu_id = 0 and status= 'Enable' and usr_grp =:usr_grp ORDER BY item_seq;", nativeQuery = true) + List findAllRootsByMenuId(@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuId(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.status= 'Enable' and a.menu_id=:menu_item_id and a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuIdWithStatus(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + GrpMenuAccess findById1(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findlist(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + GrpMenuAccess findById2(@Param("menu_item_id") Long menu_item_id, @Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + Optional findbygrpandmenuid(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.usr_grp =:usr_grp and a.menu_item_id=:menu_item_id", nativeQuery = true) + List findById(@Param("usr_grp") Long usr_grp,@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.usr_grp =:usr_grp and a.menu_item_id=:menu_item_id", nativeQuery = true) + GrpMenuAccess findSingle(@Param("usr_grp") Long usr_grp,@Param("menu_item_id") Long menu_item_id); + + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id && a.usr_grp =:usr_grp", nativeQuery = true) + GrpMenuAccess findByUsrgrpAndMenuitemid(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findByGrpAndMenuid1(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id = 0 && a.usr_grp =:usr_grp && a.menu_item_id=:menu_item_id ORDER BY item_seq;", nativeQuery = true) + GrpMenuAccess findAllRootsByMenuIdAndGrp(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id", nativeQuery = true) + List findAllSubmenuByMenuitemid(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_id=:menu_item_id && a.usr_grp =:usr_grp ORDER BY item_seq", nativeQuery = true) + List findAllSubmenuByMenuitemidAndUsrGrp(@Param("menu_item_id") Long menu_item_id,@Param("usr_grp") Long usr_grp); + + @Query(value="SELECT * FROM sec_grp_menu_access a where a.menu_item_id=:menu_item_id", nativeQuery = true) + List findAllById(@Param("menu_item_id") Long menu_item_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java new file mode 100644 index 0000000..e2ecf69 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/repository1/MenuDetRepository.java @@ -0,0 +1,274 @@ +package com.realnet.fnd.repository1; + +import java.util.List; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MIXMENUN; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.entity1.MixMenuNew; + +@Repository +public interface MenuDetRepository extends JpaRepository{ + @Query(value="select a.menu_item_id,a.menu_item_desc, \n" + + " a.menu_id,b.m_create,b.m_visible,\n" + + " b.m_edit,b.m_query,b.m_delete\n" + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "order by a.item_seq", + countQuery="select count(*) " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "order by a.item_seq",nativeQuery=true) + Page getAll(Pageable page); + + @Query(value="select a.menu_item_id,a.menu_item_desc, \n" + + " a.menu_id,b.m_create,b.m_visible,\n" + + " b.m_edit,b.m_query,b.m_delete\n" + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp = ?1 " + + "and a.menu_id = ?2 " + + "order by a.item_seq",countQuery="select count(*) " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp = ?1 " + + "and a.menu_id = ?2 " + + "order by a.item_seq;" + ,nativeQuery = true) + List getById(Long usr_grp,Long menu_id); + +// @Query(value="select a.menu_item_id,a.menu_item_desc,\n" +// + " a.menu_id,b.m_create,b.m_visible,\n" +// + " b.m_edit,b.m_query,b.m_delete,\n" +// + " a.main_menu_action_name,a.main_menu_icon_name " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1\n" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", +// countQuery="select count(*) " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", +// nativeQuery=true) +// List getByUserId(Long usr_grp,Long menu_id); + + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete,\n" + + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name " + + "from sec_menu_det a,sec_grp_menu_access b\n" + + "where b.menu_item_id=a.menu_item_id\n" + + "and b.usr_grp =:usr_grp\n" + + "and a.menu_id=:menu_id " + + "order by a.item_seq", +// countQuery="select count(*) " +// + "from sec_menu_det a,sec_grp_menu_access b\n" +// + "where b.menu_item_id=a.menu_item_id\n" +// + "and b.usr_grp = ?1" +// + "and a.menu_id= ?2 " +// + "order by a.item_seq", + nativeQuery=true) + List getByUserId(Long usr_grp,Long menu_id); + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\r\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\r\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete,\r\n" + + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + , + nativeQuery=true) + List getallmenu(); + + @Query(value="select a.menu_item_id menu_item_id,a.menu_item_desc menu_item_desc,\r\n" + + " a.menu_id menu_id,b.m_create m_create,b.m_visible m_visible,\r\n" + + " b.m_edit m_edit,b.m_query m_query,b.m_delete m_delete\r\n" +// + " a.main_menu_action_name main_menu_action_name,a.main_menu_icon_name main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + , + nativeQuery=true) + List allmenu(); + + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=100", + nativeQuery = true) + List findEqual100(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >100 && menu_id< 200);", + nativeQuery = true) + List findGreater100(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=200", + nativeQuery = true) + List findEqual200(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >200 && menu_id< 300);", + nativeQuery = true) + List findGreater200(); + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=300", + nativeQuery = true) + List findEqual300(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >300 && menu_id< 400);", + nativeQuery = true) + List findGreater300(); + + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=400", + nativeQuery = true) + List findEqual400(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >400 && menu_id< 500);", + nativeQuery = true) + List findGreater400(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=500", + nativeQuery = true) + List findEqual500(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >500 && menu_id< 600);", + nativeQuery = true) + List findGreater500(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b\r\n" + + " where a.menu_id=600", + nativeQuery = true) + List findEqual600(); + + @Query(value="select a.menu_item_id,a.menu_item_desc,\r\n" + + " a.menu_id,b.m_create,b.m_visible,\r\n" + + " b.m_edit,b.m_query,b.m_delete,\r\n" + + " a.main_menu_action_name,a.main_menu_icon_name \r\n" + + " from sec_menu_det a,sec_grp_menu_access b \r\n" + + " where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >600 && menu_id< 700);", + nativeQuery = true) + List findGreater600(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=100", nativeQuery = true) + MenuDet findequalto100(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >100 && menu_id< 200)", nativeQuery = true) + List findgreaterthan100(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=200", nativeQuery = true) + MenuDet findequalto200(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >200 && menu_id< 300)", nativeQuery = true) + List findgreaterthan200(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=300", nativeQuery = true) + MenuDet findequalto300(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >300 && menu_id< 400)", nativeQuery = true) + List findgreaterthan300(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=400", nativeQuery = true) + MenuDet findequalto400(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >400 && menu_id< 500)", nativeQuery = true) + List findgreaterthan400(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=500", nativeQuery = true) + MenuDet findequalto500(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >500 && menu_id< 600)", nativeQuery = true) + List findgreaterthan500(); + + @Query(value="SELECT * FROM sec_menu_det where menu_id=600", nativeQuery = true) + MenuDet findequalto600(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=ANY(SELECT menu_id from sec_menu_det where menu_id >600 && menu_id< 700)", nativeQuery = true) + List findgreaterthan600(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=?1", nativeQuery = true) + List findAllById(Long menu_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id is null", nativeQuery = true) + List findAllRoots(); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id=:menu_item_id", nativeQuery = true) + List findAllSubmenu(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.root_menudet_id=:menu_item_id", nativeQuery = true) + List findAllSubCategoriesInRoot(@Param("menu_item_id") List menu_item_id); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id = 0 ORDER BY item_seq ASC", nativeQuery = true) + List findAllRootsByMenuId(); + + @Query(value="SELECT * FROM sec_menu_det a where a.menu_id=:menu_item_id ORDER BY item_seq ASC", nativeQuery = true) + List findAllSubmenuByMenuId(@Param("menu_item_id") Long menu_item_id); + + @Query(value="select * from sec_menu_det where menu_item_id = :menu_item_id UNION select * from sec_menu_det where menu_id = :menu_item_id", nativeQuery = true) + List findAllSubmenuforusrgrp(@Param("menu_item_id") Long menu_item_id); + + @Query(value="SELECT `COLUMN_NAME` FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE `TABLE_SCHEMA`='realnet_CNSBE' AND `TABLE_NAME`=:TABLE_NAME", nativeQuery = true) + List findcolumnbytablename(@Param("TABLE_NAME") Object TABLE_NAME); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java new file mode 100644 index 0000000..b5274ce --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/CustomResponse.java @@ -0,0 +1,15 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class CustomResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; + //private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java new file mode 100644 index 0000000..8bb7ab2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/EntityResponse.java @@ -0,0 +1,15 @@ +package com.realnet.fnd.response; + +import lombok.Data; + +@Data +public class EntityResponse { + + private String msg; + + public EntityResponse(String msg) { + super(); + this.msg = msg; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java new file mode 100644 index 0000000..b1ab421 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/OperationResponse.java @@ -0,0 +1,19 @@ +/** + This is the common structure for all responses + if the response contains a list(array) then it will have 'items' field + if the response contains a single item then it will have 'item' field + */ + + +package com.realnet.fnd.response; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data //for getters and setters +public class OperationResponse { + public enum ResponseStatusEnum {SUCCESS, ERROR, WARNING, NO_ACCESS}; + @ApiModelProperty(required = true) + private ResponseStatusEnum operationStatus; + private String operationMessage; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java new file mode 100644 index 0000000..9cb000b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/PageResponse.java @@ -0,0 +1,53 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Sort; + +import lombok.Getter; +import lombok.Setter; + +//@Data //for getters and setters +public class PageResponse extends OperationResponse { + @Getter @Setter private boolean first; + @Getter @Setter private boolean last; + @Getter @Setter private int currentPageNumber; + @Getter @Setter private int itemsInPage; + @Getter @Setter private int pageSize; + @Getter @Setter private int totalPages; + @Getter @Setter private long totalItems; + @Getter @Setter private Sort sort; + private List items; + + public void setPageStats(Page pg, boolean setDefaultMessage){ + this.first = pg.isFirst(); + this.last = pg.isLast(); + this.currentPageNumber = pg.getNumber(); + this.itemsInPage = pg.getNumberOfElements(); + this.pageSize = pg.getSize(); + this.totalPages = pg.getTotalPages(); + this.totalItems = pg.getTotalElements(); + //this.items = pg.getContent(); + this.sort = pg.getSort(); + if (setDefaultMessage == true){ + this.setOperationStatus(ResponseStatusEnum.SUCCESS); + this.setOperationMessage("Page " + (pg.getNumber()+ 1 ) + " of " + pg.getTotalPages() ); + } + } + + public void setPageTotal(int count, boolean setDefaultMessage){ + //this.items = list; + this.first = true; + this.last = true; + this.itemsInPage = count; + this.totalItems = count; + this.totalPages = 1; + this.pageSize = count; + if (setDefaultMessage == true){ + this.setOperationStatus(ResponseStatusEnum.SUCCESS); + this.setOperationMessage("Total " + count + " items "); + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java new file mode 100644 index 0000000..aab0da1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_DynamicTransactionResponse.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_DynamicTransactionResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java new file mode 100644 index 0000000..2c5f1fd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Forms_SetupResponse.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Forms_SetupResponse extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java new file mode 100644 index 0000000..b7a0733 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Function_Register_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Function_Register; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class Rn_Function_Register_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java new file mode 100644 index 0000000..70c3a4a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Main_Menu_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Main_Menu_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java new file mode 100644 index 0000000..c536780 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Group_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Menu_Group_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java new file mode 100644 index 0000000..70a0e65 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/Rn_Menu_Register_Response.java @@ -0,0 +1,16 @@ +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class Rn_Menu_Register_Response extends PageResponse { + @ApiModelProperty(required = true, value = "") + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java new file mode 100644 index 0000000..26223d8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/response/SingleDataSeriseResponse.java @@ -0,0 +1,16 @@ +//This is a common http response model for providing data series + +package com.realnet.fnd.response; + +import java.util.List; + +import com.realnet.fnd.entity.SingleSerise; + +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class SingleDataSeriseResponse extends OperationResponse { + private List items; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java new file mode 100644 index 0000000..847a2ad --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldService.java @@ -0,0 +1,26 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Ext_Fields; + +public interface ExtFieldService { + List getAll(); + //Page getAll(Pageable p); + Rn_Ext_Fields getById(int id); + Rn_Ext_Fields save(Rn_Ext_Fields rn_ext_fields); + Rn_Ext_Fields updateById(int id, Rn_Ext_Fields rn_ext_fields); + boolean deleteById(int id); + +// // LOOKUP FIELDS (ATTRIBUTE, FLEX) +// List getLookupValues(); +// +// // TEXTFIELD, DROPDOWN ETC... +// List getDataTypeValues(); + + // BUILD HTML FOR EXTENSION + String buildExtensionByFormCode(String acc_id, String f_code, Integer formId); + + String stringReplace(String str, String start, String end, String replaceWith); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java new file mode 100644 index 0000000..b06699a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/ExtFieldServiceImpl.java @@ -0,0 +1,260 @@ +package com.realnet.fnd.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Ext_Fields; +import com.realnet.fnd.repository.ExtFieldRepository; +import com.realnet.fnd.repository.Rn_LookUpRepository; +import com.realnet.utils.WireFrameConstant; + +@Service +public class ExtFieldServiceImpl implements ExtFieldService { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private ExtFieldRepository extFieldRepository; + + @Autowired + Rn_LookUpRepository lookUpRepository1; + + @Override + public List getAll() { + return extFieldRepository.findAll(); + } + +// @Override +// public Page getAll(Pageable page) { +// return extFieldRepository.findAll(page); +// } + + @Override + public Rn_Ext_Fields getById(int id) { + Rn_Ext_Fields rn_ext_fields = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + return rn_ext_fields; + } + + @Override + public Rn_Ext_Fields save(Rn_Ext_Fields rn_ext_fields) { + Rn_Ext_Fields savedRn_Ext_Fields = extFieldRepository.save(rn_ext_fields); + return savedRn_Ext_Fields; + } + + @Override + public Rn_Ext_Fields updateById(int id, Rn_Ext_Fields extensionRequest) { + Rn_Ext_Fields old_ext_field = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + + old_ext_field.setField_name(extensionRequest.getField_name()); + old_ext_field.setMapping(extensionRequest.getMapping()); + old_ext_field.setData_type(extensionRequest.getData_type()); + old_ext_field.setType(extensionRequest.getType()); + old_ext_field.setActive(extensionRequest.isActive()); + final Rn_Ext_Fields updated_ext_field = extFieldRepository.save(old_ext_field); + return updated_ext_field; + } + + @Override + public boolean deleteById(int id) { + if (!extFieldRepository.existsById(id)) { + throw new ResourceNotFoundException("Extension Field not found :: " + id); + } + Rn_Ext_Fields rn_ext_fields = extFieldRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + id)); + extFieldRepository.delete(rn_ext_fields); + return true; + } + +// @Override +// public List getLookupValues() { +// return lookUpRepository.findLookupValues(); +// } +// +// @Override +// public List getDataTypeValues() { +// return lookUpRepository.findDataTypeValues(); +// } + + @Override + public String buildExtensionByFormCode(String acc_id, String f_code, Integer formId) { + + Optional extensions = extFieldRepository.findById(formId); +// List extensions = extFieldRepository.getExtensionFieldByFormCode(acc_id, f_code); + StringBuilder extension_grid_form = new StringBuilder(); + StringBuilder extension_entry_form = new StringBuilder(); + + if (extensions == null || !extensions.isPresent()) { + throw new ResourceNotFoundException("Extension Fields Not Found"); + } else { + +// extension_entry_form.append("\n"); + // extension_code.append("
\n" + "
\n"); + +// for (Rn_Ext_Fields extension : extensions) { + // String form_code = extension.getForm_code(); + Rn_Ext_Fields extension = extensions.get(); + String type = extension.getType(); // ho, hl + String data_type = extension.getData_type(); + String mapping = extension.getMapping(); + String field_name = extension.getField_name(); + + String ext = ",\"extValue\":\"" + mapping + "\""; + + if (WireFrameConstant.DT_TEXTFIELD.equals(data_type)) { +// extension_entry_form.append("
\r\n" + " \r\n" +// + " \r\n" + " \n"); + + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"text\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + } + + if (WireFrameConstant.DT_DATE.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"date\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + + } + + if (WireFrameConstant.DT_LONGTEXT.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); +// + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"textarea\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + + "},"); + + } + + if (WireFrameConstant.FIELD_CHECKBOX.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"checkbox\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + + "},"); + + } + +// if (TypeConstants.FIELD_CHECKBOX.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); +// } + if (WireFrameConstant.FIELD_AUTOCOMPLETE.equals(data_type)) { +// extension_entry_form.append(" \r\n" + " \r\n" +// + " \r\n" + " \n"); + extension_entry_form.append("{\"fieldName\":\"" + field_name + + "\",\"fieldType\":\"text\",\"fieldValue\":\"\",\"formCode\":\"" + f_code + "\"" + ext + "},"); + } + + // extension grid-view code + extension_grid_form.append("{prop: \"" + mapping + "\", name: \"" + field_name + "\", width: 200},\n"); + + // extension read-only code + + // extension update code + + } + extension_entry_form.deleteCharAt(extension_entry_form.length() - 1); + // extension_code.append("\n\n
" + field_name +// + "
" + field_name +// + "
" + field_name +// + "
" + field_name +// + "
" + field_name +// + "
" + field_name +// + "
"); +// extension_entry_form.append("\n"); + +// FileWriter fw = null; +// BufferedWriter bw = null; +// try { +// +// // ENTRY FORM +//// String ngExtEntryPath = angularProjectPath +//// + "/src/app/pages/university/teacher/extensions/add-ext/teacher-add-extension.component.html"; +// +// String path = projectPath + "/cns-portal/pages"; +// +// String ngExtEntryPath = path + File.separator + f_code + "_ext.html"; +// +// File ngExtEntryFile1 = new File(path); +// if (!ngExtEntryFile1.exists()) { +// ngExtEntryFile1.mkdir(); +// } +// +// File ngExtEntryFile = new File(ngExtEntryPath); +// if (!ngExtEntryFile.exists()) { +// ngExtEntryFile.createNewFile(); +// } +// fw = new FileWriter(ngExtEntryFile.getAbsoluteFile()); +// bw = new BufferedWriter(fw); +// bw.write(extension_entry_form.toString()); +// bw.close(); +// +// // GRID VIEW FORM +//// final String start = "// EXTENSION COLUMN START"; +//// final String end = "// EXTENSION COLUMN END"; +//// String replaceWith = extension_grid_form.toString(); +//// +//// String ngExtGridPath = path + "/teacher-add-extension.component.ts"; +//// File ngExtGridFile = new File(ngExtGridPath); +//// String fileString = FileUtils.readFileToString(ngExtGridFile, StandardCharsets.UTF_8); +//// String finalString = stringReplace(fileString, start, end, replaceWith); +//// +//// bw = new BufferedWriter(new FileWriter(ngExtGridFile, false)); // replaced string +//// bw.write(finalString); +//// bw.close(); +// +// // UPDATE FORM +// +// // READ-ONLY FORM +// +// } catch (IOException e) { +// e.printStackTrace(); +// } + + return extension_entry_form.toString(); + } + + @Override + public String stringReplace(String str, String start, String end, String replaceWith) { + int i = str.indexOf(start); + while (i != -1) { + int j = str.indexOf(end, i + 1); + if (j != -1) { + /* + * @Include starting and ending string String data = str.substring(0, i + + * start.length()) + "\n" + replaceWith + "\n"; String temp = str.substring(j); + * + * @Not Include starting and ending string String data = str.substring(0, i) + + * "\n" + replaceWith + "\n"; String temp = str.substring(j + end.length()); + */ + String data = str.substring(0, i + start.length()) + "\n" + replaceWith + "\n"; + String temp = str.substring(j); + data += temp; + str = data; + i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); + } else { + break; + } + } + return str; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java new file mode 100644 index 0000000..a385565 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/FileStorageService.java @@ -0,0 +1,136 @@ +package com.realnet.fnd.service; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +//import com.realnet.codeextractor.service.Rn_Bcf_Extractor_Service; +import com.realnet.exceptions.StorageException; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class FileStorageService { + + //private static final Logger logger = LoggerFactory.getLogger(FileStorageService.class); + + @Autowired + private AppUserServiceImpl userService; + + @Autowired +// private Rn_Bcf_Extractor_Service extractorService; + + @Value("${projectPath}") + private String projectPath; + + public void uploadProfilePicture(MultipartFile file, String location) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + // create path for every new File + // File fileLoc = new File(location); + try { +// if(!fileLoc.exists()) { +// fileLoc.mkdir(); +// //System.out.println("Path Created..."); +// } + AppUser user = userService.getLoggedInUser(); + String UserId = String.valueOf(user.getUserId()); + String fileName = file.getOriginalFilename(); + + String ext = fileName.substring(fileName.lastIndexOf(".")); + String extension = FilenameUtils.getExtension(fileName); // lol + String newName = "profile-pic-" + UserId + ext; + + System.out.println(System.getProperty("java.io.tmpdir")); + File convFile = new File(System.getProperty("java.io.tmpdir")+System.getProperty("file.separator")+newName); + file.transferTo(convFile); + } catch (IOException e) { + String msg = String.format("Failed to store file %s", file.getName()); + log.info(msg); + throw new StorageException("Failed to store file ", e); + } + + } + + // ========================== BCF EXTRACTOR ============================= + // max size 100 mb + public void uploadFile(MultipartFile file, String location) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + try { + String fileName = file.getOriginalFilename(); + InputStream is = file.getInputStream(); + Files.copy(is, Paths.get(location + fileName), StandardCopyOption.REPLACE_EXISTING); + } catch (IOException e) { + String msg = String.format("Failed to store file : %s", file.getName()); + log.debug(msg); + throw new StorageException("Failed to store file", e); + } + + } + +// private static ArrayList fileList = new ArrayList(); +// +// public ArrayList listOFiles(String directory) throws IOException { +// File destDir = new File(directory); +// System.out.println("Destination Folder Path = " + directory); +// // ArrayList files = new ArrayList(); +// // Get all files from a directory. +// File[] fList = destDir.listFiles(); +// if (fList != null) { +// for (File file : fList) { +// if (file.isFile()) { +// fileList.add(file.getAbsolutePath()); +// // System.out.println("directory:" + file.getAbsolutePath()); +// } else if (file.isDirectory()) { +// listOFiles(file.getAbsolutePath()); +// } +// } +// } +// return fileList; +// } + + // =============== MOVE FILE FROM ONE DIRECTORY TO ANTHER ============== +// public void move(String fromDir, String toDir) throws IOException { +// File fromDirFile = new File(fromDir); +// File moveToFile = new File(toDir); +// +// String fileName = fromDirFile.getName(); +// +// // MOVE ALL FILES INTO PARENT DIRECTORY +// System.out.println("File name = " + fileName + "\n" + "Move to = " + toDir); +// fromDirFile.renameTo(new File(moveToFile, fromDirFile.getName())); +// } + + // ============== DELETE EMPTY DIRECTORY =========== +// public static void deleteEmptyDirectory(File dir) { +// if (dir.isDirectory()) { +// File[] fList = dir.listFiles(); +// if (fList != null) { +// for (File file : fList) { +// if (!file.isFile()) { +// System.out.println("Removing empty directory : " + file.getName()); +// file.delete(); +// deleteEmptyDirectory(file); +// } +// } +// dir.delete(); +// } +// } +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java new file mode 100644 index 0000000..beb5c17 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiec.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; + +public interface RnGroupMenuLineServiec { + + public Rn_Menu_Group_Line addToDb(Rn_Menu_Group_Line rn_Menu_Group_Line); + + public Rn_Menu_Group_Line getoneById(int id); + + public List getAll(); + + public Rn_Menu_Group_Line updateToDb(Rn_Menu_Group_Line rn_Menu_Group_Line); + +// public List getLinesByHeader(Rn_Menu_Group_Header rn_Menu_Group_Header); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java new file mode 100644 index 0000000..1ef3ca6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.java @@ -0,0 +1,49 @@ +package com.realnet.fnd.service; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.entity.Rn_Menu_Group_Line; +import com.realnet.fnd.repository.RnGroupLineRepository; + +@Service +public class RnGroupMenuLineServiecImpl implements RnGroupMenuLineServiec { + + @Autowired + private RnGroupLineRepository r; + + @Override + public Rn_Menu_Group_Line addToDb(Rn_Menu_Group_Line rn_Menu_Group_Line) { + Rn_Menu_Group_Line addToDb = this.r.save(rn_Menu_Group_Line); + return addToDb; + } + + @Override + public Rn_Menu_Group_Line getoneById(int id) { + Optional findById = this.r.findById(id); + return findById.get(); + } + + @Override + public List getAll() { + List all = this.r.findAll(); + return all; + } + + @Override + public Rn_Menu_Group_Line updateToDb(Rn_Menu_Group_Line rn_Menu_Group_Line) { + Rn_Menu_Group_Line addToDb = this.r.save(rn_Menu_Group_Line); + return addToDb; + } + +// @Override +// public List getLinesByHeader(Rn_Menu_Group_Header rn_Menu_Group_Header) { +// List lineByHeader = this.r.findLineByHeader(rn_Menu_Group_Header); +// return lineByHeader; +// } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java new file mode 100644 index 0000000..732171e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionService.java @@ -0,0 +1,26 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; + +public interface Rn_DynamicTransactionService { + List getAll(); + + Page getAll(Pageable p); + + List getByFormId(int form_id); + + Rn_Dynamic_Transaction getByIdAndFormId(int id, int form_id); + + + Rn_Dynamic_Transaction save(Rn_Dynamic_Transaction rn_dynamic_transaction); + + Rn_Dynamic_Transaction updateByFormId(int id, int form_id, Rn_Dynamic_Transaction rn_dynamic_transaction); + + boolean deleteById(int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java new file mode 100644 index 0000000..4ab937c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.java @@ -0,0 +1,105 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Dynamic_Transaction; +import com.realnet.fnd.repository.Rn_DynamicTransactionRepository; + +@Service +public class Rn_DynamicTransactionServiceImpl implements Rn_DynamicTransactionService { + + @Autowired + private Rn_DynamicTransactionRepository rn_dynamic_transactionRepository; + + @Override + public List getAll() { + return rn_dynamic_transactionRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_dynamic_transactionRepository.findAll(page); + } + + @Override + public List getByFormId(int form_id) { + // Rn_Dynamic_Transaction rn_dynamic_transaction = + // rn_dynamic_transactionRepository.findById(id) + List rn_dynamic_transaction = rn_dynamic_transactionRepository.findByFormId(form_id); + return rn_dynamic_transaction; + } + + @Override + public Rn_Dynamic_Transaction save(Rn_Dynamic_Transaction rn_dynamic_transaction) { + Rn_Dynamic_Transaction savedRn_Dynamic_Transaction = rn_dynamic_transactionRepository + .save(rn_dynamic_transaction); + return savedRn_Dynamic_Transaction; + } + + @Override + public Rn_Dynamic_Transaction updateByFormId(int id, int form_id, Rn_Dynamic_Transaction txRequest) { + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findByIdAndFormId(id, form_id) + .orElseThrow(() -> new ResourceNotFoundException("Extension Field not found :: " + form_id)); + rn_dynamic_transaction.setUpdatedBy(txRequest.getUpdatedBy()); + // rn_dynamic_transaction.setForm_id(txRequest.getForm_id()); // modify needed + rn_dynamic_transaction.setForm_version(txRequest.getForm_version()); + + rn_dynamic_transaction.setComp1(txRequest.getComp1()); + rn_dynamic_transaction.setComp2(txRequest.getComp2()); + rn_dynamic_transaction.setComp3(txRequest.getComp3()); + rn_dynamic_transaction.setComp4(txRequest.getComp4()); + rn_dynamic_transaction.setComp5(txRequest.getComp5()); + rn_dynamic_transaction.setComp6(txRequest.getComp6()); + rn_dynamic_transaction.setComp7(txRequest.getComp7()); + rn_dynamic_transaction.setComp8(txRequest.getComp8()); + rn_dynamic_transaction.setComp9(txRequest.getComp9()); + rn_dynamic_transaction.setComp10(txRequest.getComp10()); + rn_dynamic_transaction.setComp11(txRequest.getComp11()); + rn_dynamic_transaction.setComp12(txRequest.getComp12()); + rn_dynamic_transaction.setComp13(txRequest.getComp13()); + rn_dynamic_transaction.setComp14(txRequest.getComp14()); + rn_dynamic_transaction.setComp15(txRequest.getComp15()); + rn_dynamic_transaction.setComp16(txRequest.getComp16()); + rn_dynamic_transaction.setComp17(txRequest.getComp17()); + rn_dynamic_transaction.setComp18(txRequest.getComp18()); + rn_dynamic_transaction.setComp19(txRequest.getComp19()); + rn_dynamic_transaction.setComp20(txRequest.getComp20()); + rn_dynamic_transaction.setComp21(txRequest.getComp21()); + rn_dynamic_transaction.setComp22(txRequest.getComp22()); + rn_dynamic_transaction.setComp23(txRequest.getComp23()); + rn_dynamic_transaction.setComp24(txRequest.getComp24()); + rn_dynamic_transaction.setComp25(txRequest.getComp25()); + rn_dynamic_transaction.setComp_l26(txRequest.getComp_l26()); + rn_dynamic_transaction.setComp_l27(txRequest.getComp_l27()); + rn_dynamic_transaction.setComp_l28(txRequest.getComp_l28()); + rn_dynamic_transaction.setComp_l29(txRequest.getComp_l29()); + rn_dynamic_transaction.setComp_l30(txRequest.getComp_l30()); + final Rn_Dynamic_Transaction updated_ext_field = rn_dynamic_transactionRepository.save(rn_dynamic_transaction); + return updated_ext_field; + } + + @Override + public boolean deleteById(int id) { + if (!rn_dynamic_transactionRepository.existsById(id)) { + throw new ResourceNotFoundException("Data not Exist = " + id); + } + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Data not found :: " + id)); + rn_dynamic_transactionRepository.delete(rn_dynamic_transaction); + return true; + } + + @Override + public Rn_Dynamic_Transaction getByIdAndFormId(int id, int form_id) { + Rn_Dynamic_Transaction rn_dynamic_transaction = rn_dynamic_transactionRepository.findByIdAndFormId(id, form_id) + .orElseThrow(() -> new ResourceNotFoundException("Data not found with id :: " + id + " and form_id ::" + form_id)); + return rn_dynamic_transaction; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java new file mode 100644 index 0000000..3ce6485 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_Service.java @@ -0,0 +1,29 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Forms_Setup; + +public interface Rn_Forms_Setup_Service { + List getAll(); + + Page getAll(Pageable p); + + Rn_Forms_Setup getById(int id); + + Rn_Forms_Setup save(Rn_Forms_Setup rn_forms_setup); + + Rn_Forms_Setup updateById(int id, Rn_Forms_Setup rn_forms_setup); + + boolean deleteById(int id); + + List getByFormId(int form_id); + + void buildDynamicForm(int form_id); + + String stringReplace(String str, String start, String end, String replaceWith); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java new file mode 100644 index 0000000..0d8063b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.java @@ -0,0 +1,302 @@ +package com.realnet.fnd.service; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.List; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Forms_Component_Setup; +import com.realnet.fnd.entity.Rn_Forms_Setup; +import com.realnet.fnd.repository.Rn_Forms_Setup_Repository; +import com.realnet.utils.WireFrameConstant; + +@Service +public class Rn_Forms_Setup_ServiceImpl implements Rn_Forms_Setup_Service { + + @Value("${angularProjectPath}") + private String angularProjectPath; + + @Autowired + private Rn_Forms_Setup_Repository rn_forms_setup_repository; + + @Override + public List getAll() { + return rn_forms_setup_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_forms_setup_repository.findAll(page); + } + + @Override + public Rn_Forms_Setup getById(int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + return rn_forms_setup; + } + + @Override + public Rn_Forms_Setup save(Rn_Forms_Setup rn_forms_setup) { + Rn_Forms_Setup savedRn_Forms_Setup = rn_forms_setup_repository.save(rn_forms_setup); + return savedRn_Forms_Setup; + } + + @Override + public Rn_Forms_Setup updateById(int id, Rn_Forms_Setup rn_forms_setupRequest) { + Rn_Forms_Setup old_rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + old_rn_forms_setup.setButton_caption(rn_forms_setupRequest.getButton_caption()); + old_rn_forms_setup.setForm_desc(rn_forms_setupRequest.getForm_desc()); + old_rn_forms_setup.setForm_name(rn_forms_setupRequest.getForm_name()); + old_rn_forms_setup.setPage_event(rn_forms_setupRequest.getPage_event()); + old_rn_forms_setup.setRelated_to(rn_forms_setupRequest.getRelated_to()); + // line part + old_rn_forms_setup.setComponents(rn_forms_setupRequest.getComponents()); + // updated by + old_rn_forms_setup.setUpdatedBy(rn_forms_setupRequest.getUpdatedBy()); + final Rn_Forms_Setup updated_rn_forms_setup = rn_forms_setup_repository.save(old_rn_forms_setup); + return updated_rn_forms_setup; + } + + @Override + public boolean deleteById(int id) { + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + id)); + rn_forms_setup_repository.delete(rn_forms_setup); + return true; + } + + @Override + public List getByFormId(int form_id) { + return rn_forms_setup_repository.findByFormId(form_id); + } + + @Override + public void buildDynamicForm(int form_id) + { + //HEADER + Rn_Forms_Setup rn_forms_setup = rn_forms_setup_repository.findById(form_id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Forms_Setup not found :: " + form_id)); + + //LINE + List components = rn_forms_setup.getComponents(); + String form_name = rn_forms_setup.getForm_name(); + String form_name_upper = form_name.toUpperCase(); + String buttonCaption = rn_forms_setup.getButton_caption(); + + StringBuilder dynamic_entry_form_html = new StringBuilder(); + StringBuilder dynamic_grid_view_form = new StringBuilder(); + StringBuilder dynamic_read_only_form = new StringBuilder(); + StringBuilder dynamic_edit_form = new StringBuilder(); + // add + dynamic_entry_form_html.append("
\r\n" + + "

ENTRY FORM

\r\n" + + "\r\n" + + "
\r\n" + + "

studen info

\r\n" + + "
\n" + + " \r\n" + + "
\r\n" + + " \r\n"); + + + // edit + dynamic_edit_form.append("
\r\n" + + "

EDIT FORM

\r\n" + + "
\r\n" + + "

" + form_name_upper + "

\r\n" + + "\r\n" + + "
\r\n" + + " \r\n" + + "
\n"); + + // read-only + dynamic_read_only_form.append("
\n"); + + int loopCount = 0; + for(Rn_Forms_Component_Setup component: components) + { + int i = ++loopCount; + String label = component.getLabel(); + String type = component.getType(); + boolean mandatory = Boolean.parseBoolean(component.getMandatory()); + boolean readonly = Boolean.parseBoolean(component.getReadonly()); + //boolean b1=Boolean.parseBoolean(string); + String drop_value = component.getDrop_values(); + + System.out.println("Label Name::" + label); + // FOR MODIFICATION REFER : com.realnet.wfb.service: SpringMVCFieldTypeServiceImpl.java + if(WireFrameConstant.DT_TEXTFIELD.equalsIgnoreCase(type)) { + // ENTRY FORM (.html) + dynamic_entry_form_html.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + } else if (readonly) { + dynamic_entry_form_html.append(" style=\"width:180px\" readonly>\r\n" + + " \r\n" + + " \r\n"); + } else { + dynamic_entry_form_html.append(" style=\"width:180px\">\r\n" + + " \r\n" + + " \r\n"); + } + + // UPDATE FORM + dynamic_edit_form.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + + } + + if(WireFrameConstant.DT_LONGTEXT.equalsIgnoreCase(type)) { + System.out.println("LONG TEXT i =" + i); + dynamic_entry_form_html.append(" \r\n" + + " \r\n" + + " \r\n" + + " \n"); + } + + + if (WireFrameConstant.FIELD_CHECKBOX.equalsIgnoreCase(type)) { + dynamic_entry_form_html.append(" \r\n" + + " \r\n" + + " \r\n" + " \n"); + } + + if (WireFrameConstant.FIELD_AUTOCOMPLETE.equalsIgnoreCase(type)) { + dynamic_entry_form_html.append(" \r\n" + " \r\n" + + " \r\n" + " \n"); + } + + // GRID VIEW FORM (.ts) + dynamic_grid_view_form.append("{prop:\"comp" + i + "\" , name: \"" + label + "\" , width:120 },\r\n"); + + // READ-ONLY FORM + dynamic_read_only_form.append("\r\n" + + " \r\n" + + " \r\n" + + " \r\n"); + + } // LOOP END + + // ADD + dynamic_entry_form_html.append("\n
" + label + ": \r\n" + + " \r\n" + + "
" + label + ":
" + label + ":
" + label + + "
" + label + + "
" + label + " {{ dynamicForm.comp" + i + " }}
\r\n" + + "
\r\n" + + " \r\n" + + "
\r\n" + + "
\r\n" + + "
\r\n"); + + + // UPDATE + dynamic_edit_form.append(" \r\n" + + "
\r\n" + + " \r\n" + + " \r\n" + + " \r\n" + + "\r\n"); + + // READ-ONLY + dynamic_read_only_form.append(" \r\n"); + + FileWriter fw = null; + BufferedWriter bw = null; + try { + + // ENTRY FORM + String ngDynamicEntryFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/add/add-dynamic-form.component.html"; + File ngDynamicEntryFormHtmlFile = new File(ngDynamicEntryFormHtmlPath); + if (!ngDynamicEntryFormHtmlFile.exists()) { + ngDynamicEntryFormHtmlFile.createNewFile(); + } + fw = new FileWriter(ngDynamicEntryFormHtmlFile.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(dynamic_entry_form_html.toString()); + bw.close(); + + // UPDATE FORM + String ngDynamicEditFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/edit/edit-dynamic-form.component.html"; + File ngDynamicEditFormHtmlFile = new File(ngDynamicEditFormHtmlPath); + if (!ngDynamicEditFormHtmlFile.exists()) { + ngDynamicEditFormHtmlFile.createNewFile(); + } + fw = new FileWriter(ngDynamicEditFormHtmlFile.getAbsoluteFile()); + bw = new BufferedWriter(fw); + bw.write(dynamic_edit_form.toString()); + bw.close(); + + // GRID VIEW FORM + final String grid_form_start = "// DYNAMIC FORM GRID START"; + final String grid_form_end = "// DYNAMIC FORM GRID END"; + String grid_form_replaceWith = dynamic_grid_view_form.toString(); + String ngDynamicGridFormTsPath = angularProjectPath + + "/src/app/pages/dynamic-form/all/all-dynamic-form.component.ts"; + File ngDynamicGridFormTsFile = new File(ngDynamicGridFormTsPath); + String grid_fileString = FileUtils.readFileToString(ngDynamicGridFormTsFile, StandardCharsets.UTF_8); + String grid_finalString = stringReplace(grid_fileString, grid_form_start, grid_form_end, grid_form_replaceWith); + + bw = new BufferedWriter(new FileWriter(ngDynamicGridFormTsFile, false)); // replaced string + bw.write(grid_finalString); + bw.close(); + + // READ-ONLY FORM + final String read_only_form_start = ""; + final String read_only_form_end = ""; + String read_only_form_replaceWith = dynamic_read_only_form.toString(); + String ngDynamicReadOnlyFormHtmlPath = angularProjectPath + + "/src/app/pages/dynamic-form/read-only/read-only-dynamic-form.component.html"; + File ngDynamicReadOnlyFormHtmlFile = new File(ngDynamicReadOnlyFormHtmlPath); + String read_only_fileString = FileUtils.readFileToString(ngDynamicReadOnlyFormHtmlFile, StandardCharsets.UTF_8); + String read_only_finalString = stringReplace(read_only_fileString, read_only_form_start, read_only_form_end, read_only_form_replaceWith); + + bw = new BufferedWriter(new FileWriter(ngDynamicReadOnlyFormHtmlFile, false)); // replaced string + bw.write(read_only_finalString); + bw.close(); + + } catch (IOException e) { + System.out.println("error is .." + e); + } + } + + @Override + public String stringReplace(String str, String start, String end, String replaceWith) { + int i = str.indexOf(start); + while (i != -1) { + int j = str.indexOf(end, i + 1); + if (j != -1) { + String data = str.substring(0, i + start.length()) + "\n" + replaceWith + "\n"; + String temp = str.substring(j); + data += temp; + str = data; + i = str.indexOf(start, i + replaceWith.length() + end.length() + 1); + } else { + break; + } + } + return str; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java new file mode 100644 index 0000000..3e3e185 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_Service.java @@ -0,0 +1,21 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Function_Register; + +public interface Rn_Function_Register_Service { + List getAll(); + Page getAll(Pageable p); + Rn_Function_Register getById(int id); + Rn_Function_Register save(Rn_Function_Register rn_function_register); + Rn_Function_Register updateById(int id, Rn_Function_Register rn_function_register); + boolean deleteById(int id); + + List getByMenuId(int menu_id); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java new file mode 100644 index 0000000..298d828 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.java @@ -0,0 +1,81 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Function_Register; +import com.realnet.fnd.repository.Rn_Function_Register_Repository; + +@Service +public class Rn_Function_Register_ServiceImpl implements Rn_Function_Register_Service { + + @Autowired + private Rn_Function_Register_Repository rn_function_register_repository; + + @Override + public List getAll() { + return rn_function_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_function_register_repository.findAll(page); + } + + @Override + public Rn_Function_Register getById(int id) { + Rn_Function_Register rn_function_register = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_function_register; + } + + @Override + public Rn_Function_Register save(Rn_Function_Register rn_function_register) { + Rn_Function_Register savedRn_Function_Register = rn_function_register_repository.save(rn_function_register); + return savedRn_Function_Register; + } + + @Override + public Rn_Function_Register updateById(int id, Rn_Function_Register functionRequest) { + Rn_Function_Register old_function = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_function.setMenu_id(functionRequest.getMenu_id()); + old_function.setFunction_name(functionRequest.getFunction_name()); + old_function.setFunction_action_name(functionRequest.getFunction_action_name()); + old_function.setFunction_icon(functionRequest.getFunction_icon()); + old_function.setEnd_date(functionRequest.getEnd_date()); + old_function.setEnable_flag(functionRequest.getEnable_flag()); + //This is for line part + // old_function.setStudents(functionRequest.getStudents()); // need to improve + old_function.setUpdatedBy(functionRequest.getUpdatedBy()); + final Rn_Function_Register updated_function = rn_function_register_repository.save(old_function); + return updated_function; + } + + @Override + public boolean deleteById(int id) { + if (!rn_function_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Function_Register rn_function_register = rn_function_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_function_register_repository.delete(rn_function_register); + return true; + } + + @Override + public List getByMenuId(int menu_id) { +// List functions = rn_function_register_repository.findByMenuId(menu_id); +// if(functions.isEmpty()) { +// throw new ResourceNotFoundException("Rn_Function_Register Is Empty"); +// } + return rn_function_register_repository.findByMenuId(menu_id); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java new file mode 100644 index 0000000..4029dec --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_Service.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Main_Menu; + +public interface Rn_Main_Menu_Service { + List getAll(); + + Page getAll(Pageable p); + + List getByAccountId(String account_id); + + Rn_Main_Menu getById(int id); + + Rn_Main_Menu save(Rn_Main_Menu rn_Main_Menu); + + Rn_Main_Menu updateById(int id, Rn_Main_Menu rn_main_menu); + + boolean deleteById(int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java new file mode 100644 index 0000000..9ab3f64 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.java @@ -0,0 +1,79 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Main_Menu; +import com.realnet.fnd.repository.Rn_Main_Menu_Repository; + +@Service +public class Rn_Main_Menu_ServiceImpl implements Rn_Main_Menu_Service { + + @Autowired + private Rn_Main_Menu_Repository rn_menu_register_repository; + + @Override + public List getAll() { + return rn_menu_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_register_repository.findAll(page); + } + + @Override + public List getByAccountId(String account_id) { + List rn_menu_register = rn_menu_register_repository.findByAccountId(account_id); + if (rn_menu_register.isEmpty()) { + throw new ResourceNotFoundException("Menu not found With Account id :: " + account_id); + } + return rn_menu_register; + } + + @Override + public Rn_Main_Menu getById(int id) { + Rn_Main_Menu rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_menu_register; + } + + @Override + public Rn_Main_Menu save(Rn_Main_Menu rn_menu_register) { + Rn_Main_Menu savedRn_Main_Menu = rn_menu_register_repository.save(rn_menu_register); + return savedRn_Main_Menu; + } + + @Override + public Rn_Main_Menu updateById(int id, Rn_Main_Menu menuRequest) { + Rn_Main_Menu old_menu = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_menu.setMenu_name(menuRequest.getMenu_name()); + old_menu.setMenu_action_link(menuRequest.getMenu_action_link()); + old_menu.setMenu_icon(menuRequest.getMenu_icon()); + old_menu.setMenu_type(menuRequest.getMenu_type()); + // This is for line part // need to improve + old_menu.setSub_menus(menuRequest.getSub_menus()); + old_menu.setUpdatedBy(menuRequest.getUpdatedBy()); + final Rn_Main_Menu updated_menu = rn_menu_register_repository.save(old_menu); + return updated_menu; + } + + @Override + public boolean deleteById(int id) { + if (!rn_menu_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Main_Menu rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_menu_register_repository.delete(rn_menu_register); + return true; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java new file mode 100644 index 0000000..a343d60 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_Service.java @@ -0,0 +1,29 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Menu_Group_Header; + +public interface Rn_Menu_Group_Service { + List getAll(); + + Page getAll(Pageable p); + + Rn_Menu_Group_Header getById(Long id); + + Rn_Menu_Group_Header save(Rn_Menu_Group_Header rn_menu_group_header); + + Rn_Menu_Group_Header updateById(Long id, Rn_Menu_Group_Header rn_menu_group_header); + + boolean deleteById(Long id); + + //List getByFormId(int form_id); + + //Rn_Main_Menu loadmenuGroupByUser(int menu_group_id); + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java new file mode 100644 index 0000000..1fdddad --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.java @@ -0,0 +1,86 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Menu_Group_Header; +import com.realnet.fnd.repository.Rn_Menu_Group_Repository; + +@Service +public class Rn_Menu_Group_ServiceImpl implements Rn_Menu_Group_Service { + + + @Autowired + private Rn_Menu_Group_Repository rn_menu_group_repository; + + @Override + public List getAll() { + return rn_menu_group_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_group_repository.findAll(page); + } + + @Override + public Rn_Menu_Group_Header getById(Long id) { + Rn_Menu_Group_Header rn_forms_setup = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group not found :: " + id)); + return rn_forms_setup; + } + + @Override + public Rn_Menu_Group_Header save(Rn_Menu_Group_Header rn_menu_group_header) { + Rn_Menu_Group_Header savedMenu_Group = rn_menu_group_repository.save(rn_menu_group_header); + return savedMenu_Group; + } + + @Override + public Rn_Menu_Group_Header updateById(Long id, Rn_Menu_Group_Header menu_groupRequest) { + Rn_Menu_Group_Header old_rn_menu_group = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group not found :: " + id)); + old_rn_menu_group.setMenu_name(menu_groupRequest.getMenu_name()); + old_rn_menu_group.setDescription(menu_groupRequest.getDescription()); +// old_rn_menu_group.setActive(menu_groupRequest.getActive()); + old_rn_menu_group.setStart_date(menu_groupRequest.getStart_date()); + old_rn_menu_group.setEnd_date(menu_groupRequest.getEnd_date()); + // line part + old_rn_menu_group.setMenu_group_lines(menu_groupRequest.getMenu_group_lines()); + // updated by + old_rn_menu_group.setUpdatedBy(menu_groupRequest.getUpdatedBy()); + final Rn_Menu_Group_Header updated_rn_forms_setup = rn_menu_group_repository.save(old_rn_menu_group); + return updated_rn_forms_setup; + } + + @Override + public boolean deleteById(Long id) { + Rn_Menu_Group_Header rn_forms_setup = rn_menu_group_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Rn_Menu_Group_Header not found :: " + id)); + rn_menu_group_repository.delete(rn_forms_setup); + return true; + } + + // this is not done +// @Override +// public Rn_Main_Menu loadmenuGroupByUser(int menu_group_id) { +// Rn_Menu_Group_Header menu_group_header = getById(menu_group_id); +// List menu_group_lines = menu_group_header.getMenu_group_lines(); +// for(Rn_Menu_Group_Line menu_group_line : menu_group_lines) { +// int menu_id = menu_group_line.getMenu_id(); +// +// } +// return null; +// } + + /* + * @Override public List getByFormId(int form_id) { return + * rn_menu_group_repository.findByFormId(form_id); } + */ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java new file mode 100644 index 0000000..6d92595 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_Service.java @@ -0,0 +1,19 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import com.realnet.fnd.entity.Rn_Menu_Register; + +public interface Rn_Menu_Register_Service { + List getAll(); + Page getAll(Pageable p); + List getByAccountId(String account_id); + Rn_Menu_Register getById(int id); + Rn_Menu_Register save(Rn_Menu_Register rn_Menu_Register); + Rn_Menu_Register updateById(int id, Rn_Menu_Register rn_Menu_Register); + boolean deleteById(int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java new file mode 100644 index 0000000..9d346b4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.java @@ -0,0 +1,82 @@ +package com.realnet.fnd.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.fnd.entity.Rn_Menu_Register; +import com.realnet.fnd.repository.Rn_Menu_Register_Repository; + +@Service +public class Rn_Menu_Register_ServiceImpl implements Rn_Menu_Register_Service { + + @Autowired + private Rn_Menu_Register_Repository rn_menu_register_repository; + + @Override + public List getAll() { + return rn_menu_register_repository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return rn_menu_register_repository.findAll(page); + } + + @Override + public List getByAccountId(String account_id) { + List rn_menu_register = rn_menu_register_repository.findByAccountId(account_id); + if(rn_menu_register.isEmpty()) { + throw new ResourceNotFoundException("Menus not found With Account id :: " + account_id); + } + return rn_menu_register; + } + + @Override + public Rn_Menu_Register getById(int id) { + Rn_Menu_Register rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + return rn_menu_register; + } + + @Override + public Rn_Menu_Register save(Rn_Menu_Register rn_menu_register) { + Rn_Menu_Register savedRn_Menu_Register = rn_menu_register_repository.save(rn_menu_register); + return savedRn_Menu_Register; + } + + @Override + public Rn_Menu_Register updateById(int id, Rn_Menu_Register menuRequest) { + Rn_Menu_Register old_menu = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + + old_menu.setMain_menu_name(menuRequest.getMain_menu_name()); + old_menu.setMain_menu_action_name(menuRequest.getMain_menu_action_name()); + old_menu.setMain_menu_icon(menuRequest.getMain_menu_icon()); + old_menu.setEnable_flag(menuRequest.getEnable_flag()); + old_menu.setEnd_date(menuRequest.getEnd_date()); + //This is for line part + // old_menu.setStudents(menuRequest.getStudents()); // need to improve + old_menu.setUpdatedBy(menuRequest.getUpdatedBy()); + final Rn_Menu_Register updated_menu = rn_menu_register_repository.save(old_menu); + return updated_menu; + } + + @Override + public boolean deleteById(int id) { + if (!rn_menu_register_repository.existsById(id)) { + throw new ResourceNotFoundException("Rn_Menu not exist"); + } + Rn_Menu_Register rn_menu_register = rn_menu_register_repository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Menu not found :: " + id)); + rn_menu_register_repository.delete(rn_menu_register); + return true; + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java new file mode 100644 index 0000000..0c26709 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.java @@ -0,0 +1,25 @@ +package com.realnet.fnd.service1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; + +@Service +public class GrpMenuAccessServiceImpl { + private GrpMenuAccessRepository grpMenuAccessRepository; + @Autowired + public GrpMenuAccessServiceImpl(GrpMenuAccessRepository grpMenuAccessRepository) { + super(); + this.grpMenuAccessRepository = grpMenuAccessRepository; + } + public List getAll(Pageable page){ + List l = grpMenuAccessRepository.findAll(page).getContent(); + return l; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java new file mode 100644 index 0000000..04bea5c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/MenuDetServiceImpl.java @@ -0,0 +1,33 @@ +package com.realnet.fnd.service1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.MenuDetRepository; + +@Service +public class MenuDetServiceImpl { + private MenuDetRepository menuDetRepository; + @Autowired + public MenuDetServiceImpl(MenuDetRepository menuDetRepository) { + super(); + this.menuDetRepository = menuDetRepository; + } + public List getAll(){ + return menuDetRepository.findAll(); + } + public List getAllObject(Pageable page){ + List l = menuDetRepository.getAll(page).getContent(); + return l; + } + public List getById(Long usrGrp,Long menuId){ + return menuDetRepository.getById(usrGrp, menuId); + } + public List getByUserId(Long usrGrp,Long menuId) { + return menuDetRepository.getByUserId(usrGrp,menuId); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java new file mode 100644 index 0000000..0290839 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/fnd/service1/SecmenuDetailService.java @@ -0,0 +1,135 @@ +package com.realnet.fnd.service1; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.fnd.entity1.MenuDet; +import com.realnet.fnd.repository1.GrpMenuAccessRepository; +import com.realnet.fnd.repository1.MenuDetRepository; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; + +@Service +public class SecmenuDetailService { + + @Autowired + private MenuDetRepository menuDetRepository; + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + @Autowired + private GrpMenuAccessRepository grpMenuAccessRepository; + + public MenuDet customsecmenuadd(String tablename, Long menuId) { + + MenuDet menuDet = new MenuDet(); + String origTableName = tablename.replaceAll("_", " "); + + menuDet.setMenuId(menuId); + menuDet.setItemSeq(8001l); + menuDet.setMain_menu_icon_name(tablename); + menuDet.setMenuItemDesc(origTableName); + menuDet.setModuleName(tablename); + menuDet.setMain_menu_action_name(tablename); + + menuDet.setStatus("Enable"); + + MenuDet save = menuDetRepository.save(menuDet); + + sync(menuId, new GrpMenuAccess()); + + return save; + + } + +// sync service + public List sync(Long gmenuid, GrpMenuAccess gr) { + + List list = new ArrayList<>(); + MenuDet formenu = menuDetRepository.findById(gmenuid).orElseThrow(null); + + List all = grpMenuAccessRepository.findByGrpAndMenuid1(formenu.getMenuItemId()); + + for (GrpMenuAccess a : all) { + + a.setMenuItemId(formenu); + a.setItemSeq(formenu.getItemSeq()); + a.setMenuItemDesc(formenu.getMenuItemDesc()); + a.setModuleName(formenu.getModuleName()); + a.setStatus(formenu.getStatus()); + a.setMain_menu_action_name(formenu.getMain_menu_action_name()); + a.setMain_menu_icon_name(formenu.getMain_menu_icon_name()); + a.setMenuId(formenu.getMenuId()); + GrpMenuAccess save = grpMenuAccessRepository.save(a); + list.add(save); + } + + List submenu = menuDetRepository.findAllSubmenuByMenuId(gmenuid); + for (int i = 0; i < submenu.size(); i++) { + MenuDet m = menuDetRepository.findById(submenu.get(i).getMenuItemId()).orElseThrow(null); + List li = grpMenuAccessRepository.findlist(m.getMenuItemId()); + + if (li.isEmpty()) { + List grp = grpMenuAccessRepository.findAllById(gmenuid); + + for (GrpMenuAccess a : grp) { + AppUserRole app = appUserRoleRepository.findById(a.getUsrGrp().getUsrGrp()).orElseThrow(null); + gr.setUsrGrp(app); + gr.setMenuItemId(m); + + gr.setItemSeq(m.getItemSeq()); + gr.setMenuItemDesc(m.getMenuItemDesc()); + gr.setModuleName(m.getModuleName()); + gr.setStatus(m.getStatus()); + gr.setMain_menu_action_name(m.getMain_menu_action_name()); + gr.setMain_menu_icon_name(m.getMain_menu_icon_name()); + gr.setMenuId(m.getMenuId()); + + gr.setMCreate("true"); + gr.setMDelete("true"); + gr.setMEdit("true"); + gr.setMQuery("true"); + gr.setMVisible("true"); + gr.setIsdisable("true"); + gr.setMexport("true"); + + gr.setCreatedAt(new Date()); + gr.setUpdatedAt(new Date()); + + GrpMenuAccess save2 = grpMenuAccessRepository.save(gr); + list.add(save2); + } + + } + + else { + for (GrpMenuAccess g : li) { + + g.setMenuItemId(m); + + g.setItemSeq(m.getItemSeq()); + g.setMenuItemDesc(m.getMenuItemDesc()); + g.setModuleName(m.getModuleName()); + g.setStatus(m.getStatus()); + g.setMain_menu_action_name(m.getMain_menu_action_name()); + g.setMain_menu_icon_name(m.getMain_menu_icon_name()); + g.setMenuId(m.getMenuId()); + + GrpMenuAccess save1 = grpMenuAccessRepository.save(g); + list.add(save1); + } + } + } + return list; + + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java new file mode 100644 index 0000000..096563b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogEntity.java @@ -0,0 +1,31 @@ +package com.realnet.logging; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name= "LOGS") +public class LogEntity { + + @Id + @Column(name="USER_ID") + private Long userId; + + @Column(name="DATED") + private String dated; + + @Column(name="LOGGER") + private String logger; + + @Column(name="LAVEL") + private String lavel; + + @Column(name="MESSAGE") + private String message; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java new file mode 100644 index 0000000..4743378 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LogExecutionTime.java @@ -0,0 +1,12 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogExecutionTime { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java new file mode 100644 index 0000000..c775758 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/LoggingAspect.java @@ -0,0 +1,145 @@ +package com.realnet.logging; + +import java.util.concurrent.TimeUnit; + +import org.aspectj.lang.JoinPoint; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.AfterReturning; +import org.aspectj.lang.annotation.AfterThrowing; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Component; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; + +import lombok.Data; + +@Data +@Component +public class LoggingAspect { + + Logger logger = LoggerFactory.getLogger(LoggingAspect.class); + + // static Logger logger = LogManager.getLogger(LoggingAspect.class.getName()); + + /* + * 1. (..) zero or more || (*) one or more args + * 2. @Before("execution(* com.realnet.*.*(..))") + * 3. getTarger() returns the Object name + */ + +// @Before("packagePointcut()") +// public void beforeMethodCall(JoinPoint joinPoint) throws JsonProcessingException { +// String className = joinPoint.getTarget().getClass().toString(); // com.realnet.controller.Rn_InstructorController +// String methodName = joinPoint.getSignature().getName(); //// getInstructors +// String methodSignature = joinPoint.getSignature().toString(); +// +// // Rn_InstructorResponse com.realnet.controller.Rn_InstructorController.getInstructors(Integer,Integer) +// //System.out.println(methodSignature); +// String method = getMethodSignature(methodSignature); +// logger.info("Executing " + className + " : " + method); +// +// Object[] args = joinPoint.getArgs(); +// // object into json format +// ObjectMapper mapper = new ObjectMapper(); +// String json = mapper.writeValueAsString(args); +// logger.debug("Arguments: " + json); +// } + + // handle before after together + @Around("anyClasses()") + public Object LoggingAdvice(ProceedingJoinPoint pjp) throws Throwable { + String className = pjp.getTarget().getClass().toString(); + // String methodName = pjp.getSignature().getName(); + String methodSignature = pjp.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = pjp.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.info("Executing : " + className + " : " + methodName); + logger.debug("Arguments: " + args); + Object object = pjp.proceed(); + logger.info("Execution complete: " + className + " : " + methodName); + logger.debug(className + " : " + methodName + " Response: " + json); + return object; + } + + + @AfterReturning("anyClasses()") + public void afterMethodCall(JoinPoint joinPoint) throws JsonProcessingException { + String className = joinPoint.getTarget().getClass().toString(); + String methodSignature = joinPoint.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = joinPoint.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.info("Successfully Executed: " + className + " : " + methodName); + } + + // handle exception + @AfterThrowing(pointcut = "anyClasses()", throwing = "ex") + public void errorHandling(JoinPoint joinPoint, Exception ex) throws JsonProcessingException { + String className = joinPoint.getTarget().getClass().toString(); + // String methodName = joinPoint.getSignature().getName(); + String methodSignature = joinPoint.getSignature().toString(); + String methodName = methodSignature(methodSignature); + Object[] args = joinPoint.getArgs(); + // object into json format + ObjectMapper mapper = new ObjectMapper(); + String json = mapper.writeValueAsString(args); + logger.debug(className + " : " + methodName + "Arguments: " + json); + logger.error("Some Exception Happens: " + className + " : " + methodName); + logger.error(ex.getMessage()); + } + + // any package, any class, any method inside com.realnet + @Pointcut("execution(* com.realnet.*.*.*(..)) && !@annotation(com.realnet.logging.NoLogging)") + public void packagePointcut() { + } + // any public class + @Pointcut("within(com.realnet..*) && !@annotation(com.realnet.logging.NoLogging)") + private void anyClasses() {} + + + // problem in config class + @Pointcut("!within(com.realnet.config..*)") + private void configOperations() { + } + + @Around("@annotation(com.realnet.logging.LogExecutionTime)") + public Object logExecutionTime(ProceedingJoinPoint joinPoint) throws Throwable { + long start = System.currentTimeMillis(); + + Object proceed = joinPoint.proceed(); + + long executionTime = System.currentTimeMillis() - start; + + long seconds = TimeUnit.MILLISECONDS.toSeconds(executionTime); + long minutes = (executionTime/1000)/60; + + System.out.println(joinPoint.getSignature() + " executed in " + seconds + "sec(" + minutes + " Mins)"); + return proceed; + } + + + + + static String methodSignature(String name) { + name = name.substring(name.lastIndexOf(".") + 1); + return name; + } + + + +// // any public class +// @Pointcut("execution(public * *(..))") +// private void anyPublicOperation() {} +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java new file mode 100644 index 0000000..bebdce1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/NoLogging.java @@ -0,0 +1,11 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface NoLogging { +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java new file mode 100644 index 0000000..933716b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging/SecurityNoLogging.java @@ -0,0 +1,11 @@ +package com.realnet.logging; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface SecurityNoLogging { +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java new file mode 100644 index 0000000..cd8da91 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/ExceptionLoggingController.java @@ -0,0 +1,92 @@ +//package com.realnet.logging1; +// +//import java.io.File; +//import java.io.FileWriter; +//import java.nio.file.FileSystems; +//import java.nio.file.Path; +//import java.nio.file.Paths; +// +//import javax.servlet.http.HttpSession; +// +//import org.slf4j.Logger; +//import org.slf4j.LoggerFactory; +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.boot.web.servlet.error.ErrorController; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.ExceptionHandler; +//import org.springframework.web.bind.annotation.RestControllerAdvice; +// +//import com.realnet.config.HttpLoggingFilter; +//import com.realnet.users.service1.AppUserServiceImpl; +// +//@RestControllerAdvice +//public class ExceptionLoggingController implements ErrorController{ +// private static final String ERROR_PATH = "/error"; +// private final Logger LOGGER = LoggerFactory.getLogger(getClass()); +// @Autowired +// private AppUserServiceImpl appUserServiceImpl; +// +// public ExceptionLoggingController(AppUserServiceImpl appUserServiceImpl) { +// super(); +// this.appUserServiceImpl = appUserServiceImpl; +// } +// +// @ExceptionHandler(Exception.class) +// public ResponseEntity internalServerEror(Exception exception,HttpSession session){ +// StackTraceElement[] e = exception.getStackTrace(); +// System.out.println(e[0].getMethodName()); +// System.out.println(e[0].getClassName()); +// LOGGER.error("Unhandled Error By "+appUserServiceImpl.getLoggedInUser().getUsername()+" = "+exception.getMessage()); +// LOGGER.error("Request Info = "+HttpLoggingFilter.logInfo+"Error at Mehod= "+e[0].getMethodName()+" In Class= "+e[0].getClassName()); +// if(session.getAttribute("generate_log").equals("Y")) { +// try { +// if (session.getAttribute("LogginLevel").equals("error")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" ERROR]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// } else if (session.getAttribute("LogginLevel").equals("debug")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" DEBUG]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// HttpLoggingFilter.logged=true; +// } else if (session.getAttribute("LogginLevel").equals("warn")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// // File f = new File("/home/jboss/EAP-7.1.0/logs/sysadmin2_5463783.log"); +// FileWriter fw = new FileWriter(f,true); +// StringBuilder logInfo = HttpLoggingFilter.logInfo; +// logInfo.append(" [RESPONSE:").append(" WARN]").append(" [ERROR AT ").append(e[0].getMethodName()) +// .append(" IN CLASS ").append(e[0].getClassName()).append("]"); +// fw.write(logInfo + "\n"); +// fw.close(); +// } +// } catch (Exception e1) { +// +// } +// } +// return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR); +// } +// +// @Override +// public String getErrorPath() { +// // TODO Auto-generated method stub +// return ERROR_PATH; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java new file mode 100644 index 0000000..55f1f0e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/PatternLayoutWithUserContext.java @@ -0,0 +1,12 @@ +package com.realnet.logging1; + +import ch.qos.logback.classic.PatternLayout; + +public class PatternLayoutWithUserContext extends PatternLayout { + static { + PatternLayout.defaultConverterMap.put( + "user", UserConverter.class.getName()); + PatternLayout.defaultConverterMap.put( + "session", SessionConverter.class.getName()); + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java new file mode 100644 index 0000000..52954cd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/SessionConverter.java @@ -0,0 +1,18 @@ +package com.realnet.logging1; + +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; + +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class SessionConverter extends ClassicConverter { + @Override + public String convert(ILoggingEvent event) { + RequestAttributes attrs = RequestContextHolder.getRequestAttributes(); + if (attrs != null) { + return attrs.getSessionId(); + } + return "NO_SESSION"; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java new file mode 100644 index 0000000..f72cbe2 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/UserConverter.java @@ -0,0 +1,18 @@ +package com.realnet.logging1; + +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; + +import ch.qos.logback.classic.pattern.ClassicConverter; +import ch.qos.logback.classic.spi.ILoggingEvent; + +public class UserConverter extends ClassicConverter { + @Override + public String convert(ILoggingEvent event) { + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth != null) { + return auth.getName(); + } + return "NO_USER"; + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java new file mode 100644 index 0000000..ddc9cea --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController.java @@ -0,0 +1,183 @@ +package com.realnet.logging1.controller; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.util.Date; +import java.util.List; + +import javax.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.service.LoggingService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping(value="/log" ) +public class AppUserLogController { + private LoggingService loggingService; + private AppUserServiceImpl appUserServiceImpl; + @Autowired + public AppUserLogController(LoggingService loggingService, + AppUserServiceImpl appUserServiceImpl) { + super(); + this.loggingService = loggingService; + this.appUserServiceImpl=appUserServiceImpl; + } + + @GetMapping("/getAll") + public ResponseEntity getAllLog(){ + List l = loggingService.getAll(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getOne/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id){ + AppUserLog a = loggingService.getOne(id); + if(a!=null) { + return new ResponseEntity<>(a,HttpStatus.OK); + } + return new ResponseEntity<>("Not Found",HttpStatus.BAD_REQUEST); + } + @GetMapping("/startLogging/{username}/{mode}") + public ResponseEntity addOne(@PathVariable("username") String username,@PathVariable("mode")String mode,HttpSession session){ + AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + DateFormat simple =new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + if(a!=null) { + AppUserLog l = loggingService.getOne(a.getUserId()); + if(l!=null) { + l.setGenerateLog("Y"); + if(mode!=null) { + l.setLogLevel(mode); + } + loggingService.update(l); + session.setAttribute("generate_log","Y"); + Object a1 = new Object() { + private String message="Will now Start logging"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + }else { + long ut1 = Instant.now().getEpochSecond(); + AppUserLog p =new AppUserLog(); + p.setUserName(a.getUsername()); + p.setGenerateLog("Y"); + p.setLogFileName(a.getUsername()+ut1+".log"); + p.setLogLevel("info"); + if(mode!=null) { + p.setLogLevel(mode); + } + p.setGenerateLog("Y"); + p.setCreatedOn(new Date()); + p.setCreatedOnFormated(simple.format(new Date())); + loggingService.add(p); + session.setAttribute("generate_log","Y"); + Object a1 = new Object() { + private String message="Will now Start logging"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + } + Object a1 = new Object() { + private String message="No user found with this username"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + @GetMapping("/stopLogging/{username}") + public ResponseEntity stopLog(@PathVariable("username") String username,HttpSession session){ + AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + DateFormat simple =new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + if(a!=null) { + AppUserLog l = loggingService.getOne(a.getUserId()); + if(l!=null) { + l.setGenerateLog("N"); + loggingService.add(l); + session.setAttribute("generate_log","N"); + Object a1 = new Object() { + private String message="Will now Stop logging from next session"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + }else { + long ut1 = Instant.now().getEpochSecond(); + //AppUserLog p = new AppUserLog(c,a.getUsername(),"Y",a.getUsername()+ut1+".log","info",null,null); + AppUserLog p =new AppUserLog(); + p.setUserName(a.getUsername()); + p.setLogFileName(a.getUsername()+ut1+".log"); + p.setLogLevel("info"); + p.setGenerateLog("N"); + p.setCreatedOn(new Date()); + p.setCreatedOnFormated(simple.format(new Date())); + loggingService.add(p); + session.setAttribute("generate_log","N"); + Object a1 = new Object() { + private String message="Will now Stop logging from next session"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + } + Object a1 = new Object() { + private String message="No user found with this username"; + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + }; + return new ResponseEntity<>(a1,HttpStatus.OK); + } + + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java new file mode 100644 index 0000000..8960bd9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/controller/AppUserLogController2.java @@ -0,0 +1,75 @@ +package com.realnet.logging1.controller; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.repository.AppUserLogginRepository; +import com.realnet.logging1.service.LoggingService; +import com.realnet.utils.Constant; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@CrossOrigin(origins = "*", maxAge = 3600) +@RequestMapping(value = "/log2") +public class AppUserLogController2 { + private LoggingService loggingService; + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private AppUserLogginRepository logginRepository; + + @Autowired + public AppUserLogController2(LoggingService loggingService) { + super(); + this.loggingService = loggingService; + } + + @GetMapping("/downloadLog/{filename}") + public ResponseEntity sendFile(@PathVariable("filename") String filename, HttpServletRequest request) + throws Exception { + // AppUser a = appUserServiceImpl.getByUserName(username).orElse(null); + Resource resource = loggingService.loadFileAsResource(filename); + if (resource != null) { + String contentType = null; + try { + contentType = request.getServletContext().getMimeType(resource.getFile().getAbsolutePath()); + } catch (IOException ex) { + throw new Exception("Could not find log file for file: " + filename); + } + // Fallback to the default content type if type could not be determined + if (contentType == null) { + contentType = "application/octet-stream"; + } + return ResponseEntity.ok().contentType(MediaType.parseMediaType(contentType)) + .header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + resource.getFilename() + "\"") + .body(resource); + } else { + return new ResponseEntity<>("File could not be loaded", HttpStatus.BAD_REQUEST); + } + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java new file mode 100644 index 0000000..0a0aa9e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/entity/AppUserLog.java @@ -0,0 +1,46 @@ +package com.realnet.logging1.entity; + +import java.sql.Blob; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Transient; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="app_user_log") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@EqualsAndHashCode +@ToString +public class AppUserLog { + @Id + @GeneratedValue(generator = "appUserLog_gen") + @SequenceGenerator(name="appUserLog_gen", sequenceName="app_user_log_sequence",initialValue = 1, allocationSize = 1) + private Long logId; + @Column(unique = true) + private String userName; + private String generateLog="N"; + private String logFileName; + private String logLevel="info"; + private Date createdOn; + @Transient + private Blob file; + @Transient + private Long filesizeCurrent; + @Transient + private String createdOnFormated; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java new file mode 100644 index 0000000..d4e4f2d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/repository/AppUserLogginRepository.java @@ -0,0 +1,16 @@ +package com.realnet.logging1.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.logging1.entity.AppUserLog; + +@Repository +public interface AppUserLogginRepository extends JpaRepository{ + List findByUserName(String userName); +// @Query(value="select Max(*) from app") +// long getMax(); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java new file mode 100644 index 0000000..395ad1c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/logging1/service/LoggingService.java @@ -0,0 +1,125 @@ +package com.realnet.logging1.service; + +import java.io.File; +import java.io.IOException; +import java.net.MalformedURLException; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.sql.Blob; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.List; + +import javax.sql.rowset.serial.SerialBlob; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.Resource; +import org.springframework.core.io.UrlResource; +import org.springframework.stereotype.Service; + +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.repository.AppUserLogginRepository; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@Service +public class LoggingService { + + + private AppUserLogginRepository appUserLogginRepository; + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + public LoggingService(AppUserLogginRepository appUserLogginRepository, AppUserServiceImpl appUserServiceImpl) { + super(); + this.appUserLogginRepository = appUserLogginRepository; + this.appUserServiceImpl = appUserServiceImpl; + } + + public AppUserLog generate(AppUser appUser) throws IOException { + long id = 1; + List l = appUserLogginRepository.findByUserName(appUser.getUsername()); + if (l.size() > 0) { + AppUserLog log = l.get(0); + if (log != null) { + // For local machine testing + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", log.getLogFileName()); + File f = new File(filePath.toString()); + // For prod server + // File f = new File("/home/jboss/EAP-7.1.0/logs/"+this.user_log_file_nam); + if (!f.exists()) { + f.createNewFile(); + } + + return log; + + } + } + + return null; + } + + public AppUserLog add(AppUserLog appUserLog) { + return appUserLogginRepository.save(appUserLog); + } + + public List getAll() { + List a = appUserLogginRepository.findAll(); + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + a.forEach(o -> { + try { + byte[] fileContent = null; + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", o.getLogFileName()); + File f = new File(filePath.toString()); + fileContent = FileUtils.readFileToByteArray(f); + long size_kb = (Files.size(filePath)) / 1024; + long size_mb = size_kb / 1024; + o.setFilesizeCurrent(size_mb); + Blob b = new SerialBlob(fileContent); + o.setCreatedOnFormated(simple.format(o.getCreatedOn())); + o.setFile(b); + } catch (Exception e) { + o.setFile(null); + o.setFilesizeCurrent(null); + o.setCreatedOnFormated(null); + } + }); + return a; + } + + public AppUserLog getOne(Long id) { + AppUser user = appUserServiceImpl.getById(id).orElse(null); + if (user != null) { + List l = appUserLogginRepository.findByUserName(user.getUsername()); + if (l.size() > 0) { + return l.get(0); + } + } + return null; + } + + public AppUserLog update(AppUserLog appUserLog) { + return appUserLogginRepository.save(appUserLog); + } + + public Resource loadFileAsResource(String fileName) { + try { + Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); + Path filePath = Paths.get(root.toString(), "logs", fileName); + Resource resource = new UrlResource(filePath.toUri()); + if (resource.exists()) { + return resource; + } else { + return null; + } + } catch (MalformedURLException ex) { + return null; + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java new file mode 100644 index 0000000..b0ddf79 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Controller/Report_buildercontroller.java @@ -0,0 +1,144 @@ +package com.realnet.report_builder.Controller; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.report_builder.Entity.ReportQueryDataDTO; +import com.realnet.report_builder.Entity.Rp_Line; +import com.realnet.report_builder.Entity.Rp_builder; +import com.realnet.report_builder.Repository.ReportRepository; +import com.realnet.report_builder.Service.Report_builderService; + +@RestController +public class Report_buildercontroller { + + @Autowired + private Report_builderService report_builderService; + + @Autowired + private ReportRepository reportRepository; + + // save report builder + @PostMapping("/Report_builder") + + public Rp_builder Savedata(@RequestBody Rp_builder dashbord_Header) { + Rp_builder dash = report_builderService.Savedata(dashbord_Header) ; + return dash; + } + + // get all report builder + @GetMapping("/Report_builder") + public List getdetails() { + List dash = report_builderService.getdetails(); + return dash; + } + + // get all report line + @GetMapping("/Report_line") + public List get_all_lines() { + List dash = report_builderService.get_all_lines(); + return dash; + } + + + + // get report builder by module id + @GetMapping("/get_by_module_id") + public List get_by_module_id(@RequestParam(value = "module_id") int module_id) { + + List module = report_builderService.get_by_module_id(module_id); + return module; + + } + + // get report builder by id + @GetMapping("/Report_builder/{id}") + public Rp_builder getdetailsbyId(@PathVariable int id ) { + Rp_builder dash = report_builderService.getdetailsbyId(id); + return dash; + } + + // update report builder by id + @PutMapping("/Report_builder/{id}") + public Rp_builder update_dashboard_header(@PathVariable int id,@RequestBody Rp_builder dashbord_Header) { + Rp_builder dash = report_builderService.update_dashboard_header(id,dashbord_Header); + return dash; + } + +// update report builder line by id + + @PutMapping("/Report_line/{id}") + public Rp_Line update_Dashbord1_Lineby_id(@PathVariable int id, + @RequestBody Rp_Line dashbord1_Line ) { + + Rp_Line dash = report_builderService.update_Dashbord1_Lineby_id(id,dashbord1_Line); + return dash; + + } + + // save report line + @PostMapping("/Report_line") + public Rp_Line update_Dashbord1_Line(@RequestBody Rp_Line dashbord1_Line ) { + Rp_Line dash1 = report_builderService.update_Dashbord1_Line(dashbord1_Line); + return dash1; + } + + // delete report builder by id + @DeleteMapping("/Report_builder/{id}") + public void delete_by_id(@PathVariable int id ) { + report_builderService.delete_by_id(id); + + } + +// GET NUMBERS OF IDLIST of report builder + + @GetMapping("/GetReportBuilderOb") + public List getobject() { + return this.reportRepository.findCount(); + + } + + @PostMapping("/getQuery") + public ResponseEntity getQueryBydata(@RequestBody ReportQueryDataDTO data){ + List tables = data.getTables(); + List columns = data.getColumns(); + List conditions = data.getConditions(); + + String Query = "SELECT "; + for(int i=0;i tables; + private List columns; + private List conditions; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java new file mode 100644 index 0000000..3538f34 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Line.java @@ -0,0 +1,40 @@ +package com.realnet.report_builder.Entity; + + + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import com.fasterxml.jackson.annotation.JsonBackReference; + +import lombok.Data; +import lombok.ToString; +@ToString(exclude = {"rp_builder"}) +@Data +@Entity +@Table +public class Rp_Line extends Rp_Who_collumn { + + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + + private String header_id; + + @Column(length = 5000) + private String Model; + + @JsonBackReference + @ManyToOne + private Rp_builder rp_builder; + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java new file mode 100644 index 0000000..10f00df --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_Who_collumn.java @@ -0,0 +1,46 @@ +package com.realnet.report_builder.Entity; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rp_Who_collumn implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java new file mode 100644 index 0000000..d769a61 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Entity/Rp_builder.java @@ -0,0 +1,69 @@ +package com.realnet.report_builder.Entity; + + + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; + +import com.fasterxml.jackson.annotation.JsonManagedReference; + +import lombok.Data; +import lombok.ToString; + +@ToString(exclude = {"rp_Line"}) +@Entity +@Data +public class Rp_builder extends Rp_Who_collumn{ + + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "ID") + private Integer id; + + +// ============================== + @Column(name = "IS_BUILD") + private boolean build; + + @Column(name = "MENU_NAME") + private String menuName; + + @Column(name = "IS_UPDATED") + private boolean updated; + + private String tech_Stack; + + private String report_builder_name; + + private int module_id; + + private String description; + + private String secuirity_profile; + + private String page_size; + + + + @JsonManagedReference + @OneToMany( cascade=CascadeType.ALL, mappedBy ="rp_builder" ) + private List rp_Line = new ArrayList<>(); + + + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java new file mode 100644 index 0000000..6fb79f0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/ReportRepository.java @@ -0,0 +1,25 @@ +package com.realnet.report_builder.Repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.report_builder.Entity.Rp_builder; + +@Repository +public interface ReportRepository extends CrudRepository { + + Rp_builder findById(int id); + + @Query(value = " select * from rp_builder where module_id=?1", nativeQuery = true) + List findbyModule(int module_id); + + @Query(value = "select count(id) from rp_builder", nativeQuery = true) + public List findCount(); + + @Query(value = "SELECT count(id) FROM rp_builder where module_id=?1", nativeQuery = true) + Object count_report(Integer moduleId); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java new file mode 100644 index 0000000..400a032 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Repository/Rp_lineRepository.java @@ -0,0 +1,13 @@ +package com.realnet.report_builder.Repository; + +import org.springframework.data.repository.CrudRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.report_builder.Entity.Rp_Line; + +@Repository +public interface Rp_lineRepository extends CrudRepository { + + Rp_Line findById(int id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java new file mode 100644 index 0000000..dd8e6d0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/report_builder/Service/Report_builderService.java @@ -0,0 +1,81 @@ +package com.realnet.report_builder.Service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.report_builder.Entity.Rp_Line; +import com.realnet.report_builder.Entity.Rp_builder; +import com.realnet.report_builder.Repository.ReportRepository; +import com.realnet.report_builder.Repository.Rp_lineRepository; + +@Service +public class Report_builderService { + + @Autowired + private ReportRepository reportRepository; + + @Autowired + private Rp_lineRepository rp_lineRepository; + + public Rp_builder Savedata(Rp_builder dashbord_Header) { + return reportRepository.save(dashbord_Header); + } + + public List getdetails() { + // TODO Auto-generated method stub + return (List) reportRepository.findAll(); + } + + public Rp_builder getdetailsbyId(int id) { + // TODO Auto-generated method stub + return reportRepository.findById(id); + } + + public void delete_by_id(int id) { + // TODO Auto-generated method stub + reportRepository.deleteById(id); + } + + public Rp_builder update_dashboard_header(int id, Rp_builder rp) { + Rp_builder bi = reportRepository.findById(id); + + bi.setAccountId(rp.getAccountId()); + bi.setDescription(rp.getDescription()); + bi.setMenuName(rp.getMenuName()); + bi.setModule_id(rp.getModule_id()); + bi.setPage_size(rp.getPage_size()); + bi.setReport_builder_name(rp.getReport_builder_name()); + + return reportRepository.save(bi); + } + + public Rp_Line update_Dashbord1_Line(Rp_Line dashbord1_Line) { + // TODO Auto-generated method stub + return rp_lineRepository.save(dashbord1_Line); + } + + public List get_by_module_id(int module_id) { + // TODO Auto-generated method stub + return (List) reportRepository.findbyModule(module_id); + } + + public List get_all_lines() { + // TODO Auto-generated method stub + return (List) rp_lineRepository.findAll(); + } + + public Rp_Line update_Dashbord1_Lineby_id(int id, Rp_Line dashbord1_Line) { + + Rp_Line oldline = rp_lineRepository.findById(id); +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + oldline.setAccountId(dashbord1_Line.getAccountId()); + oldline.setHeader_id(dashbord1_Line.getHeader_id()); + oldline.setModel(dashbord1_Line.getModel()); + final Rp_Line newline = rp_lineRepository.save(oldline); + return newline; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Controllers/RetiredController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Controllers/RetiredController.java new file mode 100644 index 0000000..ba31975 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Controllers/RetiredController.java @@ -0,0 +1,88 @@ +package com.realnet.retired.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.retired.Entity.Retired; +import com.realnet.retired.Services.RetiredService ; +@RequestMapping(value = "/Retired") + @CrossOrigin("*") +@RestController +public class RetiredController { + @Autowired + private RetiredService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + @PostMapping("/Retired") + public Retired Savedata(@RequestBody Retired data) { + Retired save = Service.Savedata(data) ; + + + + + + + + + return save; + } +@PutMapping("/Retired/{id}") + public Retired update(@RequestBody Retired data,@PathVariable Integer id ) { + Retired update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Retired/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Retired") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Retired") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Retired/{id}") + public Retired getdetailsbyId(@PathVariable Integer id ) { + Retired get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Retired/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Entity/Retired.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Entity/Retired.java new file mode 100644 index 0000000..4f4504c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Entity/Retired.java @@ -0,0 +1,30 @@ +package com.realnet.retired.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Retired extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +@Column(length = 2000) +private String description; + +private boolean active; + +private String player_name; + + private String can_batter_bat_again; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Repository/RetiredRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Repository/RetiredRepository.java new file mode 100644 index 0000000..91a7f4a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Repository/RetiredRepository.java @@ -0,0 +1,13 @@ +package com.realnet.retired.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.retired.Entity.Retired; + +@Repository +public interface RetiredRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Services/RetiredService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Services/RetiredService.java new file mode 100644 index 0000000..22b8ed9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired/Services/RetiredService.java @@ -0,0 +1,68 @@ +package com.realnet.retired.Services; +import com.realnet.retired.Repository.RetiredRepository; +import com.realnet.retired.Entity.Retired;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class RetiredService { +@Autowired +private RetiredRepository Repository; + + + + + + + + +public Retired Savedata(Retired data) { + + + + + + + + +Retired save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Retired getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Retired update(Retired data,Integer id) { + Retired old = Repository.findById(id).get(); +old.setDescription(data.getDescription()); + +old.setActive (data.isActive()); + +old.setPlayer_name(data.getPlayer_name()); + +old.setCan_batter_bat_again(data.getCan_batter_bat_again()); + +final Retired test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Controllers/Retired_outController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Controllers/Retired_outController.java new file mode 100644 index 0000000..e2ee6d0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Controllers/Retired_outController.java @@ -0,0 +1,84 @@ +package com.realnet.retired_out.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.retired_out.Entity.Retired_out; +import com.realnet.retired_out.Services.Retired_outService ; +@RequestMapping(value = "/Retired_out") + @CrossOrigin("*") +@RestController +public class Retired_outController { + @Autowired + private Retired_outService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + @PostMapping("/Retired_out") + public Retired_out Savedata(@RequestBody Retired_out data) { + Retired_out save = Service.Savedata(data) ; + + + + + + + return save; + } +@PutMapping("/Retired_out/{id}") + public Retired_out update(@RequestBody Retired_out data,@PathVariable Integer id ) { + Retired_out update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Retired_out/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Retired_out") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Retired_out") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Retired_out/{id}") + public Retired_out getdetailsbyId(@PathVariable Integer id ) { + Retired_out get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Retired_out/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Entity/Retired_out.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Entity/Retired_out.java new file mode 100644 index 0000000..70ee40b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Entity/Retired_out.java @@ -0,0 +1,28 @@ +package com.realnet.retired_out.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Retired_out extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +@Column(length = 2000) +private String description; + +private boolean active; + +private String player_name; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Repository/Retired_outRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Repository/Retired_outRepository.java new file mode 100644 index 0000000..3818496 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Repository/Retired_outRepository.java @@ -0,0 +1,13 @@ +package com.realnet.retired_out.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.retired_out.Entity.Retired_out; + +@Repository +public interface Retired_outRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Services/Retired_outService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Services/Retired_outService.java new file mode 100644 index 0000000..03a8c3c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/retired_out/Services/Retired_outService.java @@ -0,0 +1,62 @@ +package com.realnet.retired_out.Services; +import com.realnet.retired_out.Repository.Retired_outRepository; +import com.realnet.retired_out.Entity.Retired_out;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class Retired_outService { +@Autowired +private Retired_outRepository Repository; + + + + + + +public Retired_out Savedata(Retired_out data) { + + + + + + +Retired_out save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Retired_out getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Retired_out update(Retired_out data,Integer id) { + Retired_out old = Repository.findById(id).get(); +old.setDescription(data.getDescription()); + +old.setActive (data.isActive()); + +old.setPlayer_name(data.getPlayer_name()); + +final Retired_out test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Controllers/Select_TeamController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Controllers/Select_TeamController.java new file mode 100644 index 0000000..595d236 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Controllers/Select_TeamController.java @@ -0,0 +1,80 @@ +package com.realnet.select_team.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.select_team.Entity.Select_Team; +import com.realnet.select_team.Services.Select_TeamService ; +@RequestMapping(value = "/Select_Team") + @CrossOrigin("*") +@RestController +public class Select_TeamController { + @Autowired + private Select_TeamService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + @PostMapping("/Select_Team") + public Select_Team Savedata(@RequestBody Select_Team data) { + Select_Team save = Service.Savedata(data) ; + + + + + return save; + } +@PutMapping("/Select_Team/{id}") + public Select_Team update(@RequestBody Select_Team data,@PathVariable Integer id ) { + Select_Team update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Select_Team/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Select_Team") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Select_Team") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Select_Team/{id}") + public Select_Team getdetailsbyId(@PathVariable Integer id ) { + Select_Team get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Select_Team/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Entity/Select_Team.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Entity/Select_Team.java new file mode 100644 index 0000000..d3a35c4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Entity/Select_Team.java @@ -0,0 +1,26 @@ +package com.realnet.select_team.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Select_Team extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +@Column(length = 2000) +private String team_name; + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Repository/Select_TeamRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Repository/Select_TeamRepository.java new file mode 100644 index 0000000..b01a964 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Repository/Select_TeamRepository.java @@ -0,0 +1,13 @@ +package com.realnet.select_team.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.select_team.Entity.Select_Team; + +@Repository +public interface Select_TeamRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Services/Select_TeamService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Services/Select_TeamService.java new file mode 100644 index 0000000..7dd2c6c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/select_team/Services/Select_TeamService.java @@ -0,0 +1,56 @@ +package com.realnet.select_team.Services; +import com.realnet.select_team.Repository.Select_TeamRepository; +import com.realnet.select_team.Entity.Select_Team;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class Select_TeamService { +@Autowired +private Select_TeamRepository Repository; + + + + +public Select_Team Savedata(Select_Team data) { + + + + +Select_Team save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Select_Team getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Select_Team update(Select_Team data,Integer id) { + Select_Team old = Repository.findById(id).get(); +old.setTeam_name(data.getTeam_name()); + +old.setTeam_name(data.getTeam_name()); + +final Select_Team test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java new file mode 100644 index 0000000..eba4a74 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/controller/SessionController.java @@ -0,0 +1,385 @@ +package com.realnet.session.controller; + +import java.io.IOException; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.UnknownHostException; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.slf4j.MDC; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.mail.javamail.JavaMailSender; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; + +import com.realnet.config.EmailService; +import com.realnet.config.TokenProvider; +import com.realnet.fnd.response.EntityResponse; +import com.realnet.fnd.response.OperationResponse; +import com.realnet.fnd.response.OperationResponse.ResponseStatusEnum; +import com.realnet.logging1.entity.AppUserLog; +import com.realnet.logging1.service.LoggingService; +import com.realnet.session.entity.AboutWork; +import com.realnet.session.entity.SessionItem; +import com.realnet.session.response.SessionResponse; +import com.realnet.users.entity.LoginUser; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.entity1.Registration; +import com.realnet.users.repository.CompanyRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserSessionsRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service.AboutWorkService; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.users.service1.AppUserSessionsServiceImpl; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; + +/* +This is a dummy rest controller, for the purpose of documentation (/session) path is map to a filter + - This will only be invoked if security is disabled + - If Security is enabled then SessionFilter.java is invoked + - Enabling and Disabling Security is done at config/applicaton.properties 'security.ignored=/**' +*/ + +@Api(tags = { "Authentication" }) +//@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) +@CrossOrigin("*") +@RestController +@RequestMapping(value = "/token", produces = MediaType.APPLICATION_JSON_VALUE) +public class SessionController { + + private final Logger LOGGER = LoggerFactory.getLogger(getClass()); + @Autowired + private AuthenticationManager authenticationManager; + @Autowired + private LoggingService loggingService; + @Autowired + private TokenProvider jwtTokenUtil; + + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + private AppUserSessionsRepository appUserSessionsRepository; + + @Autowired + private AppUserServiceImpl userService; + +// @Autowired +// private CompanyService companyService; + + @Autowired + private EmailService emailService; + + @Autowired + private JavaMailSender mailSender; + + @Autowired + private AboutWorkService aboutworkservice; + + @Autowired + private CompanyRepo sysrepo; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + private AppUserSessionsServiceImpl appUserSessionsServiceImpl; + + @ApiResponses(value = { + @ApiResponse(code = 200, message = "Will return a security token, which must be passed in every request", response = SessionResponse.class) }) + @RequestMapping(value = "/session", method = RequestMethod.POST, consumes = MediaType.APPLICATION_JSON_VALUE) + @ResponseBody + public SessionResponse newSession(@RequestBody LoginUser loginRequest, HttpServletRequest request, + HttpSession session1) { + + try { + + final Authentication authentication = authenticationManager.authenticate( + new UsernamePasswordAuthenticationToken(loginRequest.getEmail(), loginRequest.getPassword())); + + SecurityContextHolder.getContext().setAuthentication(authentication); + + final String token = jwtTokenUtil.generateToken(authentication); + + System.out.println("authentication.getName() =>" + authentication.getName()); // email + + AppUser loggedInUser = userService.getLoggedInUser(); + MDC.put("USER", loggedInUser.getUsername()); + // System.out.println("/session logged in user -> " + loggedInUser); + +// List loggedInUserRoles = new ArrayList(); + StringBuilder roleString = new StringBuilder(); + roleString.append(loggedInUser.getUsrGrp().getGroupName()); +// .forEach(role -> { +//// loggedInUserRoles.add(role.getName()); +// roleString.append(role.getName() + ", "); +// }); + // String role = roleString.toString().substring(0, + // roleString.toString().lastIndexOf(",")); + // List roleList = Arrays.asList(role.split("\\s*,\\s*")); + + SessionResponse resp = new SessionResponse(); + SessionItem sessionItem = new SessionItem(); + sessionItem.setToken(token); + sessionItem.setUserId(loggedInUser.getUserId()); + sessionItem.setFullname(loggedInUser.getFullName()); + sessionItem.setFirstName(loggedInUser.getFullName()); + // sessionItem.setUsername(loggedInUser.getUsername()); + sessionItem.setEmail(loggedInUser.getEmail()); + // sessionItem.setRoles(roleList); + Set roles = loggedInUser.getRoles(); + List roleList = new ArrayList<>(); + for (Role ro : roles) { + roleList.add(ro.getDescription()); + } + sessionItem.setRoles(roleList); + // sessionItem.setRoles(loggedInUser.getUsrGrp().getGroupName()); + resp.setOperationStatus(ResponseStatusEnum.SUCCESS); + resp.setOperationMessage("Login Success"); + resp.setItem(sessionItem); + + InetAddress ip; + StringBuilder sb = new StringBuilder(); + try { + ip = InetAddress.getLocalHost(); + System.out.println("Current IP address : " + ip.getHostAddress()); + NetworkInterface network = NetworkInterface.getByInetAddress(ip); + byte[] mac = network.getHardwareAddress(); + System.out.print("Current MAC address : "); + + for (int i = 0; i < mac.length; i++) { + sb.append(String.format("%02X%s", mac[i], (i < mac.length - 1) ? ":" : "")); + } + System.out.println(sb.toString()); + } catch (Exception e) { + System.out.println("error is .." + e); + } + + AppUserSessions session = new AppUserSessions(); + + session.setUserId(loggedInUser); + session.setLastAccessDate(new Date()); + session.setLogintime(new Date()); +// session.setLogouttime(new Date()); + session.setSessionId(RequestContextHolder.currentRequestAttributes().getSessionId()); + // String ip = request.getHeader("X-Forward-For"); + // String ip = getClientIp(); + // String ip = getClientIp(request); + String ip1 = request.getRemoteAddr(); + session.setClientIp(ip1); + session.setMacid(sb.toString()); + appUserSessionsServiceImpl.add(session); + AppUserLog s = loggingService.generate(loggedInUser); + // AppUserLog s = null; + if (s != null) { + session1.setAttribute("LogginLevel", s.getLogLevel()); + session1.setAttribute("generate_log", s.getGenerateLog()); + session1.setAttribute("LogFileName", s.getLogFileName()); + } else { + session1.setAttribute("generate_log", "N"); + } + return resp; + } catch (Exception e) { + LOGGER.error("Login Failed " + e.getMessage()); + System.out.print(e.getMessage()); + SessionResponse resp = new SessionResponse(); + resp.setOperationStatus(ResponseStatusEnum.ERROR); + resp.setOperationMessage("Login Failed"); + return resp; + } + + } + + // logout + @GetMapping("/logout") + public ResponseEntity logoutUser(HttpSession session2) throws IOException { + +// if(session1.getAttribute("generate_log").equals("Y")) { +// Path root = FileSystems.getDefault().getPath("").toAbsolutePath(); +// Path filePath = Paths.get(root.toString(),"logs",session1.getAttribute("LogFileName").toString()); +// File f=filePath.toFile(); +// FileWriter fw = new FileWriter(f,true); +// fw.write("Logout\n"); +// fw.close(); +// } + +// String sessionId = RequestContextHolder.currentRequestAttributes().getSessionId(); +// AppUserSessions session = appUserSessionsRepository.findBySessionId(session2.toString()); +// session.setLogouttime(new Date()); +// appUserSessionsServiceImpl.add(session); + return new ResponseEntity<>("Logged out succesfully", HttpStatus.OK); + } + // logout + + public String getClientIp(HttpServletRequest request) { + final String LOCALHOST_IPV4 = "127.0.0.1"; + final String LOCALHOST_IPV6 = "0:0:0:0:0:0:0:1"; + String ipAddress = request.getHeader("X-Forwarded-For"); + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("Proxy-Client-IP"); + } + + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getHeader("WL-Proxy-Client-IP"); + } + + if (StringUtils.isEmpty(ipAddress) || "unknown".equalsIgnoreCase(ipAddress)) { + ipAddress = request.getRemoteAddr(); + if (LOCALHOST_IPV4.equals(ipAddress) || LOCALHOST_IPV6.equals(ipAddress)) { + try { + InetAddress inetAddress = InetAddress.getLocalHost(); + ipAddress = inetAddress.getHostAddress(); + } catch (UnknownHostException e) { + System.out.println("error is .." + e); + } + } + } + + if (!StringUtils.isEmpty(ipAddress) && ipAddress.length() > 15 && ipAddress.indexOf(",") > 0) { + ipAddress = ipAddress.substring(0, ipAddress.indexOf(",")); + } + + return ipAddress; + } + + @PostMapping("/addOneAppUser") + public ResponseEntity addOneUser(@RequestBody Registration reg) { + System.out.println(reg); +// if (appUserRepository.findByEmail(reg.getEmail()) != null) { +// return ResponseEntity.badRequest().body(new MessageResponse("email already exist")); +// } + AppUser a = appUserServiceImpl.addOneUser(reg); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @ApiOperation(value = "Send Email For OTP") + @PostMapping("/user/send_email") + public ResponseEntity userviaadmin(HttpServletRequest request, @RequestBody Registration reg) { + String email = reg.getEmail(); + AppUser appUser = new AppUser(); + + AppUser user = userService.findUserByEmail(email); + if (user != null && user.isIsComplete()) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } else { + if (user != null && !user.isIsComplete()) { + appUser = user; + } +// Random random = new Random(); + SecureRandom random = new SecureRandom(); + + int otp = 100000 + random.nextInt(900000); + userService.adduserbyemail(appUser, String.valueOf(otp), email); + + String subject = "Email Verification"; + String url = String.valueOf(otp); + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("Otp send successfully"), HttpStatus.OK); + } + + } + +// RESEND OTP + @PostMapping("/user/resend_otp") + public ResponseEntity resendotp(@RequestParam String email) { + + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " not exist")); + } else { +// Random random = new Random(); + SecureRandom random = new SecureRandom(); + + int otp = 100000 + random.nextInt(900000); + userService.resendotp(otp, email); + String subject = "Email Verification"; + String url = String.valueOf(otp); + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>(new EntityResponse("resend Otp send successfully"), HttpStatus.OK); + } + + } + +// OTP VERIFICATION + @PostMapping("/user/otp_verification") + public ResponseEntity otpverfication(@RequestParam String email, @RequestParam String otp) { + email = email.replaceAll(" ", "+"); + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(user + " not exist")); + } + String random_no = user.getRandom_no(); + if (random_no.equalsIgnoreCase(otp)) { + return new ResponseEntity<>(new EntityResponse("OTP Verified"), HttpStatus.OK); + } else { + return new ResponseEntity<>(new EntityResponse("Wrong OTP"), HttpStatus.BAD_REQUEST); + } + } + + @ApiOperation(value = "Add new cluodnsure", response = OperationResponse.class) + @PostMapping("/aboutwork") + public AppUser addNewCustomer(@RequestBody AboutWork aboutWork) { + + System.out.println("about work controller started"); + + // save acccount info + AboutWork about = aboutworkservice.adddata(aboutWork); + Sys_Accounts sys = new Sys_Accounts(); + sys.setAccount_id(about.getId()); + sysrepo.save(sys); + + // save user with accout id + AppUser user = new AppUser(); + user.setChangePassw(aboutWork.getPassword()); + user.setEmail(aboutWork.getEmail()); + user.setMob_no(aboutWork.getMobile()); + AppUser userResister = userService.userResister(user, about.getId()); + return userResister; + } + + // GET USER BY USERID // TOKEN FREE + @GetMapping("/getuser/{id}") + public ResponseEntity getChatUserById(@PathVariable Long id) { + AppUser u = appUserServiceImpl.getById(id).get(); + return new ResponseEntity<>(u, HttpStatus.OK); + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java new file mode 100644 index 0000000..e154e88 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/AboutWork.java @@ -0,0 +1,32 @@ +package com.realnet.session.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.Data; + +@Data +@Entity +@Table(name = "Accounts") +public class AboutWork { + + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id ; + private String name; + + private String password; + private Long mobile; + private String email; + private String companyname; + private String pancard; + private String working; + private String managing_work; +// @OneToOne(mappedBy = "user",fetch = FetchType.LAZY, +// cascade = CascadeType.ALL) +// private User user; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java new file mode 100644 index 0000000..95cc277 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/SessionItem.java @@ -0,0 +1,18 @@ +package com.realnet.session.entity; + +import java.util.List; + +import lombok.Data; + +@Data +public class SessionItem { + private String token; + private Long userId; + private String fullname; + private String username; + private String email; + private String firstName; + private List roles; + //private String roles; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java new file mode 100644 index 0000000..db25839 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/entity/VersionModel.java @@ -0,0 +1,11 @@ +package com.realnet.session.entity; + +import lombok.Data; + +@Data // For Getters and Setters +public class VersionModel { + private String version = null; + private Integer major = null; + private Integer minor = null; + private Integer patch = null; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java new file mode 100644 index 0000000..181aa16 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/session/response/SessionResponse.java @@ -0,0 +1,15 @@ +package com.realnet.session.response; + +import com.realnet.fnd.response.OperationResponse; +import com.realnet.session.entity.SessionItem; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper=false) +public class SessionResponse extends OperationResponse { + @ApiModelProperty(required = true, value = "") + private SessionItem item; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Controllers/Start_inningController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Controllers/Start_inningController.java new file mode 100644 index 0000000..486701d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Controllers/Start_inningController.java @@ -0,0 +1,88 @@ +package com.realnet.start_inning.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.start_inning.Entity.Start_inning; +import com.realnet.start_inning.Services.Start_inningService ; +@RequestMapping(value = "/Start_inning") + @CrossOrigin("*") +@RestController +public class Start_inningController { + @Autowired + private Start_inningService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + @PostMapping("/Start_inning") + public Start_inning Savedata(@RequestBody Start_inning data) { + Start_inning save = Service.Savedata(data) ; + + + + + + + + + return save; + } +@PutMapping("/Start_inning/{id}") + public Start_inning update(@RequestBody Start_inning data,@PathVariable Integer id ) { + Start_inning update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Start_inning/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Start_inning") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Start_inning") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Start_inning/{id}") + public Start_inning getdetailsbyId(@PathVariable Integer id ) { + Start_inning get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Start_inning/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Entity/Start_inning.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Entity/Start_inning.java new file mode 100644 index 0000000..7f625a0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Entity/Start_inning.java @@ -0,0 +1,29 @@ +package com.realnet.start_inning.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Start_inning extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String select_match; + +private String select_team; + +private String select_player; + +private String datetime_field; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Repository/Start_inningRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Repository/Start_inningRepository.java new file mode 100644 index 0000000..8af180d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Repository/Start_inningRepository.java @@ -0,0 +1,13 @@ +package com.realnet.start_inning.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.start_inning.Entity.Start_inning; + +@Repository +public interface Start_inningRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Services/Start_inningService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Services/Start_inningService.java new file mode 100644 index 0000000..e5a706e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/start_inning/Services/Start_inningService.java @@ -0,0 +1,68 @@ +package com.realnet.start_inning.Services; +import com.realnet.start_inning.Repository.Start_inningRepository; +import com.realnet.start_inning.Entity.Start_inning;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class Start_inningService { +@Autowired +private Start_inningRepository Repository; + + + + + + + + +public Start_inning Savedata(Start_inning data) { + + + + + + + + +Start_inning save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Start_inning getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Start_inning update(Start_inning data,Integer id) { + Start_inning old = Repository.findById(id).get(); +old.setSelect_match(data.getSelect_match()); + +old.setSelect_team(data.getSelect_team()); + +old.setSelect_player(data.getSelect_player()); + +old.setDatetime_field(data.getDatetime_field()); + +final Start_inning test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java new file mode 100644 index 0000000..ff51ce0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/controller/SysParamController.java @@ -0,0 +1,227 @@ +package com.realnet.sysparameter.controller; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.servlet.http.HttpSession; +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.google.common.net.HttpHeaders; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; +import com.realnet.sysparameter.repository.SysParamRepository; +import com.realnet.sysparameter.repository.SysparamUploadRepo; +import com.realnet.sysparameter.service.SysParamService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/sysparam") +@Api(tags = { "sysparameter" }) +public class SysParamController { + + @Autowired + private AppUserServiceImpl userService; + + @Autowired + private SysParamService sysparamService; + + @Autowired + private SysparamUploadRepo sysparamUploadRepo; + + @Autowired + private SysParamRepository sysParamRepo; + + @Value("${projectPath}") + private String projectPath; + + // GET BY ID + @ApiOperation(value = "Get A system parameters", response = SysParamEntity.class) + @GetMapping("/getSysParams/{id}") + public ResponseEntity getSystemParamDetails(@PathVariable(value = "id") int id) { + SysParamEntity sysparameter = sysparamService.getById(id); + if (sysparameter == null) { + throw new ResourceNotFoundException("system parameter not found with id " + id); + } + return ResponseEntity.ok().body(sysparameter); + } + + // ADD SYSTEM PARAMETER + @ApiOperation(value = "Add New system parameters") + @PostMapping(value = "/addSysParams", consumes = { "application/json" }) + public ResponseEntity saveFavourite(@RequestBody SysParamEntity sysparam, HttpSession session1) + throws IOException { + + SysParamEntity savedsysparam = sysparamService.save(sysparam); + System.out.println("save system parameter id" + savedsysparam); + + if (savedsysparam == null) { + throw new ResourceNotFoundException("system parameter not saved "); + } + return ResponseEntity.ok().body(savedsysparam); + } + + // UPDATE + @ApiOperation(value = "update a system parameters", response = SysParamEntity.class) + @PutMapping("/updateSysParams/{id}") + public ResponseEntity updateSystemParameter( + @RequestHeader(value = HttpHeaders.AUTHORIZATION, required = false) String authToken, + @PathVariable(value = "id") Integer id, @Valid @RequestBody SysParamEntity sysparam) { + SysParamEntity updatedsale = sysparamService.updateSysParamById(id, sysparam); + if (updatedsale == null || id != updatedsale.getId()) { + throw new ResourceNotFoundException("system parameter not found with id " + id); + } + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedsale); + } + + // UPDATE logo on project + @PutMapping("/logo/updateSysParams/{sys_id}") + public ResponseEntity updateLogo(@PathVariable(value = "sys_id") Integer sys_id, + @Valid @RequestBody SysParamEntity sysparam) + throws JsonProcessingException { + SysParamEntity updatedsale = sysparamService.updatelogo(sys_id, sysparam); + if (updatedsale == null || sys_id != updatedsale.getId()) { + throw new ResourceNotFoundException("system parameter not found with id " + sys_id); + } + return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedsale); + } + + @PostMapping("/uploadimage") +// public ResponseEntity fileupload( +// +// @RequestParam("image") MultipartFile image) throws IOException { +// +// String filename = this.sysparamService.uplaodImage(path,image); +//// System.out.println("Original Image Byte Size - " + file.getBytes().length); +//// CardImage img = new CardImage(file.getOriginalFilename(), file.getContentType(), +//// compressBytes(file.getBytes())); +//// this.imageRepository.save(img); +// +// return new ResponseEntity<>(filename, HttpStatus.OK); +// } + + public ResponseEntity uploadProfilePic(@RequestParam("imageFile") MultipartFile file) throws IOException { + SysParamEntity sys = new SysParamEntity(); + String uploadPath = projectPath.concat("/src/main/resources/logo/"); + System.out.println("UPLOAD PATH = " + uploadPath); + + boolean success = sysparamService.upload_logo(file, uploadPath); + + String fileName = file.getOriginalFilename(); +// String head = fileName.substring(0, fileName.indexOf(".")); + String ext = fileName.substring(fileName.lastIndexOf(".")); + String fileNewName = "profile-pic-" + ext; + + System.out.println( + "UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileNewName + "\nFile Size = " + file.getSize()); + sys.setUpload_Logo(fileNewName); + Map res = new HashMap(); + if (success) { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.OK); + } else { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + +// save data nad upload files + @PostMapping("/Sysupload") + public ResponseEntity add(@RequestParam String o1, @RequestParam Map attachmentsfile) + throws IOException { + SysParamEntity sysParamEntity; + sysParamEntity = new ObjectMapper().readValue(o1, SysParamEntity.class); + SysParamEntity order = sysparamService.save(sysParamEntity); + + if (!attachmentsfile.isEmpty()) { +// long cLong = 1; + ArrayList attachments = new ArrayList(); + for (Map.Entry e : attachmentsfile.entrySet()) { + + System.out.println(e.getKey()); + SysParamUpload a = new SysParamUpload(); + a.setSysParamEntity(order); + a.setAttachmentId(order.getId()); + a.setAttachment(e.getValue().getBytes()); + a.setAttachmentType(e.getValue().getContentType()); + a.setAttachmentFilename(e.getValue().getOriginalFilename()); + attachments.add(a); + order.setUpload_Logo(a.getAttachmentFilename()); +// cLong++; + + } + sysparamService.addallattachments(attachments); + + } + + return new ResponseEntity<>(order, HttpStatus.OK); + + } + + @PutMapping("/Sysupload/{id}") + public ResponseEntity update(@RequestParam String o1, @RequestParam Map attachmentsfile, + @PathVariable int id) throws IOException { + SysParamEntity sysparam; + sysparam = new ObjectMapper().readValue(o1, SysParamEntity.class); + SysParamEntity order = sysparamService.updateSysParamById(id, sysparam); + + if (!attachmentsfile.isEmpty()) { +// long cLong = 1; + ArrayList attachments = new ArrayList(); + for (Map.Entry e : attachmentsfile.entrySet()) { + + System.out.println(e.getKey()); + SysParamUpload a = new SysParamUpload(); + a.setSysParamEntity(order); + a.setAttachmentId(order.getId()); + a.setAttachment(e.getValue().getBytes()); + a.setAttachmentType(e.getValue().getContentType()); + a.setAttachmentFilename(e.getValue().getOriginalFilename()); + attachments.add(a); + order.setUpload_Logo(a.getAttachmentFilename()); +// cLong++; + + } + sysparamService.addallattachments(attachments); + + } + + return new ResponseEntity<>(order, HttpStatus.OK); + + } + +// GET JSON WITH PHOTO BY ID + @GetMapping("/sysparam/{id}") + + public ResponseEntity GETSYS(@PathVariable int id) { + SysParamEntity pm = sysParamRepo.findById(id).orElseThrow(() -> new ResourceNotFoundException("id not found")); + + List attachments = sysparamService.getallattachmentsbyid(id); + pm.setSysParamUploads(attachments); + + return new ResponseEntity<>(pm, HttpStatus.OK); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java new file mode 100644 index 0000000..e51d6d3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamEntity.java @@ -0,0 +1,118 @@ +package com.realnet.sysparameter.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.persistence.Transient; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "System_paramaters") +@ToString +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class SysParamEntity { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @Column(name = "ID") + private int id; + + @Column(name = "SCHEDULER_TIME") + private int schedulerTime; + + @Column(name = "LEASE_TAX_CODE") + private String leaseTaxCode; + + @Column(name = "VESSEL_CONF_PROCESSLIMIT") + private int vesselConfProcessLimit; + + @Column(name = "ROW_TO_DISPLAY") + private int rowToDisplay; + + @Column(name = "LINK_TO_DISPLAY") + private int linkToDisplay; + + @Column(name = "ROW_TO_ADD") + private int rowToAdd; + + @Column(name = "LOV_ROW_TO_DISPLAY") + private int lovRowToDisplay; + + @Column(name = "LOV_LINK_TO_DISPLAY") + private int lovLinkToDisplay; + + @Column(name = "OID_SERVER_NAME") + private String oidserverName; + + @Column(name = "OID_BASE") + private String oidBase; + + @Column(name = "OID_ADMIN_USER") + private String oidAdminUser; + + @Column(name = "OID_SERVER_PORT") + private int oidServerPort; + + @Column(name = "USER_DEFAULT_GROUP") + private int userDefaultGroup; + + @Column(name = "DEFAULT_DEPARTMENT") + private String defaultDepartment; + + @Column(name = "DEFAULT_POSITION") + private String defaultPosition; + + @Column(name = "SINGLE_CHARGE") + private String singleCharge; + + @Column(name = "FIRST_DAYOF_THE_WEEK") + private String firstDayOftheWeek; + + @Column(name = "HOUR_PER_SHIFT") + private int hourPerShift; + + @Column(name = "CN_BILLING_FREQUENCY") + private int cnBillingFrequency; + + @Column(name = "BILLING_DEPARTMENT_CODE") + private String billingDepartmentCode; + + @Column(name = "BASE_PRICE_LIST") + private String basePriceList; + + @Column(name = "NONCONTAINER_SERVICEORDER_AUTO_APPDEPCODE") + private String nonContainerServiceOrder; + + @Column(name = "EDI_MAE_SCHEDULER_ONOFF") + private int EdiMaeSchedulerONOFF; + + @Column(name = "EDI_SCHEDULER_ONOFF") + private String EdiSchedulerONOFF; + + private String upload_Logo; + private String upload_Logo_name; + + private String upload_Logo_path; + + private String Company_Display_Name; + + private boolean isRegitrationAllowed=true; + + @Transient + @OneToMany(cascade = CascadeType.ALL) + private List sysParamUploads; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java new file mode 100644 index 0000000..a9f3644 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/entity/SysParamUpload.java @@ -0,0 +1,46 @@ +package com.realnet.sysparameter.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Lob; +import javax.persistence.ManyToOne; + + + +import lombok.Data; + +@Entity +@Data +public class SysParamUpload { + + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private int attachmentId; + + @Lob + @Column(nullable = true) + private byte[] attachment; + + @Column(nullable = true) + private String attachmentType; + + @Column(nullable = true) + private String attachmentFilename; + + @Column(nullable = false) + private String cancelStatus="N"; + +// private String createdBy; + + @Column(nullable = true) + private String updatedBy; + + private String externalFlag; + + @ManyToOne + private SysParamEntity sysParamEntity; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java new file mode 100644 index 0000000..fa51e22 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysParamRepository.java @@ -0,0 +1,11 @@ +package com.realnet.sysparameter.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.sysparameter.entity.SysParamEntity; + +@Repository +public interface SysParamRepository extends JpaRepository { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java new file mode 100644 index 0000000..6a03f25 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/repository/SysparamUploadRepo.java @@ -0,0 +1,16 @@ +package com.realnet.sysparameter.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.sysparameter.entity.SysParamUpload; + +@Repository +public interface SysparamUploadRepo extends JpaRepository { + @Query(value= "SELECT * FROM sys_param_upload WHERE sys_param_entity_id=?1", nativeQuery=true) + List findAllById(int sys_param_entity_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java new file mode 100644 index 0000000..6bef6ac --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/response/SysParamResponse.java @@ -0,0 +1,18 @@ +package com.realnet.sysparameter.response; + +import java.util.List; + +import com.realnet.fnd.response.PageResponse; +import com.realnet.sysparameter.entity.SysParamEntity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class SysParamResponse extends PageResponse{ + + @ApiModelProperty(required = true, value = "") + private List systemParam; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java new file mode 100644 index 0000000..7c60d72 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamService.java @@ -0,0 +1,28 @@ +package com.realnet.sysparameter.service; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; + +public interface SysParamService { + + public SysParamEntity getById(int id); + + SysParamEntity save(SysParamEntity sysparam); + + public SysParamEntity updateSysParamById(int id, SysParamEntity sysparam); + + public SysParamEntity updatelogo(int id, SysParamEntity sysparam) throws JsonProcessingException ; + + public boolean upload_logo(MultipartFile file, String uploadPath); + + public List addallattachments(List attachments); + + public List getallattachmentsbyid(int id); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java new file mode 100644 index 0000000..fa0ccaa --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/sysparameter/service/SysParamServiceImpl.java @@ -0,0 +1,177 @@ +package com.realnet.sysparameter.service; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.exceptions.StorageException; +import com.realnet.sysparameter.entity.SysParamEntity; +import com.realnet.sysparameter.entity.SysParamUpload; +import com.realnet.sysparameter.repository.SysParamRepository; +import com.realnet.sysparameter.repository.SysparamUploadRepo; + +import jnr.ffi.Struct.int16_t; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class SysParamServiceImpl implements SysParamService { + + @Autowired + private SysParamRepository sysParamRepo; + + @Autowired + private SysparamUploadRepo sysparamUploadRepo; + + @Override + public SysParamEntity getById(int id) { + // TODO Auto-generated method stub + SysParamEntity sysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("favourite not found :: " + id)); + return sysparam; + } + + @Override + public SysParamEntity save(SysParamEntity sysparam) { + // TODO Auto-generated method stub + SysParamEntity savedParam = sysParamRepo.save(sysparam); + return savedParam; + } + + @Override + public SysParamEntity updateSysParamById(int id, SysParamEntity sysparam) { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + NewSysparam.setRegitrationAllowed(sysparam.isRegitrationAllowed()); + + NewSysparam.setSchedulerTime(sysparam.getSchedulerTime()); + NewSysparam.setLeaseTaxCode(sysparam.getLeaseTaxCode()); + NewSysparam.setVesselConfProcessLimit(sysparam.getVesselConfProcessLimit()); + NewSysparam.setRowToDisplay(sysparam.getRowToDisplay()); + NewSysparam.setLinkToDisplay(sysparam.getLinkToDisplay()); + NewSysparam.setRowToAdd(sysparam.getRowToAdd()); + NewSysparam.setLovRowToDisplay(sysparam.getLovRowToDisplay()); + NewSysparam.setLovLinkToDisplay(sysparam.getLovLinkToDisplay()); + NewSysparam.setOidserverName(sysparam.getOidserverName()); + NewSysparam.setOidBase(sysparam.getOidBase()); + NewSysparam.setOidAdminUser(sysparam.getOidAdminUser()); + NewSysparam.setOidServerPort(sysparam.getOidServerPort()); + NewSysparam.setUserDefaultGroup(sysparam.getUserDefaultGroup()); + NewSysparam.setDefaultDepartment(sysparam.getDefaultDepartment()); + NewSysparam.setDefaultPosition(sysparam.getDefaultPosition()); + NewSysparam.setSingleCharge(sysparam.getSingleCharge()); + NewSysparam.setFirstDayOftheWeek(sysparam.getFirstDayOftheWeek()); + NewSysparam.setHourPerShift(sysparam.getHourPerShift()); + NewSysparam.setCnBillingFrequency(sysparam.getCnBillingFrequency()); + NewSysparam.setBillingDepartmentCode(sysparam.getBillingDepartmentCode()); + NewSysparam.setBasePriceList(sysparam.getBasePriceList()); + NewSysparam.setNonContainerServiceOrder(sysparam.getNonContainerServiceOrder()); + NewSysparam.setEdiMaeSchedulerONOFF(sysparam.getEdiMaeSchedulerONOFF()); + NewSysparam.setEdiSchedulerONOFF(sysparam.getEdiSchedulerONOFF()); + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + sysParamRepo.save(NewSysparam); + + return NewSysparam; + } + + @Override + public SysParamEntity updatelogo(int id, SysParamEntity sysparam) throws JsonProcessingException { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + +// Rn_Project_Setup project_Setup = rn_ProjectSetup_Service.getById(project_id); + + if (sysparam.getUpload_Logo_name() != null && sysparam.getUpload_Logo_path() != null) { + + NewSysparam.setUpload_Logo_name(sysparam.getUpload_Logo_name()); + NewSysparam.setUpload_Logo_path(sysparam.getUpload_Logo_path()); + +// project_Setup.setUpload_Logo_name(sysparam.getUpload_Logo_name()); +// project_Setup.setUpload_Logo_path(sysparam.getUpload_Logo_path()); + } + if (sysparam.getCompany_Display_Name() != null) { + + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + +// project_Setup.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + + } + + SysParamEntity save = sysParamRepo.save(NewSysparam); + + return save; + } + + @Override + public boolean upload_logo(MultipartFile file, String uploadPath) { + if (file.isEmpty()) { + throw new StorageException("Failed to store empty file"); + } + try { + String fileName = file.getOriginalFilename(); + + String ext = fileName.substring(fileName.lastIndexOf(".")); + String extension = FilenameUtils.getExtension(fileName); // lol + String newName = "profile-pic-" + ext; + + System.out.println(System.getProperty("java.io.tmpdir")); + File convFile = new File( + System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + newName); + file.transferTo(convFile); + return true; + } catch (IOException e) { + String msg = String.format("Failed to store file %s", file.getName()); + log.info(msg); + return false; + } + + } + + @Override + public List addallattachments(List attachments) { + + for (SysParamUpload at : attachments) { + sysparamUploadRepo.save(at); + } + return attachments; + } + + @Override + + public List getallattachmentsbyid(int sys_param_entity_id) { + + List list = sysparamUploadRepo.findAllById(sys_param_entity_id); + return list; + } + + public SysParamEntity updateCompNameAndLogo(int id, SysParamEntity sysparam) throws JsonProcessingException { + // TODO Auto-generated method stub + SysParamEntity NewSysparam = sysParamRepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("sysprameter not found :: " + id)); + + if (sysparam.getUpload_Logo() != null) { + + NewSysparam.setUpload_Logo(sysparam.getUpload_Logo()); + + } + if (sysparam.getCompany_Display_Name() != null) { + + NewSysparam.setCompany_Display_Name(sysparam.getCompany_Display_Name()); + + } + + SysParamEntity save = sysParamRepo.save(NewSysparam); + + return save; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamList_ListFilter1Controller.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamList_ListFilter1Controller.java new file mode 100644 index 0000000..216fbf5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamList_ListFilter1Controller.java @@ -0,0 +1,24 @@ +package com.realnet.team.Controllers; +import java.util.List; +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.web.bind.annotation.*; +import com.realnet.team.Entity.TeamList_ListFilter1; +import com.realnet.team.Services.TeamList_ListFilter1Service ; +@RequestMapping(value = "/TeamList_ListFilter1") +@RestController +public class TeamList_ListFilter1Controller { + + @Autowired + private TeamList_ListFilter1Service Service; + + @GetMapping("/TeamList_ListFilter1") + public List getlist() { + List get = Service.getlistbuilder(); + return get; +} + @GetMapping("/TeamList_ListFilter11") + public List getlistwithparam( ) { + List get = Service.getlistbuilderparam( ); + return get; +} +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamsController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamsController.java new file mode 100644 index 0000000..1d25e59 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Controllers/TeamsController.java @@ -0,0 +1,96 @@ +package com.realnet.team.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.Page; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.beans.factory.annotation.*; +import com.realnet.team.Entity.Teams; +import com.realnet.team.Services.TeamsService ; +@RequestMapping(value = "/Teams") + @CrossOrigin("*") +@RestController +public class TeamsController { + @Autowired + private TeamsService Service; + +@Value("${projectPath}") + private String projectPath; + + + + + + + + + + + + + + @PostMapping("/Teams") + public Teams Savedata(@RequestBody Teams data) { + Teams save = Service.Savedata(data) ; + + + + + + + + + + + + + return save; + } +@PutMapping("/Teams/{id}") + public Teams update(@RequestBody Teams data,@PathVariable Integer id ) { + Teams update = Service.update(data,id); + return update; + } +// get all with pagination + @GetMapping("/Teams/getall/page") + public Page getall(@RequestParam(value = "page", required = false) Integer page, + @RequestParam(value = "size", required = false) Integer size) { + Pageable paging = PageRequest.of(page, size); + Page get = Service.getAllWithPagination(paging); + + return get; + + } + @GetMapping("/Teams") + public List getdetails() { + List get = Service.getdetails(); + return get; +} +// get all without authentication + + @GetMapping("/token/Teams") + public List getallwioutsec() { + List get = Service.getdetails(); + return get; +} +@GetMapping("/Teams/{id}") + public Teams getdetailsbyId(@PathVariable Integer id ) { + Teams get = Service.getdetailsbyId(id); + return get; + } +@DeleteMapping("/Teams/{id}") + public void delete_by_id(@PathVariable Integer id ) { + Service.delete_by_id(id); + + } + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/TeamList_ListFilter1.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/TeamList_ListFilter1.java new file mode 100644 index 0000000..d39b7e6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/TeamList_ListFilter1.java @@ -0,0 +1,14 @@ +package com.realnet.team.Entity; + import lombok.*; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Data + public class TeamList_ListFilter1 { + + private Integer id; + + + private String team_name; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/Teams.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/Teams.java new file mode 100644 index 0000000..07ae6d4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Entity/Teams.java @@ -0,0 +1,36 @@ +package com.realnet.team.Entity; + import lombok.*; +import com.realnet.WhoColumn.Extension; + import javax.persistence.*; + import java.time.LocalDateTime; + import java.util.*; + + @Entity + @Data + public class Teams extends Extension { + /** + * + */ + private static final long serialVersionUID = 1L; + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Integer id; + +private String team_name; + +private String logoname; +private String logopath ; + + +@Column(length = 2000) +private String description; + +private String members; + +private String matches; + +private boolean active; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Repository/TeamsRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Repository/TeamsRepository.java new file mode 100644 index 0000000..71abb7b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Repository/TeamsRepository.java @@ -0,0 +1,13 @@ +package com.realnet.team.Repository; + + +import org.springframework.data.jpa.repository.JpaRepository; + +import org.springframework.stereotype.Repository; + + +import com.realnet.team.Entity.Teams; + +@Repository +public interface TeamsRepository extends JpaRepository { +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamList_ListFilter1Service.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamList_ListFilter1Service.java new file mode 100644 index 0000000..ceff8b4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamList_ListFilter1Service.java @@ -0,0 +1,47 @@ +package com.realnet.team.Services; +import java.util.*; +import com.realnet.team.Repository.TeamsRepository; +import com.realnet.team.Entity.Teams; + +import com.realnet.team.Entity.TeamList_ListFilter1; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; + import org.springframework.stereotype.Service; + +@Service + public class TeamList_ListFilter1Service { +@Autowired +private TeamsRepository Repository; + + + + + public List getlistbuilder() { + List list= Repository.findAll(); + ArrayList l = new ArrayList<>(); + for (Teams data : list) { +{ +TeamList_ListFilter1 dummy = new TeamList_ListFilter1(); + dummy.setId(data.getId()); + dummy.setTeam_name(data.getTeam_name()); + l.add(dummy); +} +} +return l;} + + + + public List getlistbuilderparam( ) { + List list= Repository.findAll(); + ArrayList l = new ArrayList<>(); + for (Teams data : list) { +{ +TeamList_ListFilter1 dummy = new TeamList_ListFilter1(); + dummy.setId(data.getId()); + dummy.setTeam_name(data.getTeam_name()); + l.add(dummy); +} +} +return l;} +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamsService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamsService.java new file mode 100644 index 0000000..c8c6c8f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/team/Services/TeamsService.java @@ -0,0 +1,80 @@ +package com.realnet.team.Services; +import com.realnet.team.Repository.TeamsRepository; +import com.realnet.team.Entity.Teams;import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import com.realnet.SequenceGenerator.Service.SequenceService; +import com.realnet.Notification.Entity.NotificationService; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + import org.springframework.stereotype.Service; + +@Service + public class TeamsService { +@Autowired +private TeamsRepository Repository; + + + + + + + + + + + + +public Teams Savedata(Teams data) { + + + + + + + + + + + + +Teams save = Repository.save(data); + return save; + } + + +// get all with pagination + public Page getAllWithPagination(Pageable page) { + return Repository.findAll(page); + } +public List getdetails() { + return (List) Repository.findAll(); + } + + +public Teams getdetailsbyId(Integer id) { + return Repository.findById(id).get(); + } + + + public void delete_by_id(Integer id) { + Repository.deleteById(id); +} + + +public Teams update(Teams data,Integer id) { + Teams old = Repository.findById(id).get(); +old.setTeam_name(data.getTeam_name()); + + + +old.setDescription(data.getDescription()); + +old.setMembers(data.getMembers()); + +old.setMatches(data.getMatches()); + +old.setActive (data.isActive()); + +final Teams test = Repository.save(old); + return test;}} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java new file mode 100644 index 0000000..d3e4455 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/DynamicTemplateController.java @@ -0,0 +1,332 @@ +package com.realnet.template.controller; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.sql.Timestamp; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Optional; +import java.util.Set; +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.ss.usermodel.WorkbookFactory; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.json.simple.JSONObject; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.dao.DataIntegrityViolationException; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.mock.web.MockMultipartFile; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; +import com.google.gson.JsonArray; +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; +import com.google.gson.JsonParser; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.DynamicTemplateService; + +@RestController +@RequestMapping("api/dynamic") +public class DynamicTemplateController { + @Autowired + private JdbcTemplate jdbcTemplate; + @Autowired + private TemplatedataRepo temprepo; + @Autowired + private DynamicTemplateService dynamicTemplateService; + + @PostMapping("/templatetojsondata") + public ResponseEntity> saveTemplateInJson(@RequestParam("file") MultipartFile file) + throws IOException { + List jsonList = dynamicTemplateService.processTemplate(file); + return new ResponseEntity<>(jsonList, HttpStatus.OK); + } + + @PostMapping("/templatetojson/{id}") + public ResponseEntity convertFileToJson(@PathVariable Long id) throws IOException { + // Retrieve the TemplateFileUpload entity based on the provided ID + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + // Handle the case where the file is not found in the specified location + return ResponseEntity.notFound().build(); + } + MultipartFile multipartFile = new MockMultipartFile(fileName, new FileInputStream(file)); + List jsonList = dynamicTemplateService.processTemplate(multipartFile); + return ResponseEntity.ok(jsonList); + + } + + @GetMapping("/getHeaders/{id}") + public ResponseEntity> getFileHeaders(@PathVariable Long id) throws IOException { + Optional fileUploadOptional = temprepo.findById(id); + + TemplateFileUpload fileUpload = fileUploadOptional.get(); + String location = fileUpload.getFile_location(); + String fileName = fileUpload.getFile_changed_name() + ".xlsx"; + String filePath = location + File.separator + "processingfile" + File.separator + fileName; + File file = new File(filePath); + if (!file.exists()) { + return ResponseEntity.notFound().build(); + } + Workbook workbook = WorkbookFactory.create(file); + Sheet sheet = workbook.getSheetAt(0); + Row headerRow = sheet.getRow(0); + List headers = new ArrayList<>(); + for (Cell cell : headerRow) { + String header = cell.getStringCellValue(); + headers.add(header); + } + workbook.close(); + return ResponseEntity.ok(headers); + } + + @PostMapping("/jsonkeychange") + public ResponseEntity changeKeysOfJson(@RequestParam String newjson, @RequestParam String body) + throws IOException { + JsonParser parser = new JsonParser(); + JsonArray newKeysArray = parser.parse(newjson).getAsJsonArray(); + JsonElement bodyElement = parser.parse(body); + JsonArray bodyArray = bodyElement.getAsJsonArray(); + List> jsonList = new ArrayList<>(); // Use Object type to handle booleans + for (JsonElement bodyElement1 : bodyArray) { + JsonObject bodyObject = bodyElement1.getAsJsonObject(); + Map map = new HashMap<>(); // Use Object type to handle booleans + for (JsonElement newKeyElement : newKeysArray) { + JsonObject newKeyObject = newKeyElement.getAsJsonObject(); + String originalKey = newKeyObject.get("headerName").getAsString(); + String newKey = newKeyObject.get("value").getAsString(); + if (bodyObject.has(originalKey)) { + JsonElement valueElement = bodyObject.get(originalKey); + // Check if the value is a string representation of boolean + if (valueElement.isJsonPrimitive() && valueElement.getAsJsonPrimitive().isString()) { + String value = valueElement.getAsString().toLowerCase(); // Convert to lowercase + // Convert "true" or "false" to boolean type + if (value.equals("true") || value.equals("false")) { + boolean boolValue = Boolean.parseBoolean(value); + map.put(newKey, boolValue); + continue; // Skip further processing for this key + } + } + String value = valueElement.getAsString(); + map.put(newKey, value); + } + } + jsonList.add(map); + } + return new ResponseEntity<>(jsonList, HttpStatus.ACCEPTED); + } + + @PostMapping("/DownloadExcel/{entityName}") + public ResponseEntity importdatadownloadexcel(@PathVariable String entityName, + @RequestBody List> data) { + List> processedData = new ArrayList<>(); + try { + String convertedTableName = entityName; + String sql = getInsertQuery1(convertedTableName, data.get(0)); + for (int i = 0; i < data.size(); i++) { + Map row = data.get(i); + Map processedRow = new HashMap<>(); + try { + Object[] values = new Object[row.size() + 5]; // +5 for the additional columns + int index = 0; + for (Object value : row.values()) { + values[index++] = value; + } + values[index++] = new Timestamp(System.currentTimeMillis()); // created_at + values[index++] = null; // created_by + values[index++] = null; // updated_by + values[index++] = new Timestamp(System.currentTimeMillis()); // updated_at + values[index] = null; // account_id + jdbcTemplate.update(sql, values); + processedRow.putAll(row); + processedRow.put("Status", "Success"); + processedRow.put("Exception", "NA"); + } catch (DataIntegrityViolationException e) { + processedRow.putAll(row); + processedRow.put("Status", "Error"); + String exceptionMessage = extractExceptionMessage1(e); + processedRow.put("Exception", exceptionMessage); + } + processedData.add(processedRow); + } + if (!processedData.isEmpty()) { + Workbook workbook = new XSSFWorkbook(); + Sheet sheet = workbook.createSheet("Failed Records"); + // Add column headers to the worksheet + Row headerRow = sheet.createRow(0); + int columnIndex = 0; + for (String key : processedData.get(0).keySet()) { + Cell cell = headerRow.createCell(columnIndex++); + cell.setCellValue(key); + } + // Add data rows to the worksheet + int rowIndex = 1; + for (Map row : processedData) { + Row dataRow = sheet.createRow(rowIndex++); + columnIndex = 0; + for (Object value : row.values()) { + Cell cell = dataRow.createCell(columnIndex++); + cell.setCellValue(value.toString()); + } + } + // Write the workbook to a file + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + workbook.write(outputStream); + ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray()); + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.parseMediaType("application/vnd.ms-excel")); + headers.set(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=failed_records.xlsx"); + Resource resource = new InputStreamResource(inputStream); + return ResponseEntity.ok().headers(headers).body(resource); + } + return ResponseEntity.ok().body(null); + } catch (Exception e) { + return ResponseEntity.badRequest().body(null); + } + } + + private String extractExceptionMessage1(DataIntegrityViolationException e) { + String errorMessage = e.getMessage(); + int startIndex = errorMessage.indexOf("Incorrect "); + int endIndex = errorMessage.indexOf("at row"); + if (startIndex != -1 && endIndex != -1) { + return errorMessage.substring(startIndex, endIndex).trim(); + } + return errorMessage; + } + + private String convertTableName1(String tableName) { + switch (tableName.toLowerCase()) { + case "priority": + return "sr_priority2_t"; + case "impact": + return "sr_impact2_t"; + case "urgency": + return "Sr_urgency_t"; + case "category": + return "sr_category2_t"; + case "state": + return "sr_state_t"; + case "contact_type": + return "sr_contact_type_t"; + case "customer": + return "sr_customer_t"; + case "handler": + return "sr_handler_t"; + default: + return tableName; + } + } + + private String getInsertQuery1(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("INSERT INTO "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + sqlBuilder.append(String.join(", ", data.keySet())); + sqlBuilder.append(", created_at, created_by, updated_by, updated_at, account_id) VALUES ("); + sqlBuilder.append(String.join(", ", Collections.nCopies(data.size(), "?"))); + sqlBuilder.append(", ?, ?, ?, ?, ?)"); + return sqlBuilder.toString(); + } + + private void createTableIfNotExists(String tableName, Map data) { + StringBuilder sqlBuilder = new StringBuilder(); + sqlBuilder.append("CREATE TABLE IF NOT EXISTS "); + sqlBuilder.append(tableName); + sqlBuilder.append(" ("); + // Check if "id" field exists in the data map + if (data.containsKey("id")) { + // Add "id" column as the first column + sqlBuilder.append("id INT PRIMARY KEY, "); + } + for (Map.Entry entry : data.entrySet()) { + String columnName = entry.getKey(); + Object columnValue = entry.getValue(); + // Skip adding "id" field again + if (columnName.equalsIgnoreCase("id")) { + continue; + } + if (columnName.equalsIgnoreCase("date") || columnName.equalsIgnoreCase("dob")) { + sqlBuilder.append(columnName).append(" DATE, "); + } else { + sqlBuilder.append(columnName).append(" VARCHAR(255), "); + } + } + sqlBuilder.delete(sqlBuilder.length() - 2, sqlBuilder.length()); // Remove the last comma and space + sqlBuilder.append(")"); + jdbcTemplate.execute(sqlBuilder.toString()); + } + + @GetMapping("/columns/{tableName}") + public List getColumnNames(@PathVariable String tableName) { + Set columnNamesSet = new HashSet<>(); + String convertedTableName = convertTableName(tableName); + List columnNames = jdbcTemplate.queryForList( + "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = ?", + new Object[] { convertedTableName }, String.class); + // Exclude specific column names + List excludedColumns = Arrays.asList("id", "account_id", "updated_at", "created_at", "created_by", + "updated_by"); + for (String columnName : columnNames) { + if (!excludedColumns.contains(columnName)) { + columnNamesSet.add(columnName); + } + } + return new ArrayList<>(columnNamesSet); + } + + private String convertTableName(String tableName) { + switch (tableName.toLowerCase()) { + case "customer": + return "customer_master_t"; + case "impact": + return "sr_impact2_t"; + case "urgency": + return "Sr_urgency_t"; + case "category": + return "sr_category2_t"; + case "state": + return "sr_state_t"; + case "contact_type": + return "sr_contact_type_t"; + + case "handler": + return "sr_handler_t"; + default: + return tableName; + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java new file mode 100644 index 0000000..e58988b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ExcelController.java @@ -0,0 +1,327 @@ +//package com.realnet.excel.controller; +package com.realnet.template.controller; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import org.apache.poi.ss.usermodel.Cell; +import org.apache.poi.ss.usermodel.Row; +import org.apache.poi.ss.usermodel.Sheet; +import org.apache.poi.ss.usermodel.Workbook; +import org.apache.poi.xssf.usermodel.XSSFWorkbook; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.FileSystemResource; +import org.springframework.core.io.InputStreamResource; +import org.springframework.core.io.Resource; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; +import com.realnet.template.service.CSVService; +import com.realnet.template.service.FileUploadService; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.service1.AppUserServiceImpl; + +@RestController +@RequestMapping("api/template") +public class ExcelController { + @Autowired + private TemplatedataRepo temprepo; + + @Autowired + FileUploadService fileupload; + @Autowired + private AppUserServiceImpl userService; +// +// @Autowired +// private FileUploadService fileUploadService; + +// @Autowired +// private CommFileuploadhelper fileuploadhelper; + + @GetMapping("/demo/download/{file_type}") + public ResponseEntity demoTemplate(@PathVariable String file_type) throws IOException { + + if (file_type.equalsIgnoreCase("Customer")) { + + String filename = "Customer" + ".xlsx"; + String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } else if (file_type.equalsIgnoreCase("impact")) { + + String filename = "Sr_impact2_t" + ".xlsx"; + String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", + "Effective End date" }; + ByteArrayInputStream in = demoTemplate(header, file_type); + InputStreamResource file = new InputStreamResource(in); + return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) + .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); + + } + + return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); + + } + + public static ByteArrayInputStream demoTemplate(String[] HEADERs, String file_type) throws IOException { + String SHEET = file_type; + Workbook workbook = new XSSFWorkbook(); + ByteArrayOutputStream out = new ByteArrayOutputStream(); + Sheet sheet = workbook.createSheet(SHEET); + Row headerRow = sheet.createRow(0); + for (int col = 0; col < HEADERs.length; col++) { + Cell cell = headerRow.createCell(col); + cell.setCellValue(HEADERs[col]); + } + workbook.write(out); + return new ByteArrayInputStream(out.toByteArray()); + + } + + @Autowired + private CSVService csvService; + @Value("${projectPath}") + private String projectpath; + +// download Template In Excel + @GetMapping("/download-csv") + public ResponseEntity downloadCSV(@RequestParam String tableName) throws IOException { + + System.out.println("downloading start.."); + String processString = processString(tableName); + String filename = csvService.generateCSV(processString.toLowerCase()); + + System.out.println("file generate.."); + + String baseFilePath = projectpath + File.separator + filename; + + Path zipFilePath = Paths.get(baseFilePath); + try { + byte[] Content = Files.readAllBytes(zipFilePath); + + ByteArrayInputStream in = new ByteArrayInputStream(Content); + InputStreamResource file = new InputStreamResource(in); +// ByteArrayResource resource = new ByteArrayResource(zipContent); + + HttpHeaders headers = new HttpHeaders(); + headers.add(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename); + headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); + + return ResponseEntity.ok().headers(headers).contentLength(Content.length).body(file); + } catch (IOException e) { + e.printStackTrace(); + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(null); + } + + } + + public String processString(String input) { + if (input == null || input.isEmpty()) { + return input; + } + + StringBuilder result = new StringBuilder(); + result.append(input.charAt(0)); // Append the first character as is + + for (int i = 1; i < input.length(); i++) { + char currentChar = input.charAt(i); + char prevChar = input.charAt(i - 1); + + if (Character.isUpperCase(currentChar) && prevChar == '_') { + result.append(Character.toLowerCase(currentChar)); + } else if (Character.isUpperCase(currentChar)) { + result.append('_').append(Character.toLowerCase(currentChar)); + } else { + result.append(currentChar); + } + } + + return result.toString(); + } + +// @PostMapping("/save/{filetype}") +// public ResponseEntity uploadFile(@RequestParam MultipartFile file, @PathVariable String filetype) +// throws IOException, ParseException { +// BufferedReader br; +// InputStream is = file.getInputStream(); +// br = new BufferedReader(new InputStreamReader(is)); +// String file_name = file.getOriginalFilename(); +// AppUser loggedInUser = userService.getLoggedInUser(); +// +// if (filetype.equalsIgnoreCase("priority")) { +// +// if (file_name.contains("Sr_priority2_t")) { +// +// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// ArrayList prioritylist = new ArrayList(); +// +// Workbook workbook = WorkbookFactory.create(is); +// +//// Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int cols = sheet.getRow(0).getLastCellNum(); +// +// fileupload.uploadFile(file, loggedInUser.getUserId(), filetype); +// +// for (Row row : sheet) { +// +// if (row.getRowNum() == 0) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// +// if (!header[i].equalsIgnoreCase(value)) { +// +// return new ResponseEntity<>( +// "priority file Should have \"" + header + " \"in the header in excel file", +// HttpStatus.BAD_REQUEST); +// } +// } +// +// } +// +// if (row.getRowNum() != 0) { +// Date date = row.getCell(3).getDateCellValue(); +// Date date2 = row.getCell(4).getDateCellValue(); +// +// Sr_priority2_t priority = new Sr_priority2_t(); +// priority.setPriority_name(dataFormatter.formatCellValue(row.getCell(0))); +// priority.setDescription(dataFormatter.formatCellValue(row.getCell(1))); +// priority.setActive(Boolean.valueOf(dataFormatter.formatCellValue(row.getCell(2)))); +// +// priority.setEffective_start_date(date); +// priority.setEffective_end_date(date2); +// priorityrepo.save(priority); +// +// prioritylist.add(priority); +// } +// +// } +//// priorityrepo.saveAll(prioritylist); +// workbook.close(); +// +//// +// +// return new ResponseEntity<>("File Uploaded", HttpStatus.ACCEPTED); +// } +// return new ResponseEntity<>("File name should contain Sr_priority2_t", HttpStatus.BAD_REQUEST); +// +// } +// +// return new ResponseEntity<>("Something Went Wrong please try again....!!!!! ", HttpStatus.BAD_REQUEST); +// +// } +// +//// Download template data in excel Files +// +// @GetMapping("/download/{file_type}") +// +// public ResponseEntity getFile(@PathVariable String file_type) throws IOException { +// +// if (file_type.equalsIgnoreCase("priority")) { +// +// String filename = "Sr_priority2_t" + ".xlsx"; +// String[] header = { "Priority Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// List findAll = priorityrepo.findAll(); +// ByteArrayInputStream in = templateByte(findAll, header); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } else if (file_type.equalsIgnoreCase("impact")) { +// +// String filename = "Sr_impact2_t" + ".xlsx"; +// String[] header = { "Impact Name", "Description", "Is Active", "Effective Start Date", +// "Effective End date" }; +// List findAll = impactrepo.findAll(); +// ByteArrayInputStream in = templateByte3(findAll, header); +// InputStreamResource file = new InputStreamResource(in); +// return ResponseEntity.ok().header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + filename) +// .contentType(MediaType.parseMediaType("application/vnd.ms-excel")).body(file); +// +// } +// +// return new ResponseEntity("Not Found", HttpStatus.BAD_REQUEST); +// +// } + + @GetMapping("/getalltemplate") + public ResponseEntity getALlTemplate() { + return new ResponseEntity<>(temprepo.findAll(), HttpStatus.ACCEPTED); + } + + @GetMapping("/gettemplatebyid/{id}") + public ResponseEntity getTemplateById(@PathVariable Long id) { + return new ResponseEntity<>(fileupload.getTemplatebyid(id), HttpStatus.ACCEPTED); + } + + @PostMapping("/save/{entityName}/{name}") + public ResponseEntity post(@RequestParam(required = false) MultipartFile file, @PathVariable String entityName, + @PathVariable String name) throws JsonMappingException, JsonProcessingException { + + TemplateFileUpload job; + AppUser loggedInUser = userService.getLoggedInUser(); + +// job = new ObjectMapper().readValue(entityName, TemplateFileUpload.class); + + if (file != null) { + System.out.println(file.getOriginalFilename()); + +// boolean f = +// fileUploadService.uploadFile(file); + + fileupload.uploadFile(file, loggedInUser.getUserId(), entityName, name); + + } + + else { + System.out.println("erro"); + } + +// TemplateFileUpload save = temprepo.save(job); + + return new ResponseEntity<>(HttpStatus.OK); + + } + + @DeleteMapping("/deletetemplate/{id}") + public ResponseEntity deleteTemplateFileUploadById(@PathVariable Long id) { + try { + fileupload.deleteTemplateFileUploadById(id); + return ResponseEntity.ok("Template file deleted successfully"); + } catch (Exception e) { + // Handle exceptions, e.g., if the entity with the given ID is not found + return ResponseEntity.badRequest().body("Failed to delete template file: " + e.getMessage()); + } + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java new file mode 100644 index 0000000..928e30e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/HtmlToPngController.java @@ -0,0 +1,150 @@ +package com.realnet.template.controller; + +import java.io.FileOutputStream; +import java.io.IOException; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; +import org.springframework.util.Base64Utils; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequestMapping("/token") +public class HtmlToPngController { + +// @PostMapping(value = "/generate-file", produces = MediaType.TEXT_PLAIN_VALUE) +// public ResponseEntity generateFileFromHtml(@RequestParam String fileType, @RequestBody String htmlContent) { +// try { +// String fileExtension = ""; +// String renderedContent = ""; +// +// // Determine file extension and render content based on the fileType parameter +// if ("png".equalsIgnoreCase(fileType)) { +// fileExtension = "png"; +// BufferedImage image = renderHtmlToImage(htmlContent); +// File outputfile = new File("output.png"); +// ImageIO.write(image, "png", outputfile); +// renderedContent = "Image"; +// } else { +// return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Unsupported file type."); +// } +// +// // Return the file path or URL in the response +// String filePath = "output." + fileExtension; +// if (!StringUtils.isEmpty(filePath)) { +// return ResponseEntity.ok().body(renderedContent + " saved successfully at: " + filePath); +// } else { +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Failed to save the " + renderedContent + "."); +// } +// } catch (IOException e) { +// e.printStackTrace(); +// return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Error occurred while saving the file."); +// } +// } +// +// private BufferedImage renderHtmlToImage(String htmlContent) { +// JEditorPane editorPane = new JEditorPane(); +// editorPane.setContentType("text/html"); +// editorPane.setText(htmlContent); +// +// // Wait for the component to be rendered +// editorPane.setSize(new Dimension(1200, 800)); +// editorPane.setPreferredSize(new Dimension(1200, 800)); +// editorPane.setMinimumSize(new Dimension(1200, 800)); +// editorPane.setMaximumSize(new Dimension(1200, 800)); +// +// BufferedImage image = new BufferedImage(1200, 800, BufferedImage.TYPE_INT_ARGB); +// Graphics2D g2d = image.createGraphics(); +// editorPane.print(g2d); +// g2d.dispose(); +// +// return image; +// } + + + @PostMapping("/saveImageFromHtml") + public String saveImageFromHtml(@RequestBody String html) { + try { + // Parse HTML string + Document doc = Jsoup.parse(html); + + // Find img elements + Elements imgElements = doc.select("img"); + + // Iterate through img elements + for (Element imgElement : imgElements) { + // Get Base64 encoded image data from src attribute + String src = imgElement.attr("src"); + String base64Data = src.replaceFirst("^data:image/png;base64,", ""); + + // Decode Base64 string to byte array + byte[] imageData = Base64Utils.decodeFromString(base64Data); + + // Write byte array to PNG file + FileOutputStream fos = new FileOutputStream("image.png"); + fos.write(imageData); + fos.close(); + } + + return "Image saved successfully!"; + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save image!"; + } + } + + + @PostMapping("/saveImageFromHtmlFileType") + public String saveImageFromHtml( + @RequestParam String fileType, + @RequestBody String html + ) { + try { + // Parse HTML string + Document doc = Jsoup.parse(html); + + // Find img elements + Elements imgElements = doc.select("img"); + + // Iterate through img elements + for (Element imgElement : imgElements) { + // Get Base64 encoded image data from src attribute + String src = imgElement.attr("src"); + String base64Data = src.replaceFirst("^data:image/png;base64,", ""); + + // Decode Base64 string to byte array + byte[] imageData = Base64Utils.decodeFromString(base64Data); + + // Determine file extension and content type + String fileExtension; + String contentType; + if ("png".equalsIgnoreCase(fileType)) { + fileExtension = ".png"; + contentType = "image/png"; + } else if ("svg".equalsIgnoreCase(fileType)) { + fileExtension = ".svg"; + contentType = "image/svg+xml"; + } else { + return "Unsupported file type!"; + } + + // Write byte array to file + String filename = "image" + fileExtension; + FileOutputStream fos = new FileOutputStream(filename); + fos.write(imageData); + fos.close(); + } + + return "Image saved successfully!"; + } catch (IOException e) { + e.printStackTrace(); + return "Failed to save image!"; + } + } +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java new file mode 100644 index 0000000..28c5374 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImageUploadController.java @@ -0,0 +1,111 @@ +package com.realnet.template.controller; + +import java.util.Date; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.realnet.FileUpload.helper.Fileupload_helper; +import com.realnet.template.entity.ImageUpload; +import com.realnet.template.service.ImageUploadService; + + +@RequestMapping("api/template/imageUpload") +@RestController +public class ImageUploadController { + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Value("${projectPath}") + private String projectPath; + + public final String UPLOAD_DIREC = "/Files"; + + @Autowired + private Fileupload_helper fileuploadhelper; + + @Autowired + private ImageUploadService imageUploadService; + + @PostMapping("/ImageUpload") + public ResponseEntity save(@RequestParam String data, @RequestParam MultipartFile file) throws Exception { + + Date date = new Date(); + String str = date.getTime() + "_"; + + ImageUpload docs; + + docs = new ObjectMapper().readValue(data, ImageUpload.class); + + if (!file.isEmpty()) { + System.out.println(file.getOriginalFilename()); + + boolean f = fileuploadhelper.uploadFilewithtimestamp(file, str); + + if (f) { + System.out.println("file uploaded successfully"); + int lastIndexOf = file.getOriginalFilename().lastIndexOf("."); + String filetype = file.getOriginalFilename().substring(lastIndexOf + 1); + docs.setFilename(str + file.getOriginalFilename()); + + docs.setFilePath(projectPath + UPLOAD_DIREC); + + } + + else { + docs.setFilename("No file uploaded"); + System.out.println(" no file uploaded "); + + } + + } else { + docs.setFilename("No file found"); + System.out.println(" no file uploaded "); + + } + ImageUpload saveddata = imageUploadService.Savedata(docs); + + return new ResponseEntity<>(saveddata, HttpStatus.OK); + } + + @GetMapping("/ImageUpload") + public List getdetails() { + List get = imageUploadService.getdetails(); + return get; + } + + @GetMapping("/ImageUpload/{id}") + public ImageUpload getdetailsbyId(@PathVariable Long id) { + ImageUpload get = imageUploadService.getdetailsbyId(id); + return get; + + } + + @DeleteMapping("/ImageUpload/{id}") + public void delete_by_id(@PathVariable Long id) { + imageUploadService.delete_by_id(id); + + } + + @PutMapping("/ImageUpload/{id}") + public ImageUpload update(@RequestBody ImageUpload data, @PathVariable Long id) { + ImageUpload update = imageUploadService.update(data, id); + return update; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java new file mode 100644 index 0000000..bb25bb4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/controller/ImportDataRequest.java @@ -0,0 +1,25 @@ +package com.realnet.template.controller; + +import java.util.List; +import java.util.Map; + +public class ImportDataRequest { + private List> Site; + private List> Customer; + + public List> getSite() { + return Site; + } + + public void setSite(List> site) { + Site = site; + } + + public List> getCustomer() { + return Customer; + } + + public void setCustomer(List> customer) { + Customer = customer; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java new file mode 100644 index 0000000..ebe0b34 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/ImageUpload.java @@ -0,0 +1,34 @@ +package com.realnet.template.entity; + + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + + + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class ImageUpload { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long user_id; + + private String dataImportName; + + private String filename; + + private String filePath; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java new file mode 100644 index 0000000..f8d3522 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/entity/TemplateFileUpload.java @@ -0,0 +1,36 @@ +package com.realnet.template.entity; + +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; + +import com.realnet.WhoColumn.Who_column; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Entity +@AllArgsConstructor +@NoArgsConstructor +public class TemplateFileUpload extends Who_column { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + private Long user_id; + private String file_name; + private String file_changed_name; + private String file_location; + private String file_type; + private Integer status; + private String entity_name; + private boolean isProcessed; + + private String DownloadfileName; + private String DownloadfileLocation; + + private String name; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java new file mode 100644 index 0000000..bcaea8f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/ImageUploadRepo.java @@ -0,0 +1,11 @@ +package com.realnet.template.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.template.entity.ImageUpload; + +@Repository +public interface ImageUploadRepo extends JpaRepository { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java new file mode 100644 index 0000000..7beb311 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/repository/TemplatedataRepo.java @@ -0,0 +1,19 @@ +package com.realnet.template.repository; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import com.realnet.template.entity.TemplateFileUpload; + +public interface TemplatedataRepo extends JpaRepository { + + @Query(value = "select * from template_file_upload where file_name =?1", nativeQuery = true) + TemplateFileUpload getbyFileName(String fileName); + + @Query("SELECT t FROM TemplateFileUpload t WHERE t.entity_name IS NOT NULL AND t.isProcessed = false ORDER BY t.id ASC") + List findUnprocessedRecordsOrderedByIdAsc(); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java new file mode 100644 index 0000000..08785f0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/CSVService.java @@ -0,0 +1,58 @@ +package com.realnet.template.service; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.util.List; + +import javax.persistence.EntityManager; +import javax.persistence.Query; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import com.opencsv.CSVWriter; + +@Service +public class CSVService { + + @Value("${projectPath}") + private String projectpath; + @Autowired + private EntityManager entityManager; + + public String generateCSV(String tableName) throws IOException { + // Get column names dynamically + String columnQuery = "SELECT column_name FROM information_schema.columns WHERE table_name = :tableName"; + Query query = entityManager.createNativeQuery(columnQuery); + query.setParameter("tableName", tableName); + + List columnNames = query.getResultList(); + + // Query the table data +// String dataQuery = "SELECT * FROM " + tableName; // for all record + String dataQuery = "SELECT * FROM " + tableName + " LIMIT 1"; // for only one record + + Query dataQueryExec = entityManager.createNativeQuery(dataQuery); + List resultList = dataQueryExec.getResultList(); + + // Write to CSV + String pathString = projectpath; + String filename = "file" + System.currentTimeMillis() + ".csv"; + String filePath = pathString + File.separator + filename; // Update this path as needed + try (CSVWriter writer = new CSVWriter(new FileWriter(filePath))) { + writer.writeNext(columnNames.toArray(new String[0])); + + for (Object[] row : resultList) { + String[] rowArray = new String[row.length]; + for (int i = 0; i < row.length; i++) { + rowArray[i] = row[i] != null ? row[i].toString() : ""; + } + writer.writeNext(rowArray); + } + } + + return filename; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java new file mode 100644 index 0000000..6600186 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/DynamicTemplateService.java @@ -0,0 +1,105 @@ +package com.realnet.template.service; + +import org.apache.poi.ss.usermodel.*; +import org.json.simple.JSONObject; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +@Service +public class DynamicTemplateService { + +// public List processTemplate(MultipartFile file) throws IOException { +// BufferedReader br; +// InputStream is = file.getInputStream(); +// br = new BufferedReader(new InputStreamReader(is)); +// +// Workbook workbook = WorkbookFactory.create(is); +// +// DataFormatter dataFormatter = new DataFormatter(); +// +// Sheet sheet = workbook.getSheetAt(0); +// +// int cols = sheet.getRow(0).getLastCellNum(); +// int firstRowNum = sheet.getFirstRowNum(); +// +// List keys = new ArrayList<>(); +// List jsonList = new ArrayList<>(); +// +// for (Row row : sheet) { +// if (row.getRowNum() == firstRowNum) { +// for (int i = 0; i < cols; i++) { +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// keys.add(value); +// } +// } else { +// JSONObject object = new JSONObject(); +// +// for (int i = 0; i < cols; i++) { +// String key = keys.get(i); +// String value = dataFormatter.formatCellValue(row.getCell(i)); +// object.put(key, value); +// } +// +// jsonList.add(object); +// } +// } +// +// workbook.close(); +// +// return jsonList; +// } +// String fromSheet=dh; +// String fromacolumn= + + + public List processTemplate(MultipartFile file) throws IOException { + InputStream is = file.getInputStream(); + Workbook workbook = WorkbookFactory.create(is); + Sheet sheet = workbook.getSheetAt(0); + DataFormatter dataFormatter = new DataFormatter(); + + List keys = new ArrayList<>(); + List jsonList = new ArrayList<>(); + + for (Row row : sheet) { + if (row.getRowNum() == 0) { + // Read the header row and populate the keys list + for (Cell cell : row) { + String value = dataFormatter.formatCellValue(cell); + keys.add(value); + } + } else { + // Skip the row if all cells are empty + boolean allCellsEmpty = true; + JSONObject object = new JSONObject(); + + for (int i = 0; i < keys.size(); i++) { + String key = keys.get(i); + Cell cell = row.getCell(i); + String value = dataFormatter.formatCellValue(cell); + + object.put(key, value); + + if (!value.isEmpty()) { + allCellsEmpty = false; + } + } + + if (!allCellsEmpty) { + jsonList.add(object); + } + } + } + + workbook.close(); + return jsonList; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java new file mode 100644 index 0000000..4154748 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ExcelDataService.java @@ -0,0 +1,96 @@ +//package com.realnet.excel.service; +// +//import java.io.IOException; +//import java.util.ArrayList; +//import java.util.List; +// +//import org.apache.poi.EncryptedDocumentException; +//import org.apache.poi.ss.usermodel.Cell; +//import org.apache.poi.ss.usermodel.DataFormatter; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.ss.usermodel.WorkbookFactory; +//import org.springframework.stereotype.Service; +// +//import com.realnet.excel.entity.ExcelFileUpload; +// +//@Service +//public class ExcelDataService { +// +// Workbook workbook; +// +// public List getExcelDataAsList() { +// +// List list = new ArrayList(); +// +// // Create a DataFormatter to format and get each cell's value as String +// DataFormatter dataFormatter = new DataFormatter(); +// +// // Create the Workbook +//// try { +//// workbook = WorkbookFactory.create(); +//// } catch (EncryptedDocumentException | IOException e) { +//// e.printStackTrace(); +//// } +// +// // Retrieving the number of sheets in the Workbook +// System.out.println("-------Workbook has '" + workbook.getNumberOfSheets() + "' Sheets-----"); +// +// // Getting the Sheet at index zero +// Sheet sheet = workbook.getSheetAt(0); +// +// // Getting number of columns in the Sheet +// int noOfColumns = sheet.getRow(0).getLastCellNum(); +// System.out.println("-------Sheet has '"+noOfColumns+"' columns------"); +// +// // Using for-each loop to iterate over the rows and columns +// for (Row row : sheet) { +// for (Cell cell : row) { +// String cellValue = dataFormatter.formatCellValue(cell); +// list.add(cellValue); +// } +// } +// +// // filling excel data and creating list as List +// List invList = createList(list, noOfColumns); +// +// // Closing the workbook +// try { +// workbook.close(); +// } catch (IOException e) { +// // TODO Auto-generated catch block +// e.printStackTrace(); +// } +// +// return invList; +// } +// +// private List createList(List excelData, int noOfColumns) { +// +// ArrayList invList = new ArrayList(); +// +// int i = noOfColumns; +// do { +// ExcelFileUpload inv = new ExcelFileUpload(); +// +//// inv.setName(excelData.get(i)); +//// inv.setAmount(Double.valueOf(excelData.get(i + 1))); +//// inv.setNumber(excelData.get(i + 2)); +//// inv.setReceivedDate(excelData.get(i + 3)); +// +// invList.add(inv); +// i = i + (noOfColumns); +// +// } while (i < excelData.size()); +// return invList; +// } +// +//// public int saveExcelData(List invoices) { +//// invoices = repo.saveAll(invoices); +//// return invoices.size(); +//// } +// + + +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java new file mode 100644 index 0000000..3ad9286 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/FileUploadService.java @@ -0,0 +1,115 @@ +package com.realnet.template.service; + +import java.io.File; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.nio.file.StandardCopyOption; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.core.io.ClassPathResource; +import org.springframework.core.io.Resource; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; +import org.springframework.web.multipart.MultipartFile; + + +import com.realnet.template.entity.TemplateFileUpload; +import com.realnet.template.repository.TemplatedataRepo; + +@Service +public class FileUploadService { + + @Autowired + private TemplatedataRepo repo; + + @Value("${projectPath}") + private String projectPath; + + public String uploadFile(MultipartFile file, Long user_id, String file_type, String name) { + try { + + String filepath = "import-data"; + + String file_name = file.getOriginalFilename(); + String substring = file_name.substring(0, file_name.lastIndexOf(".")); + + String str = substring + System.currentTimeMillis(); + +// String location =System.getProperty("user.dir")+filepath; + String location = projectPath + File.separator + filepath; + File dir2 = new File(location); + if (!dir2.exists()) { + dir2.mkdir(); + } + + String file_name2 = file.getOriginalFilename(); + + File staticdir2 = new File(location + "/incomingfile"); + if (!staticdir2.exists()) { + staticdir2.mkdir(); + } + String getpath2 = staticdir2.getAbsolutePath(); + System.out.println(getpath2); + + Path copyLocation2 = Paths.get(staticdir2 + File.separator + StringUtils.cleanPath(file_name2)); + + Files.copy(file.getInputStream(), copyLocation2, StandardCopyOption.REPLACE_EXISTING); + + File staticdir = new File(location + "/processingfile"); + if (!staticdir.exists()) { + staticdir.mkdir(); + } + String getpath = staticdir.getAbsolutePath(); + System.out.println(getpath); + + Path copyLocation = Paths.get(staticdir + File.separator + StringUtils.cleanPath(str + ".xlsx")); + + Files.copy(file.getInputStream(), copyLocation, StandardCopyOption.REPLACE_EXISTING); + + TemplateFileUpload exceldata = new TemplateFileUpload(); + exceldata.setFile_location(location); + + exceldata.setFile_name(file.getOriginalFilename()); + exceldata.setFile_changed_name(str); + // exceldata.setFile_type(file_type); + exceldata.setEntity_name(file_type); + exceldata.setName(name); + exceldata.setUser_id(user_id); + repo.save(exceldata); + + System.out.println("-----------------------saving data----------------"); + return location; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException("Could not store file " + file.getOriginalFilename() + ". Please try again!"); + } + + } + + + + + + public TemplateFileUpload getTemplatebyid(Long Id) { + TemplateFileUpload one = repo.getOne(Id); + return one; + + } + + public void deleteTemplateFileUploadById(Long id) { + // Check if the entity with the given ID exists + if (repo.existsById(id)) { + repo.deleteById(id); + } + } + + + + public TemplateFileUpload getFileById(Long id) { + // Use your JPA repository to retrieve the file by its ID + return repo.findById(id).orElse(null); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java new file mode 100644 index 0000000..d984e50 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/template/service/ImageUploadService.java @@ -0,0 +1,41 @@ +package com.realnet.template.service; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.template.entity.ImageUpload; +import com.realnet.template.repository.ImageUploadRepo; + +@Service +public class ImageUploadService { + + @Autowired + private ImageUploadRepo Repository; + + public ImageUpload Savedata(ImageUpload data) { + return Repository.save(data); + } + + public List getdetails() { + return (List) Repository.findAll(); + } + + public ImageUpload getdetailsbyId(Long id) { + return Repository.findById(id).get(); + } + + public void delete_by_id(Long id) { + Repository.deleteById(id); + } + + public ImageUpload update(ImageUpload data, Long id) { + ImageUpload old = Repository.findById(id).get(); + // old.setTransactionDate(data.getTransactionDate()); +// old.setTransactionAmount(data.isTransactionAmount()); + final ImageUpload test = Repository.save(old); + return test; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java new file mode 100644 index 0000000..0000a61 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/CompanyDto.java @@ -0,0 +1,15 @@ +package com.realnet.userDTO; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class CompanyDto implements Serializable { + private static final long serialVersionUID = 1L; + private String userEmail; // for load the user who is responsible + private String companyName; + private String workspace; + private String gstNumber; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java new file mode 100644 index 0000000..5ea7e2d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Email.java @@ -0,0 +1,94 @@ +package com.realnet.userDTO; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class Email extends Rn_Who_Columns { + + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String email1; + private String email2; + private String email3; + private String email4; + + private Long id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + +// private String password; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "ACCOUNT_ID") +// @JsonBackReference +// private Sys_Accounts sys_account; + + //public String getPassword() { +// return password; +// } +// public void setPassword(String password) { +// this.password = password; +// } + // public Sys_Accounts getSys_account() { +// return sys_account; +// } +// public void setSys_account(Sys_Accounts sys_account) { +// this.sys_account = sys_account; +// } + public Long getUserId() { + return userId; + } + + public void setUserId(Long userId) { + this.userId = userId; + } + + public String getEmail1() { + return email1; + } + + public void setEmail1(String email1) { + this.email1 = email1; + } + + public String getEmail2() { + return email2; + } + + public void setEmail2(String email2) { + this.email2 = email2; + } + + public String getEmail3() { + return email3; + } + + public void setEmail3(String email3) { + this.email3 = email3; + } + + public String getEmail4() { + return email4; + } + + public void setEmail4(String email4) { + this.email4 = email4; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java new file mode 100644 index 0000000..240a638 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/EmailRequest.java @@ -0,0 +1,8 @@ +package com.realnet.userDTO; + +import lombok.Data; + +@Data +public class EmailRequest { + private String email; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java new file mode 100644 index 0000000..ce469c0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Login.java @@ -0,0 +1,13 @@ +package com.realnet.userDTO; + + +import lombok.Data; + +@Data +public class Login { + + private String username = ""; + + private String password = ""; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java new file mode 100644 index 0000000..094cf50 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/LoginUser.java @@ -0,0 +1,37 @@ +package com.realnet.userDTO; + +public class LoginUser { + + //private String username; + private String email; + private String password; + + /* + * public String getUsername() { return username; } + * + * public void setUsername(String username) { this.username = username; } + */ + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +// @Override +// public String toString() { +// return "LoginUser [email=" + email + ", password=" + password + "]"; +// } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java new file mode 100644 index 0000000..f0033cd --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/PasswordResetRequest.java @@ -0,0 +1,9 @@ +package com.realnet.userDTO; + +import lombok.Data; + +@Data +public class PasswordResetRequest { + private String oldPassword; + private String newPassword; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java new file mode 100644 index 0000000..1e9b1b1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Provider.java @@ -0,0 +1,5 @@ +package com.realnet.userDTO; + +public enum Provider { + LOCAL, GOOGLE +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java new file mode 100644 index 0000000..0c97887 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_AccId_Column.java @@ -0,0 +1,76 @@ +package com.realnet.userDTO; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_AccId_Column implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + + @Column(name = "UPDATED_BY") + private Long updatedBy; + + @Column(name = "ACCOUNT_ID") + private Long accountId; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } + + public Long getAccountId() { + return accountId; + } + + public void setAccountId(Long accountId) { + this.accountId = accountId; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java new file mode 100644 index 0000000..98cec7c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Rn_Who_Columns.java @@ -0,0 +1,60 @@ +package com.realnet.userDTO; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import javax.persistence.*; +import java.io.Serializable; +import java.util.Date; + +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class Rn_Who_Columns implements Serializable { + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + private Date createdAt; + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + private Date updatedAt; + @Column(name = "CREATED_BY", updatable = false) + private Long createdBy; + @Column(name = "UPDATED_BY") + private Long updatedBy; + + public Date getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(Date createdAt) { + this.createdAt = createdAt; + } + + public Date getUpdatedAt() { + return updatedAt; + } + + public void setUpdatedAt(Date updatedAt) { + this.updatedAt = updatedAt; + } + + public Long getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(Long createdBy) { + this.createdBy = createdBy; + } + + public Long getUpdatedBy() { + return updatedBy; + } + + public void setUpdatedBy(Long updatedBy) { + this.updatedBy = updatedBy; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java new file mode 100644 index 0000000..c3740f7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Role.java @@ -0,0 +1,59 @@ +package com.realnet.userDTO; + +import java.util.Set; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@AllArgsConstructor +@NoArgsConstructor +@Getter +@Setter +public class Role { + private Long id; + + private String name; + + private String description; + + private Set users; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public Set getUsers() { + return users; + } + + public void setUsers(Set users) { + this.users = users; + } + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java new file mode 100644 index 0000000..aaac0fe --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/RoleUpdateDto.java @@ -0,0 +1,36 @@ +package com.realnet.userDTO; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +public class RoleUpdateDto { + + private Long userId; + + private String[] roles; + + public Long getUserId() { + return userId; + } + + public RoleUpdateDto setUserId(Long userId) { + this.userId = userId; + return this; + } + + public String[] getRoles() { + return roles; + } + + public RoleUpdateDto setRoles(String[] roles) { + this.roles = roles; + return this; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java new file mode 100644 index 0000000..c0e9989 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/Sys_Accounts.java @@ -0,0 +1,23 @@ +package com.realnet.userDTO; + +import java.util.List; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(exclude="users") +@EqualsAndHashCode(callSuper=false) +public class Sys_Accounts { + private Long id; + + private String companyName; + + private String workspace; + + private String gstNumber; + + private List users; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java new file mode 100644 index 0000000..91b1fa5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/User.java @@ -0,0 +1,98 @@ +package com.realnet.userDTO; + +import java.util.Set; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +//@Data +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString(exclude = "sys_account") +@EqualsAndHashCode(callSuper = false) +public class User extends Rn_Who_Columns { // implements Comparable + /** + * + */ + private static final long serialVersionUID = 1L; + + + private Long userId; + + private String firstName; + + private String lastName; + + private String fullName; + + private String email; + + private String username; + + private String password; + + // added = 7.12.20 + private int menu_group_id; + + private String status; // for invitation + + private String department; + + private String about; + private String photos; + + private String role; + + // private String company; + + private int securityProviderId; + + private int defaultCustomerId; + + private String phone; + + private String address1; + + private String address2; + private String country; + + private String postal; + + private boolean enabled; + private boolean isBlocked; + private String secretQuestion; + private String secretAnswer; + private boolean enableBetaTesting; + private boolean enableRenewal; + private String pancard; + + private String working; + + private String managing_work; + + private Long checknumber; + + private Provider provider; + + private Set roles; + + + private Sys_Accounts sys_account; + + +// public void setChecknumber(long nextLong) { +// this.checknumber=nextLong; +// +// } + +// @Column(name = "Accounts_id") +// private int account_id; + + +} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java new file mode 100644 index 0000000..3b0a0fc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserDto.java @@ -0,0 +1,26 @@ +package com.realnet.userDTO; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import lombok.Data; + +import java.io.Serializable; +import java.util.Set; + +@Data +public class UserDto implements Serializable { + private static final long serialVersionUID = 1L; +// private String username; +// private String password; + private String firstName; + private String lastName; + private String password; + private String email; + private String fullName; + private String department; + private int menuGroupId; + @JsonIgnore + private String phone; + @JsonIgnore + private Set roles; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java new file mode 100644 index 0000000..8f64f14 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userDTO/UserProfileDTO.java @@ -0,0 +1,21 @@ +package com.realnet.userDTO; + +import lombok.Data; + +import java.io.Serializable; + +@Data +public class UserProfileDTO implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String fullName; + private String pronounce; + private String role; + private String department; + private String about; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java new file mode 100644 index 0000000..6c3eed5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/controller/UserListController.java @@ -0,0 +1,175 @@ +package com.realnet.userlist.controller; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.List; +import java.util.Optional; +import java.util.zip.DataFormatException; +import java.util.zip.Deflater; +import java.util.zip.Inflater; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.http.ResponseEntity.BodyBuilder; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.userlist.entity.UserImage; +import com.realnet.userlist.entity.UserList; +import com.realnet.userlist.repository.UserImageRepository; +import com.realnet.userlist.service.UserListService; + +import io.swagger.annotations.Api; + +@RestController +@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600) +//@CrossOrigin("*") +@RequestMapping(value = "/user_list", produces=org.springframework.http.MediaType.APPLICATION_JSON_VALUE) +@Api(tags = {"/user_list"}) +public class UserListController { + + @Autowired + private UserImageRepository userImageRepository; + + @Autowired + private UserListService userListService; + + @PostMapping("/create") + public ResponseEntity add(@RequestBody UserList user){ + UserList addToDb = this.userListService.addToDb(user); + return ResponseEntity.ok(addToDb); + } + + @PutMapping("/update") + public ResponseEntity update(@RequestBody UserList user){ + UserList updateToDb = this.userListService.updateToDb(user); + return ResponseEntity.ok(updateToDb); + } + + @GetMapping("/get-one/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id){ + UserList oneById = this.userListService.getOneById(id); + return ResponseEntity.ok(oneById); + } + + @GetMapping("/get-all") + public List getAll(){ + List allFromDb = this.userListService.getAllFromDb(); + return allFromDb; + } + + @DeleteMapping("/delete/{id}") + public void delete(@PathVariable("id") Long id) { + System.out.println("Request came to delete API.."); + + // parsing Long value into String and then call get image by user's id API. + String rawId = String.valueOf(id); + Optional findByUser = this.userImageRepository.findByUser(rawId); + + // delete users image before deleting user. + this.userImageRepository.deleteById(findByUser.get().getId()); + + // delete user after deleting profile image. + this.userListService.deleteFromDbById(id); + } + + @PostMapping("/upload") + public BodyBuilder uplaodImage(@RequestParam("imageFile") MultipartFile file, + @RequestParam("user_id") Long user_id) throws IOException { + + System.out.println("Original Image Byte Size - " + file.getBytes().length); + UserImage file1 = new UserImage(file.getOriginalFilename(), file.getContentType(), + compressBytes(file.getBytes())); + + file1.setFilename(file.getOriginalFilename()); + file1.setType(file.getContentType()); + file1.setUser_id(String.valueOf(user_id)); + + this.userImageRepository.save(file1); + return ResponseEntity.status(HttpStatus.OK); + } + + @GetMapping("/get/{user}") + public UserImage getImage(@PathVariable("user") Integer user_id) throws Exception { + + System.out.println("Id of User is: " + user_id); + String rawId = String.valueOf(user_id); + + Optional retrievedImage = null; + try { + retrievedImage = userImageRepository.findByUser(rawId); + } catch (Exception e) { + System.out.println("No image found for this user"); + } + +// if(retrievedImage == null) { +// throw new Exception("No image found for this user"); +// } + UserImage img = new UserImage(retrievedImage.get().getFilename(), retrievedImage.get().getType(), + decompressBytes(retrievedImage.get().getPicByte())); + return img; + } + +// @GetMapping("/get/{imageName}") +// public UserImage getImage(@PathVariable("imageName") String imageName) throws IOException { +// +// System.out.println("Name of file is: " + imageName); +// +// final Optional retrievedImage = userImageRepository.findByFilename(imageName); +// UserImage img = new UserImage(retrievedImage.get().getFilename(), retrievedImage.get().getType(), +// decompressBytes(retrievedImage.get().getPicByte())); +// return img; +// } +// + // compress the image bytes before storing it in the database + public static byte[] compressBytes(byte[] data) { + Deflater deflater = new Deflater(); + deflater.setInput(data); + deflater.finish(); + + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length); + byte[] buffer = new byte[1024]; + while (!deflater.finished()) { + int count = deflater.deflate(buffer); + outputStream.write(buffer, 0, count); + } + try { + outputStream.close(); + } catch (IOException e) { + } + System.out.println("Compressed Image Byte Size - " + outputStream.toByteArray().length); + + return outputStream.toByteArray(); + } + + // uncompress the image bytes before returning it to the angular application + public static byte[] decompressBytes(byte[] data) { + Inflater inflater = new Inflater(); + inflater.setInput(data); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(data.length); + byte[] buffer = new byte[1024]; + try { + while (!inflater.finished()) { + int count = inflater.inflate(buffer); + outputStream.write(buffer, 0, count); + } + outputStream.close(); + } catch (IOException ioe) { + } catch (DataFormatException e) { + } + return outputStream.toByteArray(); + } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java new file mode 100644 index 0000000..acc7000 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserImage.java @@ -0,0 +1,89 @@ +package com.realnet.userlist.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +@Entity +@Table(name = "user_image") +public class UserImage { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + private String filename; + private String type; + private String user; + + @Column(name = "picByte", length = 5000) + private byte[] picByte; + +// @ManyToOne(fetch = FetchType.EAGER) +// private UserList userlist; + + public UserImage() { + + } + + public UserImage(String name, String type, byte[] picByte) { + this.filename = name; + this.type = type; + this.picByte = picByte; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getFilename() { + return filename; + } + + public void setFilename(String filename) { + this.filename = filename; + } + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public String getUser_id() { + return user; + } + + public void setUser_id(String user_id) { + this.user = user_id; + } + + public byte[] getPicByte() { + return picByte; + } + + public void setPicByte(byte[] picByte) { + this.picByte = picByte; + } + +// public UserList getUserlist() { +// return userlist; +// } +// +// public void setUserlist(UserList userlist) { +// this.userlist = userlist; +// } + +// + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java new file mode 100644 index 0000000..1771acf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/entity/UserList.java @@ -0,0 +1,411 @@ +package com.realnet.userlist.entity; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +@Entity +@Table(name = "user_list") +public class UserList { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String user_id; + private String name; + private String gender; + private String dob; + private String email; + private String username; + private String password; + private String firstname; + private String lastname; + private String security_provider_id; + private String default_customer_id; + private String company; + private String phone; + private String address1; + private String address2; + private String country; + private String postal; + private String role; + private String other_roles; + private boolean is_active; + private boolean is_blocked; + private String secret_question; + private String secret_answer; + private boolean enable_beta_testing; + private boolean enable_renewal; + private String created_at; + private String created_by; + private String updated_at; + private String updated_by; + private String about; + private String department; + private String fullname; + private String photos; + private String status; + private String account_id; + private String checknumber; + private String managing_work; + private String pancard; + private String working; + private int menu_group; + +// @OneToMany(mappedBy = "userlist", cascade = CascadeType.ALL, fetch = FetchType.LAZY) +// @JsonIgnore +// private List img = new ArrayList<>(); + + public UserList() {} + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + + public int getMenu_group() { + return menu_group; + } + + public void setMenu_group(int menu_group) { + this.menu_group = menu_group; + } + + public String getUser_id() { + return user_id; + } + + public void setUser_id(String user_id) { + this.user_id = user_id; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getDob() { + return dob; + } + + public void setDob(String dob) { + this.dob = dob; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getUsername() { + return username; + } + + public void setUsername(String username) { + this.username = username; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + + public String getFirstname() { + return firstname; + } + + public void setFirstname(String firstname) { + this.firstname = firstname; + } + + public String getLastname() { + return lastname; + } + + public void setLastname(String lastname) { + this.lastname = lastname; + } + + public String getSecurity_provider_id() { + return security_provider_id; + } + + public void setSecurity_provider_id(String security_provider_id) { + this.security_provider_id = security_provider_id; + } + + public String getDefault_customer_id() { + return default_customer_id; + } + + public void setDefault_customer_id(String default_customer_id) { + this.default_customer_id = default_customer_id; + } + + public String getCompany() { + return company; + } + + public void setCompany(String company) { + this.company = company; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getAddress1() { + return address1; + } + + public void setAddress1(String address1) { + this.address1 = address1; + } + + public String getAddress2() { + return address2; + } + + public void setAddress2(String address2) { + this.address2 = address2; + } + + public String getCountry() { + return country; + } + + public void setCountry(String country) { + this.country = country; + } + + public String getPostal() { + return postal; + } + + public void setPostal(String postal) { + this.postal = postal; + } + + public String getRole() { + return role; + } + + public void setRole(String role) { + this.role = role; + } + + public String getOther_roles() { + return other_roles; + } + + public void setOther_roles(String other_roles) { + this.other_roles = other_roles; + } + + public boolean isIs_active() { + return is_active; + } + + public void setIs_active(boolean is_active) { + this.is_active = is_active; + } + + public boolean isIs_blocked() { + return is_blocked; + } + + public void setIs_blocked(boolean is_blocked) { + this.is_blocked = is_blocked; + } + + public String getSecret_question() { + return secret_question; + } + + public void setSecret_question(String secret_question) { + this.secret_question = secret_question; + } + + public String getSecret_answer() { + return secret_answer; + } + + public void setSecret_answer(String secret_answer) { + this.secret_answer = secret_answer; + } + + public boolean isEnable_beta_testing() { + return enable_beta_testing; + } + + public void setEnable_beta_testing(boolean enable_beta_testing) { + this.enable_beta_testing = enable_beta_testing; + } + + public boolean isEnable_renewal() { + return enable_renewal; + } + + public void setEnable_renewal(boolean enable_renewal) { + this.enable_renewal = enable_renewal; + } + + public String getCreated_at() { + return created_at; + } + + public void setCreated_at(String created_at) { + this.created_at = created_at; + } + + public String getCreated_by() { + return created_by; + } + + public void setCreated_by(String created_by) { + this.created_by = created_by; + } + + public String getUpdated_at() { + return updated_at; + } + + public void setUpdated_at(String updated_at) { + this.updated_at = updated_at; + } + + public String getUpdated_by() { + return updated_by; + } + + public void setUpdated_by(String updated_by) { + this.updated_by = updated_by; + } + + public String getAbout() { + return about; + } + + public void setAbout(String about) { + this.about = about; + } + + public String getDepartment() { + return department; + } + + public void setDepartment(String department) { + this.department = department; + } + + public String getFullname() { + return fullname; + } + + public void setFullname(String fullname) { + this.fullname = fullname; + } + + public String getPhotos() { + return photos; + } + + public void setPhotos(String photos) { + this.photos = photos; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } + + public String getAccount_id() { + return account_id; + } + + public void setAccount_id(String account_id) { + this.account_id = account_id; + } + + public String getChecknumber() { + return checknumber; + } + + public void setChecknumber(String checknumber) { + this.checknumber = checknumber; + } + + public String getManaging_work() { + return managing_work; + } + + public void setManaging_work(String managing_work) { + this.managing_work = managing_work; + } + + public String getPancard() { + return pancard; + } + + public void setPancard(String pancard) { + this.pancard = pancard; + } + + public String getWorking() { + return working; + } + + public void setWorking(String working) { + this.working = working; + } + +// public List getImg() { +// return img; +// } +// +// public void setImg(List img) { +// this.img = img; +// } + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java new file mode 100644 index 0000000..7f89bf5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserImageRepository.java @@ -0,0 +1,17 @@ +package com.realnet.userlist.repository; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.userlist.entity.UserImage; + +public interface UserImageRepository extends JpaRepository { + + Optional findByid(String user_id); + + Optional findByFilename(String filename); + + Optional findByUser(String user); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java new file mode 100644 index 0000000..cc876a5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/repository/UserListRepository.java @@ -0,0 +1,9 @@ +package com.realnet.userlist.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.userlist.entity.UserList; + +public interface UserListRepository extends JpaRepository { + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java new file mode 100644 index 0000000..dd4cdb7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/UserListService.java @@ -0,0 +1,20 @@ +package com.realnet.userlist.service; + +import java.util.List; + +import com.realnet.userlist.entity.UserList; + + +public interface UserListService { + + public UserList addToDb(UserList userList); + + public UserList updateToDb(UserList userList); + + public UserList getOneById(Long id); + + public List getAllFromDb(); + + public void deleteFromDbById(Long id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java new file mode 100644 index 0000000..0c61f13 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/userlist/service/impl/UserListServiceImpl.java @@ -0,0 +1,49 @@ +package com.realnet.userlist.service.impl; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.userlist.entity.UserList; +import com.realnet.userlist.repository.UserListRepository; +import com.realnet.userlist.service.UserListService; + +@Service +public class UserListServiceImpl implements UserListService { + + @Autowired + private UserListRepository userListRepository; + + @Override + public UserList addToDb(UserList userList) { + UserList save = this.userListRepository.save(userList); + return save; + } + + @Override + public UserList updateToDb(UserList userList) { + UserList save = this.userListRepository.save(userList); + return save; + } + + @Override + public UserList getOneById(Long id) { + Optional findById = this.userListRepository.findById(id); + return findById.get(); + } + + @Override + public List getAllFromDb() { + List findAll = this.userListRepository.findAll(); + return findAll; + } + + @Override + public void deleteFromDbById(Long id) { + this.userListRepository.deleteById(id); + System.out.println("Deletion success..."); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java new file mode 100644 index 0000000..5b9b023 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/RoleController.java @@ -0,0 +1,138 @@ +package com.realnet.users.controller; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity.Role; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.service.RoleService; +import com.realnet.users.service1.AppUserService; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api") // , produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "Role Assignment" }) +public class RoleController { + + @Autowired(required=false) + private AppUserService userService; + + @Autowired + private RoleService roleService; + + @Autowired + private RoleRepo roleRepo; + + // GET profile details + @ApiOperation(value = "Gets All Roles", response = Role.class) + @GetMapping("/roles") + public ResponseEntity getAllRoles(@RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { + //Pageable paging = PageRequest.of(page, size, Sort.by("created_at").descending()); + //Page result = roleService.getAll(paging); + List roles = roleService.getRoles(); + return ResponseEntity.ok().body(roles); + } + + // GET USER BY ID ADDED BY ADMIN + @ApiOperation(value = "Get Roles Id", response = Role.class) + @GetMapping("/roles/{id}") + public ResponseEntity getRolesById(@PathVariable(value = "id") Long id) { + Role role = roleService.getRoleById(id); + return ResponseEntity.ok().body(role); + } + + /* ========WORKING CODE ======= */ + // add or remove a Role on a user + @GetMapping("org-users/{id}/add-roles/{roleId}") + public ResponseEntity addRole(@PathVariable("id") Long id, @PathVariable("roleId") Long roleId) { + roleService.addRole(id, roleId); + Map res = new HashMap(); + res.put("message", "Role Added Succcessfully"); + return ResponseEntity.ok(res); + } + + @GetMapping("org-users/{id}/remove-roles/{roleId}") + public ResponseEntity removeRole(@PathVariable("id") Long id, @PathVariable("roleId") Long roleId) { + roleService.removeRole(id, roleId); + Map res = new HashMap(); + res.put("message", "Role removed Succcessfully"); + return ResponseEntity.ok(res); + } + +// ADD NEW ROLE + @PostMapping("/roles") + public ResponseEntity add(@RequestBody Role role) { + Role save = roleRepo.save(role); + + return ResponseEntity.ok(save); + } + + // =================================== + +// @ApiOperation(value = "Assign roles to an user", response = ServiceResponse.class) +// @ApiResponses(value = { +// @ApiResponse(code = 200, message = "Roles successfully assigned to user!"), //response = UserResponse.class), +// @ApiResponse(code = 401, message = Constants.UNAUTHORIZED_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 403, message = Constants.FORBIDDEN_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 422, message = Constants.INVALID_DATA_MESSAGE) //, response = InvalidDataResponse.class), +// }) +// @PreAuthorize("hasRole('ROLE_ADMIN')") +// @PutMapping("/assign") +// public ResponseEntity assignRoles(@Valid @RequestBody RoleUpdateDto roleUpdateDto) { +// User user = userService.getById(roleUpdateDto.getUserId()); +// +// Arrays.stream(roleUpdateDto.getRoles()).forEach(role -> { +// Role roleObject = roleRepo.findByName(role); +// //if (roleObject != null && !user.hasRole(role)) { +// user.addRole(roleObject); +// } +// }); +// +// userService.update(user); +// +// return ResponseEntity.ok().body(user); +// } +// +// @ApiOperation(value = "Assign roles to an user", response = ServiceResponse.class) +// @ApiResponses(value = { +// @ApiResponse(code = 200, message = "Roles successfully assigned to user!"), // response = UserResponse.class), +// @ApiResponse(code = 401, message = Constants.UNAUTHORIZED_MESSAGE), // response = BadRequestResponse.class), +// @ApiResponse(code = 403, message = Constants.FORBIDDEN_MESSAGE), //response = BadRequestResponse.class), +// @ApiResponse(code = 422, message = Constants.INVALID_DATA_MESSAGE)//, response = InvalidDataResponse.class), +// }) +// @PreAuthorize("hasRole('ROLE_ADMIN')") +// @PutMapping("/revoke") +// public ResponseEntity revokeRoles(@Valid @RequestBody RoleUpdateDto roleUpdateDto) { +// User user = userService.findById(roleUpdateDto.getUserId()); +// +// Arrays.stream(roleUpdateDto.getRoles()).forEach(role -> { +// Role roleObject = roleService.findByName(role); +// +// if (roleObject != null && user.hasRole(role)) { +// user.removeRole(roleObject); +// } +// }); +// +// userService.update(user); +// +// return ResponseEntity.ok().body(user); +// } +//} + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java new file mode 100644 index 0000000..d000651 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller/UserController.java @@ -0,0 +1,448 @@ +package com.realnet.users.controller; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Base64; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.apache.commons.io.FilenameUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import com.realnet.config.EmailService; +import com.realnet.fnd.service.FileStorageService; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.passwordTokenRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@RestController +@RequestMapping(value = "/api") // , produces = MediaType.APPLICATION_JSON_VALUE) +@Api(tags = { "User Mnagement" }) +public class UserController { + + @Autowired + private AppUserServiceImpl userService; + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + private passwordTokenRepository passwordTokenRepository; + + @Autowired + private FileStorageService fileStorageService; + + private EmailService emailService; + + @Autowired + public UserController(AppUserServiceImpl appUserServiceImpl, EmailService emailService) { + super(); + this.emailService = emailService; + } + + @Value("${projectPath}") + private String projectPath; + + // GET profile details (ADMIN, USER BOTH, WHO IS LOGGED IN) + @ApiOperation(value = "Gets current user information", response = AppUser.class) + @GetMapping("/user-profile") + public ResponseEntity getUserProfile() { + AppUser user = userService.getLoggedInUser(); + return ResponseEntity.ok().body(user); + } + + // UPDATE (ADMIN, USER BOTH, WHO IS LOGGED IN) +// @ApiOperation(value = "Update current user information", response = User.class) +// @PutMapping("/user-profile") +// public ResponseEntity updateUserProfile(@Valid @RequestBody UserProfileDTO userRequest) { +// String loggedInUserEmail = userService.getLoggedInUserEmail(); +// AppUser user = userService.updateAppUserDto(userRequest); +// return new ResponseEntity<>(user, HttpStatus.ACCEPTED); +// } + + // UPLOAD IMAGE + @PostMapping("/upload") + public ResponseEntity uploadProfilePic(@RequestParam("imageFile") MultipartFile file) throws IOException { + AppUser user = userService.getLoggedInUser(); + // String userId = Long.toString(user.getUserId()); + String userId = String.valueOf(user.getUserId()); + System.out.println("USER ID = " + userId); + // String uploadPath = + // projectPath.concat("/src/main/resources/uploaded-picture/" + userId + "/"); + String uploadPath = projectPath.concat("/src/main/resources/uploaded-picture/"); + System.out.println("UPLOAD PATH = " + uploadPath); + + fileStorageService.uploadProfilePicture(file, uploadPath); + + String fileName = file.getOriginalFilename(); + // String head = fileName.substring(0, fileName.indexOf(".")); + String ext = fileName.substring(fileName.lastIndexOf(".")); + String fileNewName = "profile-pic-" + userId + ext; + + System.out.println( + "UPLOAD PATH = " + uploadPath + "\nFILE NAME = " + fileNewName + "\nFile Size = " + file.getSize()); + user.setPhotoName(fileNewName); + boolean success = userService.insertOrSaveUser(user); + Map res = new HashMap(); + if (success) { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.OK); + } else { + res.put("success", success); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + + // GET IMAGE + @GetMapping("/retrieve-image") + public ResponseEntity getProfilePic() { + AppUser user = userService.getLoggedInUser(); + String imageName = user.getPhotoName(); + String imagePath = System.getProperty("java.io.tmpdir") + System.getProperty("file.separator") + imageName; + File file = new File(imagePath); + Map res = new HashMap(); + + String encodeBase64 = null; + try { + String ext = FilenameUtils.getExtension(file.getName()); + FileInputStream fis = new FileInputStream(file); + // byte[] media = IOUtils.toByteArray(fis); + byte[] bytes = new byte[(int) file.length()]; + fis.read(bytes); + encodeBase64 = Base64.getEncoder().encodeToString(bytes); + String data = "data:/image/" + ext + ";base64," + encodeBase64; + fis.close(); + res.put("image", data); + return new ResponseEntity<>(res, HttpStatus.OK); + } catch (IOException e) { + log.debug("File Not Found Exception Handled: {}", e.getMessage()); + res.put("image", "Not Found"); + return new ResponseEntity<>(res, HttpStatus.NOT_FOUND); + } + } + + // ====================USER ACCOUNT DETAILS================ + // ########## NEED MOD ########## + // GET ADMIN profile details (admin accounts) + @ApiOperation(value = "Get User Account Details", response = Sys_Accounts.class) + @GetMapping("/user-account") + public ResponseEntity getUserAccountDetails() { + AppUser user = userService.getLoggedInUser(); + Sys_Accounts sys_account = user.getAccount(); + System.out.println("Company Details : " + sys_account); + return ResponseEntity.ok().body(sys_account); + } + + // =========== reset password ============= + @ApiOperation(value = "Reset Password", response = PasswordResetRequest.class) + @PostMapping("/reset-password") + public ResponseEntity resetPassword(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + AppUser reset = userService.resetPassword(passwordResetReq.getUserId(), passwordResetReq.getHash(), + passwordResetReq.getNewPassword()); + System.out.println("resetPassword() Controller : RESET ? " + reset); + Map res = new HashMap(); + if (reset != null) { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.ACCEPTED); + } else { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } +// new Reset password +// by Gaurav + + @ApiOperation(value = "Reset Password", response = PasswordResetRequest.class) + @PostMapping("/reset_password") + public ResponseEntity resetPasswordnew(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + AppUser reset = userService.resetPasswordnew(passwordResetReq); + System.out.println("resetPassword() Controller : RESET ? " + reset); + Map res = new HashMap(); + if (reset != null) { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.ACCEPTED); + } else { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + + @ApiOperation(value = "Forgot password", response = PasswordResetRequest.class) + @PostMapping("/forgot_password") + public ResponseEntity forgotpassword(@Valid @RequestBody PasswordResetRequest passwordResetReq) { + AppUser reset = userService.forgotpassword(passwordResetReq); + System.out.println("resetPassword() Controller : RESET ? " + reset); + Map res = new HashMap(); + if (reset != null) { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.ACCEPTED); + } else { + res.put("reset", reset); + return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); + } + } + +// Reset password by email sending + @PostMapping("/resources/forgotpassword") + public ResponseEntity resetPassword(HttpServletRequest request, @RequestParam("email") String email) { + AppUser user = userService.findUserByEmail(email); + if (user == null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " not found")); + } else { + String token = UUID.randomUUID().toString(); + userService.createPasswordResetTokenForUser(user, token); + + String em = user.getEmail(); + String subject = "Pass reset"; + String url = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.FRONTEND_PORT_9191 + + "/#/forgotresetpassword/" + token; + // String url = "http://surecns.ml:30165/#/forgotresetpassword/" + token; +// String url = "http://localhost:9191/api" + "/resources/savePassword/" + token; + emailService.constructEmail(em, subject, url); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + + } + + // get email save link + @PostMapping("/resources/savePassword/{token}") + public ResponseEntity savePassword(@PathVariable String token, + @Valid @RequestBody PasswordResetRequest passwordResetReq) { + + PasswordResetToken resetToken = passwordTokenRepository.findByToken(token); + if (resetToken == null) { + return ResponseEntity.badRequest().body(new MessageResponse("Token expire")); + } + +// AppUser a = appUserRepository.findById(resetToken.getUser().getUserId()).orElse(null); + AppUser a = appUserRepository.findByEmail(resetToken.getUser().getEmail()); + + if (a != null) { + + if (passwordResetReq.getNewPassword().equals(passwordResetReq.getConfirmPassword())) { + + a.setUserPassw(bcryptEncoder.encode(passwordResetReq.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(passwordResetReq.getNewPassword()); + + appUserRepository.save(a); + passwordTokenRepository.delete(resetToken); + return new ResponseEntity<>(a, HttpStatus.OK); + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + return ResponseEntity.badRequest().body(new MessageResponse("user not found")); + } + +// String result = userService.validatePasswordResetToken(token); +// +// +// if(result != null) { +// return null; +// } +// AppUser reset = userService.forgotpassword(passwordResetReq); +// System.out.println("resetPassword() Controller : RESET ? " + reset); +// Map res = new HashMap(); +// if (reset!=null) { +// res.put("reset", reset); +// return new ResponseEntity<>(res, HttpStatus.ACCEPTED); +// } else { +// res.put("reset", reset); +// return new ResponseEntity<>(res, HttpStatus.BAD_REQUEST); +// } + +// } + +// AppUser user = userService.getUserByPasswordResetToken(token); +// +// +//// AppUser user = userService.getUserByPasswordResetToken(passwordDto.getToken()); +// if(user != null) { +// userService.changeUserPassword(user, passwordDto.getNewPassword()); +// +// } +// +// return new ResponseEntity<>(user,HttpStatus.OK); +// } + + @GetMapping("/get-one/{userId}") + public ResponseEntity getOne(@PathVariable("userId") Long userId) { + AppUser byId = this.userService.getById(userId).orElse(null); + return ResponseEntity.ok(byId); + } + // ############=== NEED MODIFICATION ========###### + + // GET profile details (user ADDED BY ADMIN) +// @ApiOperation(value = "Get Company User Details", response = User.class) +// @GetMapping("/org-users") +// public ResponseEntity getUsersByAccount(@RequestParam(value = "page", defaultValue = "0", required = false) Integer page, +// @RequestParam(value = "size", defaultValue = "20", required = false) Integer size) { +// AppUser adminUser = userService.getLoggedInUser(); +// // Sys_Accounts Sys_Account = adminUser.getCompany(); +// Sys_Accounts sys_account = adminUser.getSys_account(); +//// Long account_id = Sys_Account.getId(); +// +//// List users = userService.getUsersByAccountId(account_id); +// // OR +//// Sys_Accounts company = companyService.getById(account_id); +//// List users = company.getUsers(); +// System.out.println("Company Details : " + sys_account); +// Long accId = adminUser.getSys_account().getId(); +// Pageable paging = PageRequest.of(page, size, Sort.by("created_at").descending()); +// +// // invited user list will show here +// List invitedUsers = userRepo.findByAccountIdAndStatus(accId, UserConstant.STATUS_INVITED, paging); +// +// +// return ResponseEntity.ok().body(invitedUsers); +// } + + // GET USER BY ID (ADDED BY ADMIN) +// @ApiOperation(value = "Get Company User By Id", response = User.class) +// @GetMapping("/org-users/{id}") +// public ResponseEntity getUserById(@PathVariable(value = "id") Long id) { +// User user = userService.getById(id); +// if (user == null) { +// throw new ResourceNotFoundException("User Not Found ::" + id); +// } +// return ResponseEntity.ok().body(user); +// } + + // SAVE A USER BY ADMIN +// @ApiOperation(value = "Add A New Company User", response = User.class) +// @PostMapping("/org-users") +// public ResponseEntity createUser(@Valid @RequestBody User userReq) throws MessagingException, IOException { +// +// // admin will invite and create user with default value +// User user = userService.createUserByAdmin(userReq); +// +// // ====EMAIL CODE==== +// User admin = userService.getLoggedInUser(); +// String from = admin.getEmail(); // from is not working +// String to = userReq.getEmail(); +// String subject = "Invitation To Collaborate"; +// String text = "Dear " + userReq.getFirstName() + ",
" + "You have an Invitation from " +// + admin.getFullName() + ". Please Follow the steps below.
" +// + "1. Log on to https://localhost:4200/login
" +// + "2. Log on to the system with the following User Name and Password.
" +// + "3. User Name : " + userReq.getEmail() + " Password : " + userReq.getPassword() + "
" +// + "4. Change the existing system generated password and coninue."; +//// try { +//// //emailService.sendSimpleMessage(from, to, subject, text); +//// } catch (MailException mailException) { +//// System.out.println(mailException); +//// } +// emailService.sendEmailWithAttachment(to, subject, text); +// +// return ResponseEntity.status(HttpStatus.CREATED).body(user); +// } + + // UPDATE USER ADDED BY ADMIN +// @ApiOperation(value = "Update A Company User", response = User.class) +// @PutMapping("/org-users/{id}") +// public ResponseEntity updateUser(@PathVariable(value = "id") Long id, @Valid @RequestBody User user) { +// User updatedUser = userService.updateById(id, user); +// return ResponseEntity.status(HttpStatus.ACCEPTED).body(updatedUser); +// } + + // DELETE USER ADDED BY ADMIN +// @DeleteMapping("/org-users/{id}") +// public ResponseEntity> deleteUser(@PathVariable(value = "id") Long id) { +// boolean deleted = userService.deleteById(id); +// Map response = new HashMap<>(); +// response.put("deleted", Boolean.TRUE); +// // response.put("deleted", deleted); +// return ResponseEntity.status(HttpStatus.OK).body(response); +// } +// // ==== access by admin done + +// @ApiOperation(value = "Gets current user information", response = UserResponse.class) +// @RequestMapping(value = "/user", method = RequestMethod.GET, produces = {"application/json"}) +// public UserResponse getUserInformation(@RequestParam(value = "name", required = false) String userIdParam, HttpServletRequest req) { +// +// String loggedInUserName = userService.getLoggedInUserName(); +// +// User user; +// boolean provideUserDetails = false; +// +// if (Strings.isNullOrEmpty(userIdParam)) { +// provideUserDetails = true; +// user = userService.getLoggedInUser(); +// } +// else if (loggedInUserName.equals(userIdParam)) { +// provideUserDetails = true; +// user = userService.getLoggedInUser(); +// } +// else { +// //Check if the current user is superuser then provide the details of requested user +// provideUserDetails = true; +// user = userService.getUserInfoByUserId(userIdParam); +// } +// +// UserResponse resp = new UserResponse(); +// if (provideUserDetails) { +// resp.setOperationStatus(ResponseStatusEnum.SUCCESS); +// } +// else { +// resp.setOperationStatus(ResponseStatusEnum.NO_ACCESS); +// resp.setOperationMessage("No Access"); +// } +// resp.setData(user); +// return resp; +// } +// +// +// +// // @Secured({"ROLE_ADMIN", "ROLE_USER"}) +// @PreAuthorize("hasRole('ADMIN')") +// @RequestMapping(value = "/users", method = RequestMethod.GET) +// public List listUser() { +// return userService.getAll(); +// } +// +// // @Secured("ROLE_USER") +// // @PreAuthorize("hasRole('USER')") +// // @PreAuthorize("hasAnyRole('USER', 'ADMIN')") +// // @PreAuthorize("hasRole('ADMIN') && hasRole('USER')") +// @PreAuthorize("hasRole('USER')") +// @RequestMapping(value = "/users/{id}", method = RequestMethod.GET) +// public User getOne(@PathVariable(value = "id") Long id) { +// return userService.getById(id); +// } + /* + * @RequestMapping(value = "/signup", method = RequestMethod.POST) public User + * saveUser(@RequestBody UserDto user) { return userService.save(user); } + */ +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java new file mode 100644 index 0000000..74dc750 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserController.java @@ -0,0 +1,336 @@ +package com.realnet.users.controller1; + +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.UUID; + +import javax.servlet.http.HttpServletRequest; +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.PageRequest; +import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +import com.fasterxml.jackson.core.JsonProcessingException; +import com.realnet.config.EmailService; +import com.realnet.userDTO.User; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserDto; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.entity1.Registration; +import com.realnet.users.entity1.SignUp; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.response.MessageResponse; +import com.realnet.users.service1.AppUserServiceImpl; +import com.realnet.utils.Port_Constant; + +import io.swagger.annotations.ApiOperation; + +@RestController +@RequestMapping(value = "/api") +public class AppUserController { + + @Autowired + private AppUserServiceImpl userService; + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + @Autowired + private AppUserRepository appUserRepository; + + @Autowired + private RoleRepo roleRepo; + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + private AppUserServiceImpl appUserServiceImpl; + + @Autowired + private EmailService emailService; + + @Autowired + public AppUserController(AppUserServiceImpl appUserServiceImpl, EmailService emailService) { + super(); + this.appUserServiceImpl = appUserServiceImpl; + this.emailService = emailService; + } + +// get all active users + @GetMapping("/getAllAppUser") + public ResponseEntity getAllUsers( + @RequestParam(value = "page", defaultValue = "0", required = false) Integer page, + @RequestParam(value = "size", defaultValue = "1000", required = false) Integer size) { + Pageable p = PageRequest.of(page, size); + List u = appUserServiceImpl.getAllAppUsers(p); + return new ResponseEntity<>(u, HttpStatus.OK); + } + +// get all users including inactive + @GetMapping("/all-users") + public List getAll() { + System.out.println("Request came to API.."); + List usersAll = this.userService.getAllUsers(); + return usersAll; + } + + @GetMapping("/getOneAppUser/{id}") + public ResponseEntity getOneAppUser(@PathVariable("id") Long id) { + Optional a = appUserServiceImpl.getOneUser(id); + if (a.get() != null) { + return new ResponseEntity<>(a.get(), HttpStatus.OK); + } + return new ResponseEntity<>("User not found", HttpStatus.OK); + } + + @PostMapping("/addOneAppUser") + public ResponseEntity addOneUser(@RequestBody Registration reg) { + if (appUserRepository.findByEmail(reg.getEmail()) != null) { + return ResponseEntity.badRequest().body(new MessageResponse("email already exist")); + } + AppUser a = appUserServiceImpl.addOneUser(reg); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @GetMapping("/test") + public void test() { + System.out.println("Aaa"); + } + + @PostMapping("/addOneAppUserCustom") + public ResponseEntity addOneUserCustom(@RequestBody User appUser) { + System.out.println("aaaaa"); + System.out.println(appUser); + AppUser a = appUserServiceImpl.addOneUserCustom(appUser); + System.out.println(a); + return new ResponseEntity<>(HttpStatus.OK); + } + + @PutMapping("/updateAppUser") + public ResponseEntity updateOneUser(@RequestBody AppUser appUser) { + AppUser a = appUserServiceImpl.updateOneUser(appUser); + return new ResponseEntity<>(a, HttpStatus.OK); + } + +// update app user + @PutMapping("/updateAppUserDto/{userId}") + public ResponseEntity updateAppUser(@PathVariable Long userId, @RequestBody AppUserDto appUserDto) { + AppUser a = appUserServiceImpl.updateAppUserDto(userId, appUserDto); + if (a != null) { + return new ResponseEntity<>(a, HttpStatus.OK); + } + return new ResponseEntity<>("No user found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/resetPasswordEmail/{userId}") + public ResponseEntity sendEmailForResetPassword(@PathVariable("userId") Long userId) { + AppUser a = appUserServiceImpl.getUserInfoByUserId(userId); + // random string + String hash = appUserServiceImpl.generateRandomHash(8); + if (a != null) { + String email = a.getEmail(); + String subject = "Pass reset"; + String link = "http://" + hash + "/" + String.valueOf(a.getUserId()); + emailService.sendSimpleMessage(null, email, subject, link); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + return new ResponseEntity<>("User not found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/resetPassword/{userId}/{hash}") + public ResponseEntity resetPassword(@PathVariable("userId") Long userId, @PathVariable("hash") String hash, + @RequestBody PasswordResetRequest passwordResetRequest) { + + AppUser a = appUserServiceImpl.resetPassword(userId, hash, passwordResetRequest.getNewPassword()); + if (a != null) { + return new ResponseEntity<>("Password Reset Successfull", HttpStatus.OK); + } + return new ResponseEntity<>("Password Not changed", HttpStatus.BAD_REQUEST); + } + + @GetMapping("/token/getchatuser_byid/{id}") + public ResponseEntity getChatUserById(@PathVariable Long id) { + AppUser u = appUserRepository.findByUserId(id); + return new ResponseEntity<>(u, HttpStatus.OK); + } + + @DeleteMapping("/delete_usr/{user_id}") + public ResponseEntity deleteusr(@PathVariable Long user_id) { + Optional r = appUserRepository.findById(user_id); + r.get().setActive(false); + AppUser save = appUserRepository.save(r.get()); + + return new ResponseEntity<>(save, HttpStatus.OK); + + } + + // By Gk + // ADD USER VIA ADMIN + @ApiOperation(value = "Add user Via Admin") + @PostMapping("/userviaadmin") + public ResponseEntity userviaadmin(HttpServletRequest request, @RequestParam("email") String email) + throws JsonProcessingException { + AppUser loggedInUser = userService.getLoggedInUser(); + String fullName = loggedInUser.getFullName(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + + AppUser user = userService.findUserByEmail(email); + if (user != null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } else { + String token = UUID.randomUUID().toString(); + AppUser appUser = new AppUser(); + userService.adduserviaadmin(appUser, token, email, account_id); + + String subject = "add user"; + + String url = Port_Constant.FRONTEND_PORTAL_DOMAIN + "/#/adduser/" + token; + // String url = "http://localhost:4200/#/adduser/" +token; + // String url = "http://surecns.ml:30165/#/adduser/" +token; +// String url = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.BACKEND_PORT_9191 + "/api" +// + "/admin/adduser/" + token; + + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + + } + + // get email make user VIA ADMIN + @PostMapping("/admin/adduser/{token}") + public ResponseEntity saveuser(@PathVariable String token, @Valid @RequestBody SignUp signUp) { + + AppUser a = appUserRepository.findByToken(token); + + if (a != null) { + + if (signUp.getPassword().equals(signUp.getConfirm_password())) { + + a.setFullName(signUp.getFirst_name() + " " + signUp.getLast_name()); + a.setMob_no(signUp.getMob_no()); + a.setUserPassw(bcryptEncoder.encode(signUp.getPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(signUp.getPassword()); + a.setIsComplete(true); + a.setActive(true); + + long r = 42; + AppUserRole grp = appUserRoleRepository.findById(r).orElse(null); + a.setUsrGrp(grp); +// Set strRoles = a.getRoles(); + Set roles = new HashSet<>(); + +// if (strRoles == null) { + String role1 = "ROLE_Developer"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + a.setRoles(roles); +// } + a.setRandom_no(null); + AppUser save = appUserRepository.save(a); + return new ResponseEntity<>(save, HttpStatus.CREATED); + + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + + return ResponseEntity.ok().body(new MessageResponse("registration already done")); + } + + // By Gk + // ADD GUEST VIA ADMIN + @ApiOperation(value = "Add user Via Admin") + @PostMapping("/guest_via_admin") + public ResponseEntity guestviaadmin(HttpServletRequest request, @RequestParam("email") String email) + throws JsonProcessingException { + + AppUser loggedInUser = userService.getLoggedInUser(); + String fullName = loggedInUser.getFullName(); + Long account_id = loggedInUser.getAccount().getAccount_id(); + if (email.contains(" ")) { + // Replace whitespace with '+' + email = email.replace(" ", "+"); + } + + AppUser user = userService.findUserByEmail(email); + if (user != null) { + return ResponseEntity.badRequest().body(new MessageResponse(email + " already exist")); + } else { + String token = UUID.randomUUID().toString(); + AppUser appUser = new AppUser(); + userService.addguestviaadmin(appUser, token, email, account_id); + +// String subject = "add guest"; + String url = Port_Constant.FRONTEND_PORTAL_DOMAIN + "/#/addguest/" + token; + + // String url = "http://localhost:4200/#/addguest/" +token; + // String url = "http://surecns.ml:30165/#/addguest/" +token; +// String url = "http://" + Port_Constant.LOCAL_HOST + ":" + Port_Constant.BACKEND_PORT_9191 + "/api" +// + "/admin/addguest/" + token; + + String subject = "Guest Registration.."; + emailService.sendEmail(email, subject, url); + return new ResponseEntity<>("Email sent success", HttpStatus.OK); + } + + } + + // get email ADD GUEST VIA ADMIN + @PostMapping("/admin/addguest/{token}") + public ResponseEntity saveguest(@PathVariable String token, @Valid @RequestBody SignUp signUp) { + + AppUser a = appUserRepository.findByToken(token); + + if (a != null) { + + if (signUp.getPassword().equals(signUp.getConfirm_password())) { + + a.setFullName(signUp.getFirst_name() + " " + signUp.getLast_name()); + a.setMob_no(signUp.getMob_no()); + a.setUserPassw(bcryptEncoder.encode(signUp.getPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(signUp.getPassword()); + a.setIsComplete(true); + a.setActive(true); + long r = 45; + AppUserRole grp = appUserRoleRepository.findById(r).orElse(null); + a.setUsrGrp(grp); +// Set strRoles = a.getRoles(); + Set roles = new HashSet<>(); + +// if (strRoles == null) { + String role1 = "ROLE_GUEST"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + a.setRoles(roles); +// } + a.setRandom_no(null); + AppUser save = appUserRepository.save(a); + return new ResponseEntity<>(save, HttpStatus.CREATED); + + } + return ResponseEntity.badRequest().body(new MessageResponse("password and confirm password not match")); + } + + return ResponseEntity.ok().body(new MessageResponse("registration already done")); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java new file mode 100644 index 0000000..34b1be5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppUserGrpController.java @@ -0,0 +1,88 @@ +package com.realnet.users.controller1; + +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.service1.AppUserRoleServiceImpl; + +@RestController +@RequestMapping(value = "/api") +public class AppUserGrpController { + private AppUserRoleServiceImpl appUserRoleServiceImpl; + + @Autowired + private AppUserRoleRepository appUserRoleRepository; + + + @Autowired + public AppUserGrpController(AppUserRoleServiceImpl appUserRoleServiceImpl) { + super(); + this.appUserRoleServiceImpl = appUserRoleServiceImpl; + } + + @GetMapping("/getAllUsrGrp") + public ResponseEntity getAll() { + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + List l = appUserRoleServiceImpl.getAll(); + for (AppUserRole o : l) { + if (o.getCreatedate() != null) { + o.setCreateDateFormated(simple.format(o.getCreatedate())); + } + if (o.getUpdatedate() != null) { + o.setUpdateDateFormated(simple.format(o.getUpdatedate())); + } + } + return new ResponseEntity<>(l, HttpStatus.OK); + } + + @GetMapping("/getOneUsrGrp/{id}") + public ResponseEntity getOne(@PathVariable("id") Long id) { + DateFormat simple = new SimpleDateFormat("dd MMM yyyy HH:mm:ss"); + Optional r = appUserRoleServiceImpl.getOne(id); + if (r.get() != null) { + if (r.get().getCreatedate() != null) { + r.get().setCreateDateFormated(simple.format(r.get().getCreatedate())); + } + if (r.get().getUpdatedate() != null) { + r.get().setUpdateDateFormated(simple.format(r.get().getUpdatedate())); + } + return new ResponseEntity<>(r.get(), HttpStatus.OK); + } + return new ResponseEntity<>("not found", HttpStatus.BAD_REQUEST); + } + + @PostMapping("/addOneUsrGrp") + public ResponseEntity addOne(@RequestBody AppUserRole appUserRole) { + AppUserRole a = appUserRoleServiceImpl.addOne(appUserRole); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @PostMapping("/updateOneUsrGrp") + public ResponseEntity updateOne(@RequestBody AppUserRole appUserRole) { + AppUserRole a = appUserRoleServiceImpl.addOne(appUserRole); + return new ResponseEntity<>(a, HttpStatus.OK); + } + + @DeleteMapping("/delete_usrgrp/{id}") + public ResponseEntity deleteusrgroup(@PathVariable("id") Long id) { + AppUserRole r = appUserRoleServiceImpl.getOne(id).get(); + appUserRoleRepository.delete(r); + + return new ResponseEntity<>("deleted", HttpStatus.OK); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java new file mode 100644 index 0000000..5481a2c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/AppuserSessionController.java @@ -0,0 +1,61 @@ +package com.realnet.users.controller1; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.fnd.entity.Error; +import com.realnet.fnd.entity.ErrorPojo; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.repository1.AppUserSessionsRepository; +import com.realnet.utils.Constant; + +@RestController +@RequestMapping(value = "/user1/session") // , produces = MediaType.APPLICATION_JSON_VALUE) +public class AppuserSessionController { + + @Value("${projectPath}") + private String projectPath; + + @Autowired + private AppUserSessionsRepository sessionsRepository; + + + + //get all app user session + @GetMapping("/getAll") + public ResponseEntity getAllLog() { + List l = sessionsRepository.findAll(); + return new ResponseEntity<>(l, HttpStatus.OK); + } + + //delete session by userid + @DeleteMapping("/delete/{userId}") + public ResponseEntity getOne(@PathVariable("userId") AppUser userId) { + List a = sessionsRepository.findByUserId(userId); + + for (AppUserSessions appUserSessions : a) { + sessionsRepository.delete(appUserSessions); + } + + if (a != null) { + return new ResponseEntity<>("deleted", HttpStatus.OK); + } + return new ResponseEntity<>("Not Found", HttpStatus.BAD_REQUEST); + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java new file mode 100644 index 0000000..619bb5f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/PositonAndDepartmentController.java @@ -0,0 +1,53 @@ +package com.realnet.users.controller1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.service1.PositionAndDepartmentServiceImpl; + +@RestController +@RequestMapping(value = "/api") +public class PositonAndDepartmentController { + private PositionAndDepartmentServiceImpl positionAndDepartmentServiceImpl; + @Autowired + public PositonAndDepartmentController(PositionAndDepartmentServiceImpl positionAndDepartmentServiceImpl) { + super(); + this.positionAndDepartmentServiceImpl = positionAndDepartmentServiceImpl; + } + @GetMapping("/getAllDepartments") + public ResponseEntity getAll(){ + List l = positionAndDepartmentServiceImpl.getAll(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getDepartment/{id}") + public ResponseEntity getOne(@PathVariable("id") String id){ + Optional o = positionAndDepartmentServiceImpl.getOne(id); + if(o.get()!=null) { + return new ResponseEntity<>(o.get(),HttpStatus.OK); + } + return new ResponseEntity<>("Department not found",HttpStatus.BAD_REQUEST); + } + @GetMapping("/getAllPositions") + public ResponseEntity getAllPosition(){ + List l = positionAndDepartmentServiceImpl.getAllPosition(); + return new ResponseEntity<>(l,HttpStatus.OK); + } + @GetMapping("/getPosition/{id}") + public ResponseEntity getOnePosition(@PathVariable("id") String id){ + Optional o = positionAndDepartmentServiceImpl.getOnePosition(id); + if(o.get()!=null) { + return new ResponseEntity<>(o.get(),HttpStatus.OK); + } + return new ResponseEntity<>("Position not found",HttpStatus.BAD_REQUEST); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java new file mode 100644 index 0000000..f66106f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/SysAccountController.java @@ -0,0 +1,66 @@ +package com.realnet.users.controller1; + +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.repository.AboutWorkRepo; +import com.realnet.users.repository.SysAccountRepo; + +@RequestMapping("/token/users/sysaccount") +@RestController +public class SysAccountController { + + @Autowired + private SysAccountRepo sysAccountRepo; + + @Autowired + private AboutWorkRepo aboutWorkRepo; + + @PostMapping("/savesysaccount") + public Sys_Accounts save(@RequestBody Sys_Accounts sys_Accounts) { + Sys_Accounts save = sysAccountRepo.save(sys_Accounts); + + System.out.println("created account data is .." + save); + return save; + } + + @PostMapping("/addaccountcusto") + public AboutWork addaccountcusto(@RequestBody AboutWork aWork) { + + System.out.println("Here"); + AboutWork work = new AboutWork(); + work.setCompanyname(aWork.getCompanyname()); + work.setEmail(aWork.getEmail()); + work.setManaging_work(aWork.getManaging_work()); + work.setMobile(aWork.getMobile()); + work.setName(aWork.getName()); + work.setPancard(aWork.getPancard()); + work.setPassword(aWork.getPassword()); + work.setWorking(aWork.getWorking()); + + AboutWork save = aboutWorkRepo.save(work); + return save; + } + + @GetMapping("/sysaccount") + public List getall() { + + List getall = sysAccountRepo.findAll(); + return getall; + } + + @DeleteMapping("/deleteaccount") + public void deleteaccount() { + aboutWorkRepo.deleteAll(); + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java new file mode 100644 index 0000000..e8d0bb4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/controller1/WorkSpaceController1.java @@ -0,0 +1,137 @@ +//package com.realnet.users.controller1; +// +//import java.util.List; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.http.HttpStatus; +//import org.springframework.http.ResponseEntity; +//import org.springframework.web.bind.annotation.DeleteMapping; +//import org.springframework.web.bind.annotation.GetMapping; +//import org.springframework.web.bind.annotation.PathVariable; +//import org.springframework.web.bind.annotation.PostMapping; +//import org.springframework.web.bind.annotation.RequestBody; +//import org.springframework.web.bind.annotation.RequestMapping; +//import org.springframework.web.bind.annotation.RestController; +// +//import com.realnet.Workspaceuser.Entity.Sec_team_members; +//import com.realnet.Workspaceuser.Entity.Sec_teams; +//import com.realnet.Workspaceuser.Repository.SecWorkspaceUserRepo; +//import com.realnet.Workspaceuser.Repository.Sec_team_MemberRepository; +//import com.realnet.Workspaceuser.Repository.Sec_teams_Repository; +//import com.realnet.users.entity1.AppUser; +//import com.realnet.users.repository1.AppUserRepository; +//import com.realnet.users.response.MessageResponse; +//import com.realnet.users.service1.AppUserServiceImpl; +// +//@RestController +//@RequestMapping("/User_workSpace") +//public class WorkSpaceController1 { +// @Autowired +// private AppUserServiceImpl userService; +// +// @Autowired +// private AppUserRepository appUserRepository; +// @Autowired +// private Sec_teams_Repository sec_teams_Repository; +// +// @Autowired +// private Sec_team_MemberRepository memberRepository; +// +// @Autowired +// private SecWorkspaceUserRepo secWorkspaceUserRepo; +// +// //GET ALL USER attach from login id +// @GetMapping("/GetAll") +// public ResponseEntity getall(){ +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long account_id = loggedInUser.getAccount().getAccount_id(); +// +// List li = appUserRepository.getall(account_id); +// return new ResponseEntity<>(li,HttpStatus.OK); +// } +// +// //ADD USER TO SPECIFIC TEAM +// @PostMapping("/add_team/{id}/{userId}") +// public ResponseEntity addteam(@RequestBody Sec_team_members team_mem, +// @PathVariable int id,@PathVariable Long userId){ +// Sec_team_members members = memberRepository.findteammember(id,userId); +// if(members == null) { +// +// Sec_teams team = sec_teams_Repository.findById(id); +// if(team != null) { +// +// AppUser user = appUserRepository.findById(userId).orElseThrow(null); +// +// team_mem.setTeam_id(team.getId()); +// team_mem.setMember_name(user.getFullName()); +// team_mem.setMember_id(user.getUserId()); +// Sec_team_members save = memberRepository.save(team_mem); +// +// +// return new ResponseEntity<>(save, HttpStatus.OK); +// +// } +// else +// return ResponseEntity.badRequest().body(new MessageResponse("team not found")); +// } +// else +// return ResponseEntity.badRequest().body(new MessageResponse("member already added")); +// } +// +// //REMOVE MEMBER FROM TEAM +// @DeleteMapping("/RemoveMember/{id}/{userId}") +// public MessageResponse removemember(@PathVariable int id,@PathVariable Long userId){ +// Sec_team_members members = memberRepository.findteammember(id,userId); +// if(members != null) { +// memberRepository.delete(members); +// return new MessageResponse("deleted"); +// }else +// +// return new MessageResponse("member not found"); +// } +// +// +// //GET ALL USER ADD BY ADMIN +// @GetMapping("/GetAllUser") +// public ResponseEntity GetUser(){ +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long account_id = loggedInUser.getAccount().getAccount_id(); +// +// List li = appUserRepository.getalluser(account_id); +// return new ResponseEntity<>(li,HttpStatus.OK); +// } +// +// //GET ALL GUEST ADD BY ADMIN +// @GetMapping("/GetAllGuest") +// public ResponseEntity Getguest(){ +// AppUser loggedInUser = userService.getLoggedInUser(); +// Long account_id = loggedInUser.getAccount().getAccount_id(); +// +// List li = appUserRepository.getallguest(account_id); +// return new ResponseEntity<>(li,HttpStatus.OK); +// } +// +// //GET ALL TEAM MEMBER FROM SPECIFIC TEAM +// @GetMapping("/GetAllMember/{team_id}") +// public ResponseEntity GetAllteamMember(@PathVariable int team_id){ +// +// +// List li = memberRepository.getallteam(team_id); +// if(li == null) { +// return ResponseEntity.badRequest().body(new MessageResponse("team not found")); +// }else +// return new ResponseEntity<>(li,HttpStatus.OK); +// } +// +// +// +// +// +// +// +// +// +// +// +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java new file mode 100644 index 0000000..4fccdc4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CompanyDto.java @@ -0,0 +1,15 @@ +package com.realnet.users.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class CompanyDto implements Serializable { + private static final long serialVersionUID = 1L; + private String userEmail; // for load the user who is responsible + private String companyName; + private String workspace; + private String gstNumber; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java new file mode 100644 index 0000000..49c56a7 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/CustomUserDetails.java @@ -0,0 +1,77 @@ +//package com.realnet.users.entity; +// +//import java.util.Collection; +//import java.util.HashSet; +//import java.util.Set; +// +//import org.springframework.security.core.GrantedAuthority; +//import org.springframework.security.core.authority.SimpleGrantedAuthority; +//import org.springframework.security.core.userdetails.UserDetails; +// +//import com.fasterxml.jackson.annotation.JsonIgnore; +//import com.realnet.users.entity1.AppUser; +// +//import lombok.ToString; +// +//@ToString +//public class CustomUserDetails implements UserDetails { +// private static final long serialVersionUID = 3163073361116831556L; +// +// private AppUser user; +//// public User getUser() { +//// return user; +//// } +//// public void setUser(User user) { +//// this.user = user; +//// } +// +// public CustomUserDetails(AppUser user) { +// super(); +// this.user = user; +// } +// +// @Override +// public Collection getAuthorities() { +// Set authorities = new HashSet<>(); +// user.getRoles().forEach(role -> { +// authorities.add(new SimpleGrantedAuthority("ROLE_" + role.getName())); +// }); +// return authorities; +// } +// +// @Override +// public String getPassword() { +// return user.getPassword(); +// } +// +// @Override +// public String getUsername() { +// //return user.getUsername(); +// return user.getEmail(); +// } +// +// @JsonIgnore +// @Override +// public boolean isAccountNonExpired() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isAccountNonLocked() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isCredentialsNonExpired() { +// return true; +// } +// +// @JsonIgnore +// @Override +// public boolean isEnabled() { +// return true; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java new file mode 100644 index 0000000..5d7cacf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/ERole.java @@ -0,0 +1,14 @@ +package com.realnet.users.entity; + +public enum ERole { + ROLE_USER, + ROLE_ADMIN, + ROLE_REVIEWER, + ROLE_COLLABORATOR, + ROLE_ProjectManager, + ROLE_Scum_master, + ROLE_Developer, + ROLE_Tester, + ROLE_DevOps + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java new file mode 100644 index 0000000..78d46b5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Email.java @@ -0,0 +1,89 @@ +package com.realnet.users.entity; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.fnd.entity.Rn_Who_Columns; + +import lombok.Data; + + +@Entity +public class Email extends Rn_Who_Columns { + + @Id + @Column(name = "user_id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long userId; + private String email1; + private String email2; + private String email3; + private String email4; + + private Long id; + public Long getId() { + return id; + } + public void setId(Long id) { + this.id = id; + } + +// private String password; + +// @ManyToOne(fetch = FetchType.LAZY) +// @JoinColumn(name = "ACCOUNT_ID") +// @JsonBackReference +// private Sys_Accounts sys_account; + +//public String getPassword() { +// return password; +// } +// public void setPassword(String password) { +// this.password = password; +// } + // public Sys_Accounts getSys_account() { +// return sys_account; +// } +// public void setSys_account(Sys_Accounts sys_account) { +// this.sys_account = sys_account; +// } + public Long getUserId() { + return userId; + } + public void setUserId(Long userId) { + this.userId = userId; + } + public String getEmail1() { + return email1; + } + public void setEmail1(String email1) { + this.email1 = email1; + } + public String getEmail2() { + return email2; + } + public void setEmail2(String email2) { + this.email2 = email2; + } + public String getEmail3() { + return email3; + } + public void setEmail3(String email3) { + this.email3 = email3; + } + public String getEmail4() { + return email4; + } + public void setEmail4(String email4) { + this.email4 = email4; + } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java new file mode 100644 index 0000000..fb55795 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/EmailRequest.java @@ -0,0 +1,8 @@ +package com.realnet.users.entity; + +import lombok.Data; + +@Data +public class EmailRequest { + private String email; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java new file mode 100644 index 0000000..f58d128 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/GenericResponse.java @@ -0,0 +1,20 @@ +package com.realnet.users.entity; + +public class GenericResponse { + private String message; + private String error; + + + + public GenericResponse(String message) { + super(); + this.message = message; + } + + public GenericResponse(String message, String error) { + super(); + this.message = message; + this.error = error; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java new file mode 100644 index 0000000..e306b9f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Login.java @@ -0,0 +1,15 @@ +package com.realnet.users.entity; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +public class Login { + + @ApiModelProperty(example = "demo", required = true) + private String username = ""; + + @ApiModelProperty(example = "demo", required = true) + private String password = ""; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java new file mode 100644 index 0000000..6b4e45b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/LoginUser.java @@ -0,0 +1,37 @@ +package com.realnet.users.entity; + +public class LoginUser { + + //private String username; + private String email; + private String password; + + /* + * public String getUsername() { return username; } + * + * public void setUsername(String username) { this.username = username; } + */ + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + } + +// @Override +// public String toString() { +// return "LoginUser [email=" + email + ", password=" + password + "]"; +// } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java new file mode 100644 index 0000000..6dfaf3b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetRequest.java @@ -0,0 +1,16 @@ +package com.realnet.users.entity; + +import lombok.Data; + +@Data +public class PasswordResetRequest { + + private Long userId; + private String email; + + private String oldPassword; + private String newPassword; + private String token; + private String hash; + private String confirmPassword; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java new file mode 100644 index 0000000..2092a2f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/PasswordResetToken.java @@ -0,0 +1,52 @@ +package com.realnet.users.entity; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToOne; + +import com.realnet.users.entity1.AppUser; + +import lombok.Data; +@Data +@Entity +public class PasswordResetToken { + + private static final int EXPIRATION = 60 * 24; + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String token; + + @OneToOne(targetEntity = AppUser.class, fetch = FetchType.EAGER) +// @JoinColumn(nullable = false, name = "user_id") + private AppUser user; + + private Date expiryDate; + + public PasswordResetToken( AppUser user,String token) { + super(); + this.token = token; + this.user = user; + } + public PasswordResetToken( String token) { + super(); + this.token = token; +// this.user = user; + } + + public PasswordResetToken() { + super(); + // TODO Auto-generated constructor stub + } + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java new file mode 100644 index 0000000..013d6b4 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Role.java @@ -0,0 +1,98 @@ +package com.realnet.users.entity; + +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.ManyToMany; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.realnet.users.entity1.AppUser; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Data +@Entity +public class Role { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column + private String name; + + @Column + private String description; + +// @JsonBackReference +// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "roles", cascade = { CascadeType.PERSIST, CascadeType.DETACH, +// CascadeType.MERGE, CascadeType.REFRESH }) +// private Set users; + + @JsonBackReference + @ManyToMany(fetch = FetchType.EAGER, mappedBy = "roles", cascade = { CascadeType.PERSIST, CascadeType.DETACH, + CascadeType.MERGE, CascadeType.REFRESH }) + private Set appusers; + + +// public Long getId() { +// return id; +// } +// +// public void setId(Long id) { +// this.id = id; +// } +// +// public String getName() { +// return name; +// } +// +// public void setName(String name) { +// this.name = name; +// } +// +// public String getDescription() { +// return description; +// } +// +// public void setDescription(String description) { +// this.description = description; +// } +// +// public Set getUsers() { +// return users; +// } +// +// public void setUsers(Set users) { +// this.users = users; +// } +// +// public Role(Long id, String name, String description, Set users) { +// super(); +// this.id = id; +// this.name = name; +// this.description = description; +// this.users = users; +// } + + public Role() { + + // TODO Auto-generated constructor stub + } + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java new file mode 100644 index 0000000..c5b5152 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/RoleUpdateDto.java @@ -0,0 +1,36 @@ +package com.realnet.users.entity; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; + +import io.swagger.annotations.ApiModelProperty; + +public class RoleUpdateDto { + + @ApiModelProperty(notes = "User identifier", required = true) + @NotBlank(message = "The userId is required") + private Long userId; + + @ApiModelProperty(notes = "Array of roles to give to an user", required = true) + @NotEmpty(message = "The field must have at least one item") + private String[] roles; + + public Long getUserId() { + return userId; + } + + public RoleUpdateDto setUserId(Long userId) { + this.userId = userId; + return this; + } + + public String[] getRoles() { + return roles; + } + + public RoleUpdateDto setRoles(String[] roles) { + this.roles = roles; + return this; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java new file mode 100644 index 0000000..6c34eda --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/Sys_Accounts.java @@ -0,0 +1,53 @@ +package com.realnet.users.entity; + +import java.util.List; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonManagedReference; +import com.realnet.users.entity1.AppUser; + +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +@Data +@ToString(exclude="users") +@EqualsAndHashCode(callSuper=false) +@Entity +@Table(name = "sys_accounts") +public class Sys_Accounts { + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long account_id; + + @Column(name = "company_name") + private String companyName; + + @Column(name = "workspace") + private String workspace; + + @Column(name = "gst_no") + private String gstNumber; + + private String mobile; + private String email; + + private String pancard; + private String working; + + + @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY) + @JsonManagedReference + private List users; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java new file mode 100644 index 0000000..a677c12 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserDto.java @@ -0,0 +1,27 @@ +package com.realnet.users.entity; + +import java.io.Serializable; +import java.util.Set; + +import com.fasterxml.jackson.annotation.JsonIgnore; + +import lombok.Data; + +@Data +public class UserDto implements Serializable { + private static final long serialVersionUID = 1L; +// private String username; +// private String password; + private String firstName; + private String lastName; + private String password; + private String email; + private String fullName; + private String department; + private int menuGroupId; + @JsonIgnore + private String phone; + @JsonIgnore + private Set roles; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java new file mode 100644 index 0000000..6d26cc8 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity/UserProfileDTO.java @@ -0,0 +1,21 @@ +package com.realnet.users.entity; + +import java.io.Serializable; + +import lombok.Data; + +@Data +public class UserProfileDTO implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + + private String fullName; + private String pronounce; + private String role; + private String department; + private String about; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java new file mode 100644 index 0000000..eda9287 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser.java @@ -0,0 +1,165 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.sql.Blob; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.Set; + +import javax.persistence.CascadeType; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.FetchType; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.ManyToOne; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; + +import com.fasterxml.jackson.annotation.JsonBackReference; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name = "SEC_USERS") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUser implements Serializable { + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @Column(name = "user_id") + @GeneratedValue(generator = "SecUsers_gen") + @SequenceGenerator(name = "SecUsers_gen", sequenceName = "sec_users_sequencs", initialValue = 10007300, allocationSize = 1) + private Long userId; + + @Column(name = "user_name", unique = true) + private String username; + + private String userPassw; + private String title; + private String shortName; + private String fullName; + private Date expiryDate; + private String daysMth; + private Long noDaysMth; + private String status; + private String changePassw; + + private String createby; + +// @Temporal(TemporalType.TIMESTAMP) + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @Column(name = "createdate", nullable = false, updatable = false) + @CreatedDate + private LocalDateTime createdate; + + private String updateby; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + @Temporal(TemporalType.TIMESTAMP) + @LastModifiedDate + private Date updatedate; + + @ManyToOne + @JoinColumn(name = "usr_grp") + private AppUserRole usrGrp; + + private String langCode; + + private String firstLogin; + + @ManyToOne + @JoinColumn(name = "position_code") + private AppUserPosition positionCode; + + @ManyToOne + @JoinColumn(name = "department_code") + private AppUserDepartment departmentCode; + + @JsonBackReference + @ManyToOne + private Sys_Accounts Account; + + private String email; + private String notification; + private Long customerId; + private String password1; + private String password2; + private String password3; + private String password4; + private Long pwdChangedCnt; + private Date lastPwdChangedDate; + private Blob photo; + private String photoName; + + private String provider; + private String country; + private String depString; + private boolean isBlocked; + private String about; + private Long checknumber; + private String working; + private String accesstype; +// private Integer access_duration; +// +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "dd-mm-yyyy") +// private Date access_till_date; + + private String random_no; + private Long mob_no; + + private boolean IsComplete; + + private boolean active; + + @Transient + private String customerNumer; + @Transient + private String positionCodeString; + @Transient + private String departmentCodeString; + + // @Transient + private Long usrGrpId; + @Transient + private String confirmPassword; + @Transient + private String usrGrpName; + @Transient + private StringBuilder totalLogInfo; + + @Transient + @JsonIgnore + private PasswordResetToken pass; + + @ManyToMany(targetEntity = Role.class, fetch = FetchType.EAGER, cascade = { CascadeType.PERSIST, CascadeType.DETACH, + CascadeType.ALL, CascadeType.REFRESH }) + @JoinTable(name = "SECUSER_ROLES", joinColumns = { @JoinColumn(name = "SECUSER_ID") }, inverseJoinColumns = { + @JoinColumn(name = "ROLE_ID") }) + private Set roles; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java new file mode 100644 index 0000000..f37f77c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDepartment.java @@ -0,0 +1,39 @@ +package com.realnet.users.entity1; + +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="DEPARTMENT") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserDepartment { + @Id + @Column(name="department_code") + private String departmentCode; + private String active; + private String description; + @Column(name="created_on") + private Date createdOn; + @Column(name="created_by") + private String createdBy; + @Column(name="created_on",updatable = false,insertable = false) + private Date updatedOn; + @Column(name="updated_by") + private String updatedBy; + private Long id; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java new file mode 100644 index 0000000..4f8af42 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserDto.java @@ -0,0 +1,25 @@ +package com.realnet.users.entity1; + +import lombok.Data; + +@Data +public class AppUserDto { + private Long userId; + private String username; + private String userPassw; + private String title; + private String shortName; + private String fullName; + private String status; + + private String positionCodeId; + private String departmentCodeId; + private Long usrGrpId; + private Long customerId; + private String email; + private String notification; + private Long mob_no; + private boolean active; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java new file mode 100644 index 0000000..6da367b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserLoginHist.java @@ -0,0 +1,42 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.OneToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="USERLOGINHIST") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserLoginHist implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @OneToOne + @JoinColumn(name="user_id") + private AppUser userId; + private Date lastLoginDate; + private Date lastPasswordChgDate; + private Long lastPasswordFailNo; + private String createBy; + private Date createDate; + private String updateBy; + private Date updateDate; + private Long expiryReminder; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java new file mode 100644 index 0000000..9cc84b9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlog.java @@ -0,0 +1,45 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="USERPASSWLOG") +@IdClass(AppUserPasswlogCompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode +public class AppUserPasswlog implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @ManyToOne + @JoinColumn(name="user_id") + private AppUser userId; + @Id + private String userPassw; + private String createBy; + @Id + private Date createDate; + private String updateBy; + private Date updateDate; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java new file mode 100644 index 0000000..19aebcc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPasswlogCompositeKey.java @@ -0,0 +1,27 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class AppUserPasswlogCompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String userPassw; + private Date createDate; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java new file mode 100644 index 0000000..813871e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPosition.java @@ -0,0 +1,31 @@ +package com.realnet.users.entity1; + +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="POSITION") +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserPosition { + @Id + private String positionCode; + private String active; + private String description; + private Date createdOn; + private String createdBy; + private Date updatedOn; + private String updatedBy; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java new file mode 100644 index 0000000..f6c1f2d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserPrinciple.java @@ -0,0 +1,105 @@ +package com.realnet.users.entity1; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetails; + +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.realnet.users.entity.Role; + +public class AppUserPrinciple implements UserDetails{ + + /** + * + */ + private static final long serialVersionUID = 1L; + private AppUser u; + public AppUserPrinciple(AppUser u) { + super(); + this.u = u; + } + + +// private String username; +// @JsonIgnore +// private String password; +// private String role; +// +// public AppUserPrinciple( String username, String password,String role +// ) { +// this.username = username; +// this.password = password; +// this.role = role; +// } + + + + @Override + public Collection getAuthorities() { +// Set authorities = new HashSet<>(); +// authorities.add(new SimpleGrantedAuthority("ROLE_"+u.getUsrGrp().getGroupName())); +//// u.getUsrGrp().forEach(role->{ +//// authorities.add(new SimpleGrantedAuthority("ROLE_"+role.getGroupName())); +//// }); +// return authorities; + + //FROM GK +// List authorities = u.getRoles().stream().map(role-> new SimpleGrantedAuthority(role.getName())).collect(Collectors.toList()); +// authorities.add(new SimpleGrantedAuthority("ROLE_"+role)); +// return authorities; + + Set roles = u.getRoles(); + List authorities = new ArrayList<>(); + + for (Role role : roles) { +// authorities.add(new SimpleGrantedAuthority(role.getName().getDeclaringClass().getName())); + authorities.add(new SimpleGrantedAuthority(role.getName())); + } + + return authorities; + } + + @Override + public String getPassword() { + // TODO Auto-generated method stub + return u.getUserPassw(); + } + + @Override + public String getUsername() { + // TODO Auto-generated method stub + return u.getUsername(); + } + + @Override + public boolean isAccountNonExpired() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isAccountNonLocked() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isCredentialsNonExpired() { + // TODO Auto-generated method stub + return true; + } + + @Override + public boolean isEnabled() { + // TODO Auto-generated method stub + return true; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java new file mode 100644 index 0000000..7b8f96a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserRole.java @@ -0,0 +1,67 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.EntityListeners; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; +import javax.persistence.SequenceGenerator; +import javax.persistence.Table; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import javax.persistence.Transient; + +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; +import org.springframework.data.jpa.repository.config.EnableJpaAuditing; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_USER_GROUP") +@EnableJpaAuditing +@EntityListeners(AuditingEntityListener.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +public class AppUserRole implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @Column(name="usr_grp") + @GeneratedValue(generator = "SecUserGrp_gen") + @SequenceGenerator(name="SecUserGrp_gen", sequenceName="sec_user_group_id",initialValue = 40, allocationSize = 1) + private Long usrGrp; //auto generate +// @Transient +// @ManyToOne(fetch=FetchType.LAZY,cascade = CascadeType.ALL) +// private AppUser appUser; + private String groupName; //will come + private String groupDesc; //will come + private String createby; + @Temporal(TemporalType.TIMESTAMP) + @CreatedDate + private Date createdate; + @Temporal(TemporalType.TIMESTAMP) + @LastModifiedDate + private Date updatedate; + private String updateby; + private String status; //will come but need to change + private Long groupLevel; //will come + @Transient + private String createDateFormated; + @Transient + private String updateDateFormated; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java new file mode 100644 index 0000000..94e08c3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessions.java @@ -0,0 +1,51 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.IdClass; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.AllArgsConstructor; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import lombok.ToString; + +@Entity +@Table(name="SEC_USER_SESSIONS") +@IdClass(AppUserSessionsCompositeKey.class) +@Getter +@Setter +@AllArgsConstructor +@NoArgsConstructor +@ToString +@EqualsAndHashCode +public class AppUserSessions implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + @Id + @ManyToOne + @JoinColumn(name="user_id") + private AppUser userId; + @Id + private String sessionId; + @Id + private String clientIp; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date lastAccessDate; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date logintime; + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date logouttime; + private String macid; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java new file mode 100644 index 0000000..6ec8958 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUserSessionsCompositeKey.java @@ -0,0 +1,26 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +@Data +@Getter +@Setter +@EqualsAndHashCode +@AllArgsConstructor +@NoArgsConstructor +public class AppUserSessionsCompositeKey implements Serializable{ + /** + * + */ + private static final long serialVersionUID = 1L; + private Long userId; + private String sessionId; + private String clientIp; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java new file mode 100644 index 0000000..1bbc16f --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/AppUser_who_column.java @@ -0,0 +1,52 @@ +package com.realnet.users.entity1; + +import java.io.Serializable; +import java.util.Date; +import javax.persistence.Column; +import javax.persistence.EntityListeners; +import javax.persistence.MappedSuperclass; +import javax.persistence.Temporal; +import javax.persistence.TemporalType; +import org.springframework.data.annotation.CreatedDate; +import org.springframework.data.annotation.LastModifiedDate; +import org.springframework.data.jpa.domain.support.AuditingEntityListener; + +import com.fasterxml.jackson.annotation.JsonFormat; + +import lombok.Data; + +@Data +@MappedSuperclass +@EntityListeners(AuditingEntityListener.class) +public class AppUser_who_column implements Serializable{ + + private static final long serialVersionUID = 1L; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "CREATED_AT", nullable = false, updatable = false) + @CreatedDate + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date createdAt; + + @Temporal(TemporalType.TIMESTAMP) + @Column(name = "UPDATED_AT", nullable = false) + @LastModifiedDate + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private Date updatedAt; + + // @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime createdAt; + + +// @Column(name = "CREATED_BY", updatable = false) +// private Long createdBy; + +// @Column(name = "UPDATED_BY") +// private Long updatedBy; + + + +// @Column(name = "ACCOUNT_ID") +// private Long accountId; + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java new file mode 100644 index 0000000..16dc1a0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/Registration.java @@ -0,0 +1,35 @@ +package com.realnet.users.entity1; + +import javax.persistence.Lob; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import lombok.Data; + +@Data +public class Registration { + + private String first_name; + + private String last_name; + + private Long mob_no; + + private String email; + + private Long account_id; + + private Long usrGrpId; + + @NotBlank + @Size(min = 6, max = 40) + private String new_password; + + private String confirm_password; + private String accesstype; + + private String gender; + private String date_of_birth; + @Lob + private String how_you_know_aboutus; +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java new file mode 100644 index 0000000..b52a808 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/entity1/SignUp.java @@ -0,0 +1,24 @@ +package com.realnet.users.entity1; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; + +import lombok.Data; + +@Data +public class SignUp { + + private String first_name; + + private String last_name; + + private Long mob_no; + +// private Set role; + @NotBlank + @Size(min = 6, max = 40) + private String password; + + private String confirm_password; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java new file mode 100644 index 0000000..0f3dfe6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/AboutWorkRepo.java @@ -0,0 +1,19 @@ +package com.realnet.users.repository; + +import java.util.Optional; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; + +@Repository +public interface AboutWorkRepo extends JpaRepository{ + + +// Optional findById(Long id); + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java new file mode 100644 index 0000000..82a9037 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/CompanyRepo.java @@ -0,0 +1,10 @@ +package com.realnet.users.repository; + +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.users.entity.Sys_Accounts; + +public interface CompanyRepo extends JpaRepository { + Sys_Accounts findByCompanyName(String company_name); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java new file mode 100644 index 0000000..4238333 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/RoleRepo.java @@ -0,0 +1,15 @@ +package com.realnet.users.repository; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import com.realnet.users.entity.Role; + +public interface RoleRepo extends JpaRepository { + // for pagination + Page findAll(Pageable p); + Role findByName(String name); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java new file mode 100644 index 0000000..c5f9bfb --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/SysAccountRepo.java @@ -0,0 +1,13 @@ +package com.realnet.users.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity.Sys_Accounts; + +@Repository +public interface SysAccountRepo extends JpaRepository { + + Sys_Accounts findByEmail(String email); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java new file mode 100644 index 0000000..e0df3ae --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository/UserRepo.java @@ -0,0 +1,47 @@ +//package com.realnet.users.repository; +// +//import java.util.List; +//import java.util.Optional; +// +//import javax.validation.Valid; +// +//import org.springframework.data.domain.Pageable; +//import org.springframework.data.jpa.repository.JpaRepository; +//import org.springframework.data.jpa.repository.Query; +//import org.springframework.data.repository.query.Param; +// +//import com.realnet.session.entity.AboutWork; +//import com.realnet.users.entity.User; +//import com.realnet.users.entity1.AppUser; +// +//public interface UserRepo extends JpaRepository { +// User findByUsername(String username); +// +// User findByEmail(String email); +// +// Optional findByUsernameAndPassword(String username, String password); +// // @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM User p WHERE p.email = :email") +// +// Boolean existsByEmail(String email); +// +// // need modification +// @Query(value = "SELECT * FROM USER WHERE ACCOUNT_ID =:accId AND STATUS =:status", nativeQuery = true) +// List findByAccountIdAndStatus(@Param("accId") Long id, @Param("status") String status, Pageable pageable); +// +// @Query(value = "delete from user_roles where users_id= :user_id", nativeQuery = true) +// void deleteRelation(@Param("user_id") Long user_id); +// +// +// @Query(value = "SELECT * FROM USER WHERE user_id =:user_id AND checknumber =:checknumber", nativeQuery = true) +// User exitbychecknumber(@Param("user_id") Long user_id,@Param("checknumber") Long checknumber); +// +// // List findByAccountIdAndStatus(Long id, String status); +// +//// @Query("SELECT CASE WHEN COUNT(c) > 0 THEN true ELSE false END FROM User c WHERE c.name = :name") +//// Boolean existsByName(@Param("name") String name); +// +//// User findById(int acc_id); +// +//// public List findAll(); +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java new file mode 100644 index 0000000..c896a37 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserDepartmentRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserDepartment; + +@Repository +public interface AppUserDepartmentRepository extends JpaRepository{ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java new file mode 100644 index 0000000..41497fc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserPositionRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserPosition; + +@Repository +public interface AppUserPositionRepository extends JpaRepository{ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java new file mode 100644 index 0000000..e001203 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRepository.java @@ -0,0 +1,73 @@ +package com.realnet.users.repository1; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Optional; + +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.data.repository.query.Param; +import org.springframework.stereotype.Repository; + +import com.realnet.fnd.entity1.GrpMenuAccess; +import com.realnet.userlist.entity.UserList; +import com.realnet.users.entity1.AppUser; + +@Repository +public interface AppUserRepository extends JpaRepository { + + Optional findByUsername(String username); + +// AppUser findByEmail(String email); + + Optional findByUsernameAndUserPassw(String username, String userPassw); + + Boolean existsByEmail(String email); + + @Query(value = "SELECT customer_number FROM be_cust_master WHERE customer_id = ?1", countQuery = "SELECT count(*) FROM be_cust_master WHERE customer_id = ?1", nativeQuery = true) + String getCustomerNumber(BigDecimal customerId); + + @Query(value = "select refcodedesc from refcodedet where reftype = ?1 and refcode = ?2", countQuery = "select refcodedesc from refcodedet where reftype = ?1 and refcode = ?2", nativeQuery = true) + String getStatus(String tableName, String code); + + @Query(value = "SELECT * FROM sec_users a where a.email =?1", nativeQuery = true) + AppUser findByEmail(String email); + + @Query(value = "SELECT * FROM sec_users a where a.user_name =?1", nativeQuery = true) + AppUser findByUserName(String email); + + @Query(value = "SELECT * FROM sec_users a where a.random_no = ?1", nativeQuery = true) + AppUser findByToken(String random_no); + + @Query(value = "SELECT * FROM sec_grp_menu_access a where a.usr_grp= ?1", nativeQuery = true) + GrpMenuAccess findByUsrGrp(Long usr_grp); + + @Query(value = "SELECT * FROM sec_users a where a.account_id =?1", nativeQuery = true) + List getall(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.usr_grp=42 and a.account_id =?1", nativeQuery = true) + List getalluser(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.usr_grp=45 and a.account_id =?1", nativeQuery = true) + List getallguest(Long account_id); + + @Query(value = "SELECT * FROM sec_users a where a.user_id =?1", nativeQuery = true) + AppUser findByUserId(Long id); + + @Query(value = "SELECT * FROM sec_users where user_name LIKE %:keyword% ", nativeQuery = true) + List SearchByKeyword(@Param("keyword") String keyword); + + @Query(value = "SELECT * FROM sec_users a where a.active =true", nativeQuery = true) + Page getallusers(Pageable page); + + @Query(value = "SELECT * FROM sec_users a where a.user_id =?1 && access_till_date >= NOW();", nativeQuery = true) + AppUser findusertilldate(Long id); + + List findByFullNameContaining(String keyword); + +// @Query(value = "SELECT * FROM realnet_CNSBE.secuser_roles a.secuser_id =?1", nativeQuery = true) +// List getseuserroles(Long secuser_id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java new file mode 100644 index 0000000..3af437e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserRoleRepository.java @@ -0,0 +1,11 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUserRole; + +@Repository +public interface AppUserRoleRepository extends JpaRepository{ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java new file mode 100644 index 0000000..b60d9a0 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/AppUserSessionsRepository.java @@ -0,0 +1,20 @@ +package com.realnet.users.repository1; + +import java.util.List; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.entity1.AppUserSessionsCompositeKey; + +@Repository +public interface AppUserSessionsRepository extends JpaRepository{ + + List findByUserId(AppUser userId); + + @Query(value = "SELECT * FROM realnet_CNSBE.sec_user_sessions where session_id = ?1",nativeQuery = true) + AppUserSessions findBySessionId(String sessionId); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java new file mode 100644 index 0000000..cbda7bf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/repository1/passwordTokenRepository.java @@ -0,0 +1,23 @@ +package com.realnet.users.repository1; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.data.repository.query.Param; + +import com.realnet.users.entity.PasswordResetToken; + +public interface passwordTokenRepository extends JpaRepository { + +// @Query(value = "SELECT * FROM password_reset_token a where a.token =?1", nativeQuery = true) +// +// Optional findByToken(String token); + +// @Query(value = "SELECT * FROM password_reset_token a where a.token = ?1", nativeQuery = true) +// +// PasswordResetToken findByToken(String token); + + @Query(value="SELECT * FROM password_reset_token a where a.token=:token", nativeQuery = true) + PasswordResetToken findByToken(@Param("token") String token); + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java new file mode 100644 index 0000000..21acd23 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/MessageResponse.java @@ -0,0 +1,17 @@ +package com.realnet.users.response; + +public class MessageResponse { + private String message; + + public MessageResponse(String message) { + this.message = message; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java new file mode 100644 index 0000000..ce53ae5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/ServiceResponse.java @@ -0,0 +1,29 @@ +package com.realnet.users.response; + +public class ServiceResponse { + private int status; + + private Object data; + + public ServiceResponse(int status, Object data) { + this.status = status; + this.data = data; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public Object getData() { + return data; + } + + public void setData(Object result) { + this.data = result; + } + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java new file mode 100644 index 0000000..44acb0a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserItem.java @@ -0,0 +1,12 @@ +package com.realnet.users.response; + +import lombok.Data; + +@Data +public class UserItem { + private Long userId; + private String firstName; + private String fullname; + private String email; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java new file mode 100644 index 0000000..6c67d88 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/response/UserResponse.java @@ -0,0 +1,15 @@ +package com.realnet.users.response; + +import com.realnet.fnd.response.OperationResponse; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +@Data +@EqualsAndHashCode(callSuper = false) +public class UserResponse extends OperationResponse { + @ApiModelProperty(required = true, value = "") + private UserItem item; + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java new file mode 100644 index 0000000..63fc28e --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutServiceImple.java @@ -0,0 +1,132 @@ +package com.realnet.users.service; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository.AboutWorkRepo; +import com.realnet.utils.Constant; + + +@Service +public class AboutServiceImple implements AboutWorkService { + + @Autowired + private AboutWorkRepo aboutworkrepo; + + @Autowired + private BCryptPasswordEncoder bcryptEncoder; + + @Override + public AboutWork adddata(AboutWork data) { + // TODO Auto-generated method stub + + AboutWork a=new AboutWork(); + a.setId(data.getId()); + a.setName(data.getName()); + + + AppUser user =new AppUser(); + user.setChangePassw(data.getPassword()); + user.setEmail(data.getEmail()); +// user.setPhone(data.getMobile()); + + + + AboutWork about=aboutworkrepo.save(a); + + + return about; + } + + @Override + public AboutWork updateById(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + oldUser.setName(about.getName()); + oldUser.setMobile(about.getMobile()); + oldUser.setEmail(about.getEmail()); + oldUser.setPassword(bcryptEncoder.encode(about.getPassword())); + oldUser.setCompanyname(about.getCompanyname()); + oldUser.setPancard(about.getPancard()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + @Override + public AboutWork updateById2(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + + oldUser.setCompanyname(about.getCompanyname()); + oldUser.setPancard(about.getPancard()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + + @Override + public AboutWork updateById3(Long id, @Valid AboutWork about) { + AboutWork oldUser = aboutworkrepo.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); + oldUser.setWorking(about.getWorking()); + AboutWork updatedUser = aboutworkrepo.save(oldUser); + return updatedUser; + } + + + @Override + public AboutWork adddata(Email email) { + // TODO Auto-generated method stub + AboutWork a=new AboutWork(); + a.setId(email.getId()); + + AboutWork about=aboutworkrepo.save(a); + return about; + } + +// @Override +// public AboutWork adddata(Email email) { +// +// AboutWork a=new AboutWork(); +// a.setId(email.getUserId()); +// a.setName(email.getEmail1()); +// a.setName(email.getEmail2()); +// a.setName(email.getEmail3()); +// a.setName(email.getEmail4()); +// +// +// +// User user =new User(); +// user.setPassword(email.getPassword()); +// user.setEmail(email.getEmail1()); +// user.setEmail(email.getEmail2()); +// user.setEmail(email.getEmail3()); +// user.setEmail(email.getEmail4()); +//AboutWork about=aboutworkrepo.save(a); +// +// +// return about; +// } + +// @Override +// public AboutWork updateById(Long id, @Valid AboutWork aboutWork) { +// // TODO Auto-generated method stub +// +// AboutWork oldUser = aboutworkrepo.findById(id) +// .orElseThrow(() -> new ResourceNotFoundException(Constant.NOT_FOUND_EXCEPTION + " :" + id)); +// +// oldUser.setCompanyname(aboutWork.getCompanyname()); +// +// final AboutWork updatedUser = aboutworkrepo.save(oldUser); +// return updatedUser; +// } + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java new file mode 100644 index 0000000..e4ee966 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/AboutWorkService.java @@ -0,0 +1,23 @@ +package com.realnet.users.service; + +import com.realnet.session.entity.AboutWork; +import com.realnet.users.entity.Email; + +public interface AboutWorkService { + public AboutWork adddata(AboutWork data); + + public AboutWork updateById(Long id, AboutWork about); + public AboutWork updateById2(Long id, AboutWork about); + public AboutWork updateById3(Long id, AboutWork about); + + public AboutWork adddata(Email email); + +// public AboutWork adddata(Email email); + +// public AboutWork adddata(Email email); + +// public AboutWork updateById(Long id, @Valid AboutWork aboutWork); + +// User adddata(User data); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java new file mode 100644 index 0000000..db2198b --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyService.java @@ -0,0 +1,21 @@ +package com.realnet.users.service; + +import java.util.List; + +import com.realnet.users.entity.CompanyDto; +import com.realnet.users.entity.Sys_Accounts; + +public interface CompanyService { + // creating new company + Sys_Accounts companyResister(CompanyDto company); + + public boolean insertOrSaveCompany(Sys_Accounts company); + // company registration + + List getAll(); + + public Sys_Accounts getById(Long id); + + void delete(long id); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java new file mode 100644 index 0000000..67c1901 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/CompanyServiceImpl.java @@ -0,0 +1,98 @@ +//package com.realnet.users.service; +// +//import java.util.List; +// +//import org.springframework.beans.factory.annotation.Autowired; +//import org.springframework.stereotype.Service; +// +//import com.realnet.users.entity.CompanyDto; +//import com.realnet.users.entity.Sys_Accounts; +//import com.realnet.users.entity.User; +//import com.realnet.users.repository.CompanyRepo; +//import com.realnet.users.repository.RoleRepo; +//import com.realnet.users.repository.UserRepo; +// +//import lombok.extern.slf4j.Slf4j; +// +//@Slf4j +//@Service +//public class CompanyServiceImpl implements CompanyService { +// +// @Autowired +// private UserRepo userRepo; +// +// @Autowired +// private RoleRepo roleRepo; +// +// @Autowired +// private CompanyRepo companyRepo; +// +// public List getAll() { +// return companyRepo.findAll(); +// +// } +// +// @Override +// public void delete(long id) { +// companyRepo.deleteById(id); +// } +// +// @Override +// public Sys_Accounts getById(Long id) { +// return companyRepo.findById(id).get(); +// } +// +// public boolean addNewCompany(Sys_Accounts company) { +// boolean exists = companyRepo.existsById(company.getAccount_id()); +// if (exists) { +// return false; +// } else { +// return this.insertOrSaveCompany(company); +// +// } +// } +// +//// public User resister(UserDto user) { +//// User newUser = new User(); +//// newUser.setEmail(user.getEmail()); +//// newUser.setFirstName(user.getFirstName()); +//// newUser.setLastName(user.getLastName()); +//// Role admin_role = roleRepo.findByName("ADMIN"); +//// Role user_role = roleRepo.findByName("USER"); +//// Role billing_role = roleRepo.findByName("BILLING"); +//// Set roles = new HashSet(); +//// roles.add(admin_role); +//// roles.add(user_role); +//// roles.add(billing_role); +//// newUser.setRoles(roles); +//// return userRepo.save(newUser); +//// } +// +// //########## MOD NEEDED ########## +// @Override +// public Sys_Accounts companyResister(CompanyDto company) { +// Sys_Accounts newCompany = new Sys_Accounts(); +// newCompany.setCompanyName(company.getCompanyName()); +// newCompany.setGstNumber(company.getGstNumber()); +// newCompany.setWorkspace(company.getWorkspace()); +// log.info("companyResister() -> CompanyDto : {}", newCompany); +// Sys_Accounts savedCompany = companyRepo.save(newCompany); +// log.info("companyResister() -> savedCompany : {}", savedCompany); +// +// String userEmail = company.getUserEmail(); +// log.info("companyResister() -> userEmail : {}", userEmail); +// User user = userRepo.findByEmail(userEmail); +// //user.setCompany(savedCompany); +// user.setSys_account(savedCompany); +// userRepo.save(user); +// log.info("companyResister() -> savedUser : {}", user); +// return savedCompany; +// } +// +// @Override +// public boolean insertOrSaveCompany(Sys_Accounts company) { +// this.companyRepo.save(company); +// return true; +// } +// +//} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java new file mode 100644 index 0000000..da25b0d --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleService.java @@ -0,0 +1,29 @@ +package com.realnet.users.service; + +import java.util.List; + +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; + +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; + +public interface RoleService { + + public List getRoles(); + + public Page getAll(Pageable page); + + public Role getRoleById(Long id); + + ResponseEntity addRole(Role role); + + ResponseEntity deleteRole(Long id); + + ResponseEntity updateRole(Long id, Role role); + + // add or remove a Role on a user + public AppUser addRole(Long id, Long roleId); + public AppUser removeRole(Long id, Long roleId); +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java new file mode 100644 index 0000000..b271a97 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/RoleServiceImpl.java @@ -0,0 +1,173 @@ +package com.realnet.users.service; + +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Service; + +import com.realnet.exceptions.InvalidUserDataException; +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.users.entity.Role; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.service1.AppUserService; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@Service +public class RoleServiceImpl implements RoleService { // UserDetailsService, + + @Autowired + private AppUserRepository userRepository; + @Autowired(required=false) + private AppUserService userService; + + + + @Autowired + private RoleRepo roleRepository; + + @Override + public List getRoles() { + return roleRepository.findAll(); + } + + @Override + public Page getAll(Pageable page) { + return roleRepository.findAll(page); + } + + @Override + public Role getRoleById(Long id) { + Role role = roleRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException("Role not found :: " + id)); + return role; + } + + @Override + public ResponseEntity addRole(Role role) { + Role newRole = new Role(); + newRole.setName(role.getName()); + newRole.setDescription(role.getDescription()); + Set roleList = new HashSet<>(); + roleList.add(newRole); + // for(int i=0; i< role.getUsers().size(); i++){ + for (AppUser user : role.getAppusers()) { + // if(!userRepository.findByEmail(role.getUsers().get(i).getEmail()).isPresent()) + // { + AppUser usr = userRepository.findByEmail(user.getEmail()); + if (usr != null) { + AppUser newUser = user; + newUser.setRoles(roleList); + AppUser savedUser = userRepository.save(newUser); + if (!userRepository.findById(savedUser.getUserId()).isPresent()) + return ResponseEntity.unprocessableEntity().body("Role Creation Failed"); + } else + return ResponseEntity.unprocessableEntity().body("User with email Id is already Present"); + } + return ResponseEntity.ok("Successfully created Role"); + + } + + @Override + public ResponseEntity deleteRole(Long id) { + if (roleRepository.findById(id).isPresent()) { + if (roleRepository.getOne(id).getAppusers().size() == 0) { + roleRepository.deleteById(id); + if (roleRepository.findById(id).isPresent()) { + return ResponseEntity.unprocessableEntity().body("Failed to delete the specified record"); + } else + return ResponseEntity.ok().body("Successfully deleted specified record"); + } else + return ResponseEntity.unprocessableEntity() + .body("Failed to delete, Please delete the users associated with this role"); + } else + return ResponseEntity.unprocessableEntity().body("No Records Found"); + } + + @Override + public ResponseEntity updateRole(Long id, Role role) { + if (roleRepository.findById(id).isPresent()) { + Role newRole = roleRepository.findById(id).get(); + newRole.setName(role.getName()); + newRole.setDescription(role.getDescription()); + Role savedRole = roleRepository.save(newRole); + if (roleRepository.findById(savedRole.getId()).isPresent()) + return ResponseEntity.accepted().body("Role saved successfully"); + else + return ResponseEntity.badRequest().body("Failed to update Role"); + } else + return ResponseEntity.unprocessableEntity().body("Specified Role not found"); + } + + + public void addUserRole(AppUser user, long roleId) { + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException("Role cannot be null"); + } + user.getRoles().add(roleOpt.get()); + } + + /* ==== WORKING CODE ==== */ + @Override + public AppUser addRole(Long id, Long roleId) { + // check user + Optional userOpt = userRepository.findById(id); + if (!userOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("User not found with Id = %s", id)); + } + AppUser user = userOpt.get(); + // check role + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("Role not found with Id = %s", roleId)); + } + Role role = roleOpt.get(); + + // ==== MOD ==== + // check if user already have that role... + if(user.getRoles().contains(role)) { + throw new InvalidUserDataException(String.format("Role %s already exists with the User = %s", roleId, id)); + } + user.getRoles().add(role); +// user.setUpdateby(userService.getLoggedInUserId()); + userRepository.save(user); + log.info(String.format("Added role %s on user id = %s", role.getName(), user.getUserId())); + return user; + } + @Override + public AppUser removeRole(Long id, Long roleId) { + // check user + Optional userOpt = userRepository.findById(id); + if (!userOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("User not found with Id = %s", id)); + } + AppUser user = userOpt.get(); + // check role + Optional roleOpt = roleRepository.findById(roleId); + if (!roleOpt.isPresent()) { + throw new ResourceNotFoundException(String.format("Role not found with Id = %s", roleId)); + } + Role role = roleOpt.get(); + user.getRoles().remove(role); + + // === MOD NEEDED + if(user.getRoles().isEmpty()) { + throw new InvalidUserDataException(String.format("User %s Must Have a Single Role", id)); + //user.setRoles(roleRepository.findByName("USER")); + } +// user.setUpdatedBy(userService.getLoggedInUserId()); + userRepository.save(user); + log.info(String.format("Removed role %s on user id = %s", role.getName(), user.getUserId())); + return user; + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java new file mode 100644 index 0000000..22b630c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service/UserService.java @@ -0,0 +1,94 @@ +//package com.realnet.users.service; +// +//import java.util.List; +// +//import javax.validation.Valid; +// +//import com.realnet.session.entity.AboutWork; +//import com.realnet.users.entity.User; +//import com.realnet.users.entity.UserDto; +//import com.realnet.users.entity.UserProfileDTO; +// +//public interface UserService { +// public boolean insertOrSaveUser(User user); +// +// public List getAllUsers(); +// +// // company registration +// List getAll(); +// +// void delete(long id); +// +// // Optional getByUserNameAndPassword(String username, String password); +// User getByUserNameAndPassword(String username, String password); +// +// User getByUserName(String username); +// +// User getByEmail(String email); +// +// User getById(Long id); +// +// boolean existsByEmail(String email); +// +// // update by username +// User updateByEmail(String email, UserProfileDTO userProfile); +// +// // get logged in user details +// String getLoggedInUserEmail(); +// +// Long getLoggedInUserId(); +// +// Long getLoggedInUserAccountId(); +// +// User getLoggedInUser(); +// +// User getUserInfoByUserId(Long userId); +// +// // creating new user (sign up user as ADMIN) +// User userResister(UserDto user); +// +// // --- USERS ADDED BY ADMIN --- +// User createUserByAdmin(User user); +//// List getUsersByAccountId(Long id); +// //List getUsersByCompanyId(Long id); // need mod +// public User updateById(Long id, User UserRequest); +// boolean deleteById(Long id); +// +// boolean changePassword(String oldPassword, String newPassword); +// +// public void sendEmail(String email,Long id,Long checkNo); +// +// public User adddata(AboutWork about); +// +// public User updateById(Long id, @Valid AboutWork aboutWork); +// public User updateById2(Long id, @Valid AboutWork aboutWork); +// +// public User userResister(User user, Long id); +// +// +// User updateByIdWorkingId(Long id, @Valid AboutWork aboutWork); +// +// User updateByMangingWork(Long id, @Valid AboutWork aboutWork); +// +// public User userResisteremail(User user); +// +// public void sendEmail2(String email1, Long userId, Long checknumber); +// +// public void sendEmail3(String email2, Long userId, Long checknumber); +// +// public void sendEmail4(String email3, Long userId, Long checknumber); +// +// public void sendEmail5(String email4, Long userId, Long checknumber); +// +// //public boolean exitbychecknumber(Long userId, Long checknumber); +// public User exitbychecknumber(Long userId, Long checknumber); +// +// public User save(User user); +// +// +// +//// public List save(List about); +// +// +// +//} \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java new file mode 100644 index 0000000..9860598 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserRoleServiceImpl.java @@ -0,0 +1,44 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Sort; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.repository1.AppUserRoleRepository; + +@Service +public class AppUserRoleServiceImpl { + private AppUserRoleRepository appUserRoleRepository; + private AppUserServiceImpl appUserServiceImpl; + @Autowired + public AppUserRoleServiceImpl(AppUserRoleRepository appUserRoleRepository, + AppUserServiceImpl appUserServiceImpl) { + super(); + this.appUserRoleRepository = appUserRoleRepository; + this.appUserServiceImpl = appUserServiceImpl; + + } + public List getAll(){ + + return appUserRoleRepository.findAll(Sort.by(Sort.Direction.ASC, "usrGrp")); + } + public Optional getOne(Long id){ + return appUserRoleRepository.findById(id); + } + public AppUserRole addOne(AppUserRole appUserRole) { +// String createdBy = appUserServiceImpl.getLoggedInUser().getUsername(); +// String updatedBy = createdBy; +// appUserRole.setCreateby(createdBy); +// appUserRole.setUpdateby(updatedBy); + return appUserRoleRepository.save(appUserRole); + } + public AppUserRole updateOne(AppUserRole appUserRole) { + String updatedBy = appUserServiceImpl.getLoggedInUser().getUsername(); + appUserRole.setUpdateby(updatedBy); + return appUserRoleRepository.save(appUserRole); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java new file mode 100644 index 0000000..7af18ee --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserService.java @@ -0,0 +1,85 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + + +import com.realnet.users.entity1.AppUser; + +public interface AppUserService { + public boolean insertOrSaveUser(AppUser appUser); + + public List getAllUsers(); + + // company registration + List getAll(); + + void delete(long id); + + // Optional getByUserNameAndPassword(String username, String password); + AppUser getByUserNameAndPassword(String username, String userPassw); + + Optional getByUserName(String username); + + AppUser getByEmail(String email); + + Optional getById(Long id); + + boolean existsByEmail(String email); + + // update by username +// User updateByEmail(String email, UserProfileDTO userProfile); + + // get logged in user details + String getLoggedInUserEmail(); + + Long getLoggedInUserId(); + + Long getLoggedInUserAccountId(); + + AppUser getLoggedInUser(); + + AppUser getUserInfoByUserId(Long userId); + + // creating new user (sign up user as ADMIN) + AppUser userResister(AppUser appUser); + + // --- USERS ADDED BY ADMIN --- + AppUser createUserByAdmin(AppUser appUser); +// List getUsersByAccountId(Long id); + //List getUsersByCompanyId(Long id); // need mod +// public User updateById(Long id, User UserRequest); + boolean deleteById(Long id); + +// boolean changePassword(String oldPassword, String newPassword); + + public void sendEmail(String email,Long id,Long checkNo); + + //public User adddata(AboutWork about); + +// public User updateById(Long id, @Valid AboutWork aboutWork); +// public User updateById2(Long id, @Valid AboutWork aboutWork); + + public AppUser userResister(AppUser user, Long id); + + +// User updateByIdWorkingId(Long id, @Valid AboutWork aboutWork); + +// User updateByMangingWork(Long id, @Valid AboutWork aboutWork); + +// public User userResisteremail(User user); +// +// public void sendEmail2(String email1, Long userId, Long checknumber); +// +// public void sendEmail3(String email2, Long userId, Long checknumber); +// +// public void sendEmail4(String email3, Long userId, Long checknumber); +// +// public void sendEmail5(String email4, Long userId, Long checknumber); +// + //public boolean exitbychecknumber(Long userId, Long checknumber); + //public User exitbychecknumber(Long userId, Long checknumber); + +// public User save(User user); + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java new file mode 100644 index 0000000..5d61d93 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserServiceImpl.java @@ -0,0 +1,616 @@ +package com.realnet.users.service1; + +import java.math.BigDecimal; +import java.security.SecureRandom; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.util.StringUtils; + +import com.realnet.exceptions.ResourceNotFoundException; +import com.realnet.userDTO.User; +import com.realnet.users.entity.PasswordResetRequest; +import com.realnet.users.entity.PasswordResetToken; +import com.realnet.users.entity.Role; +import com.realnet.users.entity.Sys_Accounts; +import com.realnet.users.entity1.AppUser; +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserDto; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.entity1.AppUserPrinciple; +import com.realnet.users.entity1.AppUserRole; +import com.realnet.users.entity1.Registration; +import com.realnet.users.repository.RoleRepo; +import com.realnet.users.repository.SysAccountRepo; +import com.realnet.users.repository1.AppUserDepartmentRepository; +import com.realnet.users.repository1.AppUserPositionRepository; +import com.realnet.users.repository1.AppUserRepository; +import com.realnet.users.repository1.AppUserRoleRepository; +import com.realnet.users.repository1.passwordTokenRepository; + +import lombok.extern.slf4j.Slf4j; + +@Service +@Slf4j +public class AppUserServiceImpl implements UserDetailsService, AppUserService { + + @Autowired + private RoleRepo roleRepo; + + @Autowired + private SysAccountRepo sysAccountRepo; + + private passwordTokenRepository passwordTokenRepository; + private AppUserRepository appUserRepository; + private AppUserRoleRepository appUserRoleRepository; + private AppUserPositionRepository appUserPositionRepository; + private AppUserDepartmentRepository appUserDepartmentRepository; + private BCryptPasswordEncoder bcryptEncoder; + + @Autowired + public AppUserServiceImpl(AppUserRepository appUserRepository, BCryptPasswordEncoder bCryptPasswordEncoder, + AppUserRoleRepository appUserRoleRepository, AppUserPositionRepository appUserPositionRepository, + AppUserDepartmentRepository appUserDepartmentRepository, passwordTokenRepository passwordTokenRepository) { + super(); + this.appUserRepository = appUserRepository; + this.bcryptEncoder = bCryptPasswordEncoder; + this.appUserRoleRepository = appUserRoleRepository; + this.appUserPositionRepository = appUserPositionRepository; + this.appUserDepartmentRepository = appUserDepartmentRepository; + this.passwordTokenRepository = passwordTokenRepository; + } + + @Override + public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { + Optional user = appUserRepository.findByUsername(username); + if (user.get() == null) { + throw new UsernameNotFoundException("Invalid Email or password."); + } + AppUserPrinciple appUserPrinciple = new AppUserPrinciple(user.get()); + + return appUserPrinciple; + } + + public List getAllAppUsers(Pageable page) { + Page p = appUserRepository.getallusers(page); + List l = p.getContent(); + for (AppUser o : l) { + if (o.getCustomerId() != null) { + o.setCustomerNumer(appUserRepository.getCustomerNumber(BigDecimal.valueOf(o.getCustomerId()))); + } + if (o.getUsrGrp() != null) { + o.setUsrGrpId(o.getUsrGrp().getUsrGrp()); + o.setUsrGrpName(o.getUsrGrp().getGroupName()); + o.setUsrGrp(null); + } + if (o.getPositionCode() != null) { + o.setPositionCodeString(o.getPositionCode().getPositionCode()); + o.setPositionCode(null); + } + if (o.getDepartmentCode() != null) { + o.setDepartmentCodeString(o.getDepartmentCode().getDepartmentCode()); + o.setDepartmentCode(null); + } +// if(o.getStatus()!=null) { +// String s = getStatus("USRST",o.getStatus()); +// if(s!=null) { +// o.setStatus(s); +// } +// } + } + return l; + } + + public AppUser addOneUser(Registration reg) { + AppUser appUser = findUserByEmail(reg.getEmail()); + if (reg.getNew_password().equals(reg.getConfirm_password())) { + +// appUser.setEmail(reg.getEmail()); + appUser.setUsername(reg.getEmail()); + + AppUserRole r = null; + if (reg.getUsrGrpId() != null) { + r = appUserRoleRepository.findById(reg.getUsrGrpId()).orElse(null); + } + + if (r != null) { + appUser.setUsrGrp(r); + } + + Sys_Accounts account = sysAccountRepo.findById(reg.getAccount_id()).orElseThrow(null); + appUser.setAccount(account); + appUser.setFullName(reg.getFirst_name() + " " + reg.getLast_name()); + appUser.setMob_no(reg.getMob_no()); + appUser.setChangePassw(reg.getNew_password()); + appUser.setUserPassw(bcryptEncoder.encode(reg.getNew_password())); + appUser.setIsComplete(true); + appUser.setActive(true); + + appUser.setAccesstype(reg.getAccesstype()); + Set strRoles = appUser.getRoles(); + Set roles = new HashSet<>(); + + if (strRoles.isEmpty()) { + String role1 = "ROLE_ADMIN"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + appUser.setRoles(roles); + } + } + + AppUser save = appUserRepository.save(appUser); +// System.out.println("saved user is .." + save); + + return save; + } + + public AppUser addOneUserCustom(User ppUser) { + AppUser appUser = new AppUser(); + appUser.setUsername(ppUser.getUsername()); + appUser.setFullName(ppUser.getFullName()); + appUser.setEmail(ppUser.getEmail()); + appUser.setUserPassw(bcryptEncoder.encode(ppUser.getPassword())); + appUser.setChangePassw(ppUser.getPassword()); + appUser.setShortName(ppUser.getFirstName()); + appUser.setUsrGrpName(ppUser.getRole()); + appUser.setAbout(ppUser.getAbout()); +// appUser.setProvider( ppUser.getProvider().name()); + appUser.setCountry(ppUser.getCountry()); + appUser.setBlocked(false); + appUser.setIsComplete(true); + appUser.setActive(true); + + appUser.setChecknumber(ppUser.getChecknumber()); + appUser.setUsrGrp(appUserRoleRepository.findById(42l).get()); + Sys_Accounts account = sysAccountRepo.findByEmail(ppUser.getEmail()); + if (account != null) { + appUser.setAccount(account); + } else { + appUser.setAccount(sysAccountRepo.findById(1l).get()); + + } + + appUser.setUsrGrp(appUserRoleRepository.findById(46l).orElse(null)); + + Set roles = new HashSet<>(); + String role1 = "ROLE_ADMIN"; + Role userRole = roleRepo.findByName(role1); + roles.add(userRole); + appUser.setRoles(roles); + if (appUserRepository.findByEmail(ppUser.getEmail()) != null) { + return null; + } + return appUserRepository.save(appUser); + } + + public Optional getOneUser(Long id) { + Optional o = appUserRepository.findById(id); + if (o.get() != null) { + // o.get().setCustomerNumer(appUserRepository.getCustomerNumber(o.get().getCustomerId())); + if (o.get().getCustomerId() != null) { + o.get().setCustomerNumer( + appUserRepository.getCustomerNumber(BigDecimal.valueOf(o.get().getCustomerId()))); + } + if (o.get().getUsrGrp() != null) { + o.get().setUsrGrpId(o.get().getUsrGrp().getUsrGrp()); + o.get().setUsrGrpName(o.get().getUsrGrp().getGroupName()); + o.get().setUsrGrp(null); + } + if (o.get().getPositionCode() != null) { + o.get().setPositionCodeString(o.get().getPositionCode().getPositionCode()); + o.get().setPositionCode(null); + } + if (o.get().getDepartmentCode() != null) { + o.get().setDepartmentCodeString(o.get().getDepartmentCode().getDepartmentCode()); + o.get().setDepartmentCode(null); + } + } + return o; + } + + @Override + public boolean insertOrSaveUser(AppUser appUser) { + // TODO Auto-generated method stub + appUserRepository.save(appUser); + return true; + } + + @Override + public List getAllUsers() { + // TODO Auto-generated method stub + List users = appUserRepository.findAll(); + // users.forEach(o->o.setCustomerNumer(appUserRepository.getCustomerNumber(o.getCustomerId()))); + return users; + } + + @Override + public List getAll() { + // TODO Auto-generated method stub + List list = new ArrayList<>(); + appUserRepository.findAll().iterator().forEachRemaining(list::add); + // list.forEach(o->o.setCustomerNumer(appUserRepository.getCustomerNumber(o.getCustomerId()))); + return list; + } + + @Override + public void delete(long id) { + appUserRepository.deleteById(id); + } + + @Override + public AppUser getByUserNameAndPassword(String username, String password) { + // TODO Auto-generated method stub + String userPassw = bcryptEncoder.encode(password); + AppUser user = appUserRepository.findByUsernameAndUserPassw(username, userPassw).orElse(null); + return user; + } + + @Override + public Optional getByUserName(String username) { + // TODO Auto-generated method stub + return appUserRepository.findByUsername(username); + } + + @Override + public AppUser getByEmail(String email) { + // TODO Auto-generated method stub + AppUser user = appUserRepository.findByEmail(email); + return user; + } + + @Override + public Optional getById(Long id) { + // TODO Auto-generated method stub + return appUserRepository.findById(id); + } + + @Override + public boolean existsByEmail(String email) { + // TODO Auto-generated method stub + return appUserRepository.existsByEmail(email); + } + + @Override + public String getLoggedInUserEmail() { + // TODO Auto-generated method stub + Authentication auth = SecurityContextHolder.getContext().getAuthentication(); + if (auth == null) { + return "noSession"; + } + return auth.getName(); + } + + @Override + public Long getLoggedInUserId() { + // TODO Auto-generated method stub + String loggedInUserEmail = this.getLoggedInUserEmail(); + AppUser appUser = appUserRepository.findByEmail(loggedInUserEmail); + Long id = appUser.getUserId(); + return id; + } + + @Override + public Long getLoggedInUserAccountId() { + // TODO Auto-generated method stub + return null; + } + + @Override + public AppUser getLoggedInUser() { + String loggedInUserName = this.getLoggedInUserEmail(); + Optional user = appUserRepository.findByUsername(loggedInUserName); +// log.info("getLoggedInUser() : {} ", user.get()); + return user.get(); + } + + @Override + public AppUser getUserInfoByUserId(Long userId) { + // TODO Auto-generated method stub + AppUser user = appUserRepository.findById(userId).orElse(null); + return user; + } + + @Override + public AppUser userResister(AppUser appUser) { + // TODO Auto-generated method stub + appUser.setUserPassw(bcryptEncoder.encode(appUser.getUserPassw())); + return appUserRepository.save(appUser); + } + + @Override + public AppUser createUserByAdmin(AppUser appUser) { + appUser.setUserPassw(bcryptEncoder.encode(appUser.getUserPassw())); + return appUserRepository.save(appUser); + } + + @Override + public boolean deleteById(Long id) { + // TODO Auto-generated method stub + if (!appUserRepository.existsById(id)) { + throw new ResourceNotFoundException("User not exists"); + } + appUserRepository.deleteById(id); + return true; + } + + @Override + public void sendEmail(String email, Long id, Long checkNo) { + // TODO Auto-generated method stub + + } + + public User userResister(User user, Long id) { + // TODO Auto-generated method stub + return null; + } + + public AppUser updateOneUser(AppUser appUser) { + return appUserRepository.save(appUser); + } + + public AppUser updateAppUserDto(Long userId, AppUserDto appUserDto) { + AppUser a = appUserRepository.findById(userId).orElse(null); + if (a != null) { + String encodedPass1 = bcryptEncoder.encode(appUserDto.getUserPassw()); + if (a.getUserPassw() != encodedPass1) { + a.setUserPassw(encodedPass1); + a.setPwdChangedCnt((long) 0); + a.setPwdChangedCnt(a.getPwdChangedCnt() + 1); + a.setLastPwdChangedDate(new Date()); + } + a.setUsername(appUserDto.getUsername() != null ? appUserDto.getUsername() : a.getUsername()); + a.setTitle(appUserDto.getTitle() != null ? appUserDto.getTitle() : a.getTitle()); + a.setShortName(appUserDto.getShortName() != null ? appUserDto.getShortName() : a.getShortName()); + a.setFullName(appUserDto.getFullName() != null ? appUserDto.getFullName() : a.getFullName()); + a.setStatus(appUserDto.getStatus() != null ? appUserDto.getStatus() : a.getStatus()); + a.setCustomerId(appUserDto.getCustomerId() != null ? appUserDto.getCustomerId() : a.getCustomerId()); + a.setEmail(appUserDto.getEmail() != null ? appUserDto.getEmail() : a.getEmail()); + a.setNotification( + appUserDto.getNotification() != null ? appUserDto.getNotification() : a.getNotification()); + + a.setMob_no(appUserDto.getMob_no()); + a.setActive(appUserDto.isActive()); + + if (appUserDto.getUsrGrpId() != null) { + if (a.getUsrGrp().getUsrGrp() != appUserDto.getUsrGrpId()) { + AppUserRole role = appUserRoleRepository.findById(appUserDto.getUsrGrpId()).orElse(null); + if (role != null) { + a.setUsrGrp(role); + } + } + } + if (appUserDto.getPositionCodeId() != null) { + if (!a.getPositionCode().getPositionCode().equals(appUserDto.getPositionCodeId())) { + AppUserPosition position = appUserPositionRepository.findById(appUserDto.getPositionCodeId()) + .orElse(null); + if (position != null) { + a.setPositionCode(position); + } + } + } + if (appUserDto.getDepartmentCodeId() != null) { + if (!a.getDepartmentCode().getDepartmentCode().equals(appUserDto.getDepartmentCodeId())) { + AppUserDepartment department = appUserDepartmentRepository + .findById(appUserDto.getDepartmentCodeId()).orElse(null); + if (department != null) { + a.setDepartmentCode(department); + } + } + } + a.setUpdateby(getLoggedInUser().getFullName()); + appUserRepository.save(a); + return a; + } + return null; + } + + public AppUser resetPassword(Long userId, String hash, String newPassword) { + AppUser a = appUserRepository.findById(userId).orElse(null); + if (a != null) { + if (a.getPassword4().equals(hash)) { + a.setUserPassw(bcryptEncoder.encode(newPassword)); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); +// a.setPassword4(null); + appUserRepository.save(a); + return a; + } + return null; + } + return null; + } + +// By Gaurav +// RESET PASSWORD WITH CONFIRM PASSWORD + + public AppUser resetPasswordnew(PasswordResetRequest p) { + AppUser a = appUserRepository.findById(p.getUserId()).orElse(null); + + if (a != null) { + if (bcryptEncoder.matches(p.getOldPassword(), a.getUserPassw())) { + + if (p.getNewPassword().equals(p.getConfirmPassword())) { + + a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(p.getNewPassword()); + + appUserRepository.save(a); + return a; + } + return null; + } + return null; + } + return null; + } + +// By Gaurav +// FORGOT PASSWORD + + public AppUser forgotpassword(PasswordResetRequest p) { + AppUser a = appUserRepository.findById(p.getUserId()).orElse(null); + + if (a != null) { + + if (p.getNewPassword().equals(p.getConfirmPassword())) { + + a.setUserPassw(bcryptEncoder.encode(p.getNewPassword())); + a.setPwdChangedCnt(a.getPwdChangedCnt() != null ? (long) 1 + a.getPwdChangedCnt() : (long) 1); + a.setLastPwdChangedDate(new Date()); + a.setChangePassw(p.getNewPassword()); + + appUserRepository.save(a); + return a; + } + return null; + } + return null; + + } + + public String generateRandomHash(int len) { + String chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk" + "lmnopqrstuvwxyz!@#$%&"; +// Random rnd = new Random(); + SecureRandom rnd = new SecureRandom(); + + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) + sb.append(chars.charAt(rnd.nextInt(chars.length()))); + return sb.toString(); + } + + public String getStatus(String tableName, String code) { + String s = appUserRepository.getStatus(tableName, code); + if (StringUtils.hasText(s)) { + return s; + } + return null; + } + + @Override + public AppUser userResister(AppUser user, Long id) { + // TODO Auto-generated method stub + return null; + } + + // method for forgot password by email + + public AppUser findUserByEmail(String email) { + AppUser user = appUserRepository.findByEmail(email); + + return user; + } + +// public void createPasswordResetTokenForUser(AppUser user, String token) { +// PasswordResetToken myToken = new PasswordResetToken(user,token); +// passwordTokenRepository.save(myToken); +// } + + public void createPasswordResetTokenForUser(AppUser user, String token) { + AppUser user1 = appUserRepository.findByEmail(user.getEmail()); + + PasswordResetToken myToken = new PasswordResetToken(token); + myToken.setUser(user1); + passwordTokenRepository.save(myToken); + } + + // ADD USER VIA ADMIN + public void adduserbyemail(AppUser user, String token, String email) { + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + + appUserRepository.save(user); + + } + +// resend otp for verification + public void resendotp(int otp, String email) { + AppUser user = findUserByEmail(email); + + user.setRandom_no(String.valueOf(otp)); + + appUserRepository.save(user); + + } + + // ADD USER VIA ADMIN + public void adduserviaadmin(AppUser user, String token, String email, Long account_id) { + Sys_Accounts accounts = sysAccountRepo.findById(account_id).orElseThrow(null); + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + user.setAccount(accounts); + + appUserRepository.save(user); + + } + + // ADD GUEST VIA ADMIN + public void addguestviaadmin(AppUser user, String token, String email, Long account_id) { + Sys_Accounts accounts = sysAccountRepo.findById(account_id).orElseThrow(null); + + user.setRandom_no(token); + user.setUsername(email); + user.setEmail(email); + user.setAccount(accounts); +// user.setAccess_duration(access_duration); +// +// Calendar c = Calendar.getInstance(); +// c.setTime(new Date()); +// c.add(Calendar.DATE, access_duration); +// +//// SimpleDateFormat dateFormat = new SimpleDateFormat(); +//// String format = dateFormat.format(c.getTime()); +// +// user.setAccess_till_date(c.getTime()); + appUserRepository.save(user); + + } + + public String validatePasswordResetToken(String token) { + final PasswordResetToken passToken = passwordTokenRepository.findByToken(token); + + return !isTokenFound(passToken) ? "invalidToken" : isTokenExpired(passToken) ? "expired" : null; + } + + private boolean isTokenFound(PasswordResetToken passToken) { + return passToken != null; + } + + private boolean isTokenExpired(PasswordResetToken passToken) { + final Calendar cal = Calendar.getInstance(); + return passToken.getExpiryDate().before(cal.getTime()); + } + + public void changeUserPassword(AppUser user, String newPassword) { + user.setUserPassw(bcryptEncoder.encode(newPassword)); + appUserRepository.save(user); + } + + public AppUser getUserByPasswordResetToken(String token) { + AppUser token2 = appUserRepository.findByToken(token); + return token2; + } + + // end method for forgot password +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java new file mode 100644 index 0000000..fa1c700 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/AppUserSessionsServiceImpl.java @@ -0,0 +1,23 @@ +package com.realnet.users.service1; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserSessions; +import com.realnet.users.repository1.AppUserSessionsRepository; + +@Service +public class AppUserSessionsServiceImpl { + private AppUserSessionsRepository appUserSessionsRepository; + @Autowired + public AppUserSessionsServiceImpl(AppUserSessionsRepository appUserSessionsRepository) { + super(); + this.appUserSessionsRepository = appUserSessionsRepository; + } + public AppUserSessions newSession(AppUserSessions appUserSessions) { + return appUserSessionsRepository.save(appUserSessions); + } + public AppUserSessions add(AppUserSessions session) { + return appUserSessionsRepository.save(session); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java new file mode 100644 index 0000000..ae759e9 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/users/service1/PositionAndDepartmentServiceImpl.java @@ -0,0 +1,37 @@ +package com.realnet.users.service1; + +import java.util.List; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.realnet.users.entity1.AppUserDepartment; +import com.realnet.users.entity1.AppUserPosition; +import com.realnet.users.repository1.AppUserDepartmentRepository; +import com.realnet.users.repository1.AppUserPositionRepository; + +@Service +public class PositionAndDepartmentServiceImpl { + private AppUserDepartmentRepository appUserDepartmentRepository; + private AppUserPositionRepository appUserPositionRepository; + @Autowired + public PositionAndDepartmentServiceImpl(AppUserDepartmentRepository appUserDepartmentRepository, + AppUserPositionRepository appUserPositionRepository) { + super(); + this.appUserDepartmentRepository = appUserDepartmentRepository; + this.appUserPositionRepository = appUserPositionRepository; + } + public List getAll(){ + return appUserDepartmentRepository.findAll(); + } + public List getAllPosition(){ + return appUserPositionRepository.findAll(); + } + public Optional getOne(String departmentCode){ + return appUserDepartmentRepository.findById(departmentCode); + } + public Optional getOnePosition(String positionCode){ + return appUserPositionRepository.findById(positionCode); + } +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java new file mode 100644 index 0000000..b93f5e1 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Constant.java @@ -0,0 +1,283 @@ +package com.realnet.utils; + +public final class Constant { + + // SORT BY + public final static String SORT_BY_CREATION_DATE = "createdAt"; + public final static String SORT_BY_CREATION_DATE_NATIVE_QUERY = "created_at"; + + // --------------------------------------Error Type + public final static String ERROR_TYPE_HIBERNATE = "Hibernate Exception"; + public final static String ERROR_TYPE_DB = "Database Exception"; + public final static String ERROR_TYPE_EXCEPTION = "Other Exception"; + public final static String ERROR_TYPE_CONTROLLER = "Controller Exception"; + public final static String ERROR_TYPE_HTTP = "HTTP Error"; + + public final static String NOT_FOUND_EXCEPTION = "Data Not Found "; + public final static String NOT_EXIST_EXCEPTION = "Data Not Exist "; + + // --------------------------------------Error Status + public final static String ERROR_LEVEL_FAILURE = "Failure"; + public final static String ERROR_LEVEL_SUCCESS = "Success"; + + // --------------------------------------DB Error Code + public final static int ERROR_CODE_SERVER = 404; + public final static int ERROR_CODE_SERVER_AUTH = 401; + public final static int ERROR_CODE_DB = 500; + public final static int ERROR_CODE_DATA = 201; + public final static int SUCCESS_CODE = 200; + public final static int ERROR_CODE_VALIDATION = 301; + public final static int ERROR_CODE_VERYFICATION = 403; + + // --------------------------------------REAL IT API RESPONSE MESSEGES + public final static String EXTRACTOR_API_TITLE = "Extractor"; + public final static String EXTRACTOR_CREATED_SUCCESSFULLY = "Extractor added Successfully !"; + public final static String EXTRACTOR_UPDATED_SUCCESSFULLY = "Extractor updated Successfully !"; + public final static String EXTRACTOR_DELETED_SUCCESSFULLY = "Extractor deleted Successfully !"; + public final static String EXTRACTOR_NOT_DELETED = "Extractor not deleted"; + public final static String EXTRACTOR_NOT_CREATED = "Extractor not Added !"; + public final static String EXTRACTOR_NOT_UPDATED = "Extractor not updated !"; + + + public final static String STATIC_EXTRACTION_SUCCESS = "Static Extraction Completed !"; + public final static String DYNAMIC_EXTRACTION_SUCCESS = "Dynamic Extraction Completed !"; + public final static String STATIC_EXTRACTION_FAILED = "Static Extraction Failed !"; + public final static String DYNAMIC_EXTRACTION_FAILED = "Dynamic Extraction Failed !"; + + // RULE + public final static String RULE_LIBRARY_API_TITLE = "Rule Library"; + public final static String RULE_CREATED_SUCCESSFULLY = "Rule added Successfully !"; + public final static String RULE_UPDATED_SUCCESSFULLY = "Ruler updated Successfully !"; + public final static String RULE_DELETED_SUCCESSFULLY = "Rule deleted Successfully !"; + public final static String RULE_NOT_DELETED = "Rule not deleted"; + public final static String RULE_NOT_CREATED = "Rule not Added !"; + public final static String RULE_NOT_UPDATED = "Rule not updated !"; + + // EXCEPTION RULE + public final static String EXCEPTION_RULE_LIBRARY_API_TITLE = "Exception Rule Library"; + public final static String EXCEPTION_RULE_CREATED_SUCCESSFULLY = "Exception Rule added Successfully !"; + public final static String EXCEPTION_RULE_UPDATED_SUCCESSFULLY = "Exception Rule updated Successfully !"; + public final static String EXCEPTION_RULE_DELETED_SUCCESSFULLY = "Exception Rule deleted Successfully !"; + + public final static String EXCEPTION_RULE_NOT_DELETED = "Exception Rule not deleted"; + public final static String EXCEPTION_RULE_NOT_CREATED = "Exception Rule not Added !"; + public final static String EXCEPTION_RULE_NOT_UPDATED = "Exception Rule not updated !"; + + // TECHNOLOGY STACK + public final static String TECHNOLOGY_STACK_API_TITLE = "Technology Stack"; + public final static String TECHNOLOGY_STACK_CREATED_SUCCESSFULLY = "Technology Stack saved Successfully !"; + public final static String TECHNOLOGY_STACK_UPDATED_SUCCESSFULLY = "Technology Stack updated Successfully !"; + public final static String TECHNOLOGY_STACK_DELETED_SUCCESSFULLY = "Technology Stack deleted Successfully !"; + public final static String TECHNOLOGY_STACK_NOT_DELETED = "Technology Stack not deleted"; + public final static String TECHNOLOGY_STACK_NOT_CREATED = "Technology Stack not Added !"; + public final static String TECHNOLOGY_STACK_NOT_UPDATED = "Technology Stack not updated !"; + public final static String UNZIP_EXCEPTION = "There is a problem while Unziping"; + + // PROJECT SETUP + public final static String PROJECT_SETUP_API_TITLE = "Project Setup"; + public final static String PROJECT_CREATED_SUCCESSFULLY = "Project saved Successfully !"; + public final static String PROJECT__UPDATED_SUCCESSFULLY = "Project updated Successfully !"; + public final static String PROJECT_DELETED_SUCCESSFULLY = "Project deleted Successfully !"; + public final static String PROJECT_NOT_DELETED = "Project not deleted"; + public final static String PROJECT_NOT_CREATED = "Project not Added !"; + public final static String PROJECT_NOT_UPDATED = "Project not updated !"; + public final static String PROJECT_COPY_SUCCESS = "Project Copy Success !"; + public final static String PROJECT_COPY_FAILURE = "Project Copy Failed !"; + + // MODULE SETUP + public final static String MODULE_SETUP_API_TITLE = "Module Setup"; + public final static String MODULE_CREATED_SUCCESSFULLY = "Module saved Successfully !"; + public final static String MODULE_UPDATED_SUCCESSFULLY = "Module updated Successfully !"; + public final static String MODULE_DELETED_SUCCESSFULLY = "Module deleted Successfully !"; + public final static String MODULE_NOT_DELETED = "Module not deleted"; + public final static String MODULE_NOT_CREATED = "Module not Added !"; + public final static String MODULE_NOT_UPDATED = "Module not updated !"; + public final static String MODULE_COPY_SUCCESS = "Module Copy Success !"; + public final static String MODULE_COPY_FAILURE = "Module Copy Failed !"; + + // WIREFRAME APIS + public final static String WIREFRAME_API_TITLE = "Wireframe Setup"; + public final static String WIREFRAME_CREATED_SUCCESSFULLY = "Wireframe saved Successfully !"; + public final static String WIREFRAME_UPDATED_SUCCESSFULLY = "Wireframe updated Successfully !"; + public final static String WIREFRAME_DELETED_SUCCESSFULLY = "Wireframe deleted Successfully !"; + public final static String WIREFRAME_NOT_DELETED = "Wireframe not deleted"; + public final static String WIREFRAME_NOT_CREATED = "Wireframe not Added !"; + public final static String WIREFRAME_NOT_UPDATED = "Wireframe not updated !"; + + //REPORT APIS + public final static String REPORT_API_TITLE = "report Setup"; + public final static String REPORT_CREATED_SUCCESSFULLY = "Report saved Successfully !"; + public final static String REPORT_UPDATED_SUCCESSFULLY = "Report updated Successfully !"; + public final static String REPORT_DELETED_SUCCESSFULLY = "Report deleted Successfully !"; + public final static String REPORT_NOT_DELETED = "Report not deleted"; + public final static String REPORT_NOT_CREATED = "Report not Added !"; + public final static String REPORT_NOT_UPDATED = "Report not updated !"; + + + + public final static String WIREFRAME_BUTTON_ADDED = "Wireframe Button Added !"; + public final static String WIREFRAME_SECTION_ADDED = "Wireframe Section Added !"; + public final static String WIREFRAME_FIELD_ADDED_IN_SECTION = "Wireframe Field Added In Section !"; + public final static String WIREFRAME_FIELD_NOT_ADDED_IN_SECTION = "Wireframe Field Not Added"; + public final static String WIREFRAME_FIELD_NAME_CHANGE_SUCCESS = "Wireframe Field Name Changed"; + public final static String WIREFRAME_FIELD_NAME_CHANGE_FAILURE = "Wireframe Field Name Not Changed"; + public final static String WIREFRAME_COPY_SUCCESS = "Wireframe Copy Success !"; + public final static String WIREFRAME_COPY_FAILURE = "Wireframe Copy Failed !"; + + public final static String WIREFRAME_SECTION_DELETE_SUCCESS = "Section Deleted Successfully !"; + public final static String WIREFRAME_SECTION_DELETE_FAILURE = "Section Deletion Failure !"; + public final static String WIREFRAME_FIELD_DELETE_SUCCESS = "Section Deleted Successfully !"; + public final static String WIREFRAME_FIELD_DELETE_FAILURE = "Section Deletion Failure !"; + + // LOOKUP + public final static String LOOKUP_API_TITLE = "Lookup"; + public final static String LOOKUP_CREATED_SUCCESSFULLY = "Lookup saved Successfully !"; + public final static String LOOKUP_UPDATED_SUCCESSFULLY = "Lookup updated Successfully !"; + public final static String LOOKUP_DELETED_SUCCESSFULLY = "Lookup deleted Successfully !"; + public final static String LOOKUP_NOT_DELETED = "Lookup not deleted"; + public final static String LOOKUP_NOT_CREATED = "Lookup not Added !"; + public final static String LOOKUP_NOT_UPDATED = "Lookup not updated !"; + + // ACTION BUILDER + public final static String ACTION_BUILDER_API_TITLE = "Action Builder"; + public final static String ACTION_CREATED_SUCCESSFULLY = "Action saved Successfully !"; + public final static String ACTION_UPDATED_SUCCESSFULLY = "Action updated Successfully !"; + public final static String ACTION_DELETED_SUCCESSFULLY = "Action deleted Successfully !"; + public final static String ACTION_NOT_DELETED = "Action not deleted"; + public final static String ACTION_NOT_CREATED = "Action not Added !"; + public final static String ACTION_NOT_UPDATED = "Action not updated !"; + public final static String ACTION_CFF_LAYOUT_SUCCESS = "Layout Created Successfully!"; + public final static String ACTION_CFF_LAYOUT_FAILURE = "Layout Not Created!"; + public final static String ACTION_CFF_DATA_SUCCESS = "Data Added Successfully!"; + public final static String ACTION_CFF_DATA_FAILURE = "Data Not Added!"; + + // MASTER BUILDER CONTROLLER + public final static String MASTER_BUILDER_API_TITLE = "Master Builder"; + public final static String MASTER_BUILDER_SUCCESS = "Master Builder created Successfully!"; + public final static String MASTER_BUILDER_FAILURE = "Master Builder Not Created!"; + + // FORM BUILDER + public final static String FORM_BUILDER_API_TITLE = "Form Builder"; + public final static String FORM_BUILD_SUCCESS = "Form created Successfully!"; + public final static String FORM_BUILD_FAILURE = "Form Not Created!"; + public final static String FORM_DELETE_SUCCESS = "Form Deleted!"; + public final static String FORM_DELETE_FAILURE = "Form Not Delete!"; + + // QUERY BUILDER + public final static String QUERY_API_TITLE = "Create Query"; + public final static String QUERY_CREATE_SUCCESS = "Table created Successfully!"; + public final static String QUERY_CREATE_FAILURE = "Table Not Created!"; + + // FILE OPERATION + public final static String FILE_OPERATION_API_TITLE = "File Operation"; + public final static String FILE_CODE_SAVE_SUCCESSFULLY = "Code Save Successfully!"; + public final static String FILE_NOT_FOUND_EXCEPTION = "File Not Found!"; + public final static String FILE_CODE_SAVE_FAILURE = "Code Not Saved!"; + public final static String FILE_LIST_API_TITLE = "File List"; + public final static String FILE_LIST_IS_EMPTY = "File List Is Empty"; + + // FLF + public final static String FLF_API_TITLE = "FLF"; + public final static String FLF_CREATED_SUCCESSFULLY = "FLF saved Successfully !"; + public final static String FLF_UPDATED_SUCCESSFULLY = "FLF updated Successfully !"; + public final static String FLF_DELETED_SUCCESSFULLY = "FLF deleted Successfully !"; + public final static String FLF_NOT_DELETED = "FLF not deleted"; + public final static String FLF_NOT_CREATED = "FLF not Added !"; + public final static String FLF_NOT_UPDATED = "FLF not updated !"; + + + + + // --------------------------------------Success another + public final static String USER_ADDED_SUCCESSFULLY = "User added Successfully !"; + public final static String USER_INFO_UPDATED_SUCCESSFULLY = "User info update successfully !"; + public final static String ERROR_MESSAGE_SAME_OLD_NEW_PWD = "Old and New Password are same"; + public final static String USER_DOES_NOT_EXIST = "UserName does not exist."; + public final static String USER_DELETE_TITLE = "User Deleted"; + public final static String USER_DELETED_SUCCESSFULLY = "User deleted Successfully !"; + public final static String ERROR_MESSAGE_AUTH_FAILED = "Authentication failed"; + public final static String ERROR_MESSAGE_USER_NAME_AND_PASS = "Please check username and password"; + public final static String USER_LOFOUT_TITLE = "Auth Session"; + public final static String USER_LOG_OUT_SUCCESSFULLY = "User Loged Out successfully !"; + public final static String ERROR_LOG_OUT_MESSAGE = "Session does not exist."; + public final static String ERROR_MOBILE_NO_VERIFICATION = "Mobile number is not register."; + public final static String VERYFICATION_CODE_ACCEPTED = "Code accepted. Phone now marked verified"; + public final static String ERROR_VERYFICATION_MESSAGE = "Code not accepted or Invalide OTP"; + public final static String PROFILE_PIC_ADDED_SUCCESSFULLY = "Pic added Successfully !"; + public final static String ERROR_PROFILE_PIC_FAILED_TO_UPLOAD = "Pic failed to add."; + public final static String FAILED_TO_DELETED_USER = "User info does not exist."; + public final static String PICTURE_TITLE = "Picture"; + +// public final static String PROFILE_PIC_DELETED_SUCCESSFULLY = "Pic delted Successfully !"; +// public final static String PROFILE_API_TITLE = "Profile Pic"; +// public final static String ERROR_PROFILE_PIC_FAILED_TO_DELETE = "Profile Picture does not exist"; +// +// public final static String CONTACT_API_TITLE = "Contacts Uploaded"; +// public final static String CONTACTS_UPLOADED_SUCCESS_MESSAGE = "Contacts uploaded successfully !"; +// public final static String FAILED_TO_UPLOADED_CONTACTS = "Failed to uploaded contacts"; +// +// public final static String GROUP_WITH_USERS_CREATED_SUCCESSFULLY = "Group with users created Successfully !"; +// public final static String FAILED_TO_CREATE_GROUP_WITH_USERS = "Failed to create group with users."; +// +// public final static String GROUP_API_TITLE = "Group"; +// public final static String GROUP_NOT_FOUND_MSG = "There is no any group."; +// public final static String GROUP_CREATED_SUCCESSFULLY_MESSAGE = "Group added Successfully !"; +// public final static String FAILED_TO_CREATE_GROUP_MESSAGE = "Failed to create group."; +// public final static String GROUP_NAME_UPDATED_SUCCESSFULLY = "Group name updated Successfully !"; +// public final static String FAILED_TO_UPDATE_GROUP_NAME_MESSAGE = "Failed to upload group name."; +// public final static String USER_DELETED_FROM_GROUP_SUCCESSFULLY = "User deleted from group Successfully !"; +// public final static String FAILED_TO_DELETE_USER_FROM_GROUP = "Failed to delete user from group."; +// public final static String GROUP_DELETED_SUCCESSFULLY = "User deleted from group Successfully !"; +// public final static String FAILED_TO_DELETE_GROUP = "Failed to delete group."; +// +// public final static String CHAT_MESSAGE_TITLE = "Message"; +// public final static String MESSAGE_SEND_SUCCESSFULLY = "Message sent Successfully !"; +// public final static String FAILED_TO_SEND_MESSAGE = "Failed to send message."; +// public final static String FAILED_TO_DELETE_MESSAGE = "Failed to Delete"; +// +// public final static String NOTIFICATIONS_MESSAGE_TITLE = "Notification"; +// public final static String NOTIFICATIONS_MESSAGE_SET_SUCCESSFULLY = "Notifications preferences set successfully !"; +// public final static String NOTIFICATIONS_FAILED_TO_SET_MESSAGE = "Failed to set preferences."; +// +// public final static String SOCIAL_MESSAGE_TITLE = "Social Network"; +// public final static String SOCIAL_FAILED_TO_SET_MESSAGE = "Failed to link social network site."; +// +// public final static String LIVE_LOCATION_MESSAGE_TITLE = "Live Location"; +// public final static String LIVE_LOCATION_FAILED_TO_SET_MESSAGE = "Failed to set current location."; +// public final static String LIVE_LOCATION_FAILED_TO_GET_MESSAGE = "There is no active sharing sessions."; +// public final static String LIVE_LOCATION_DELETED = "Current live location sharing session deleted."; + + public final static String PIC_UPLOADED_TITLE = "Profile Picture"; + public final static String PIC_UPLOAD_FAILED = "You failed to upload "; + + public final static String PICTURE_CATEGORY = "full"; + public final static String IMAGE_STORAGE_PATH = "D:\\image\\cyooTempFiles\\"; + + public final static String USER_TITLE = "User"; + public final static String USER_NAME_EMAIL_IN_USE = "Username/Email already taken."; + public final static String USER_NAME_EMAIL_NOT_IN_USE = "Username/Email not taken."; + public final static String EMAIL_ID_IN_USE = "Email already taken."; + public final static String USER_NOT_IN_USE = "Username not taken."; + public final static String EMAIL_NOT_IN_USE = "Email not taken."; + + // ======================================================================================== + + /* + * Group group = new Group(); group.setGroupId(2); + * group.setGroupName("friends"); group.setCreatedBy("Munta"); + * group.setCreatedDateTime("2014-11-22 12:45:34"); group.setIsDelete(0); + * + * Set grList = new HashSet(); + * + * GroupUser groupUser = new GroupUser(); groupUser.setId(1); + * groupUser.setGroupId(4); groupUser.setUserName("Jake4"); + * groupUser.setAddedDateTime("2014-11-22 12:45:34"); grList.add(groupUser); + * + * groupUser = new GroupUser(); groupUser.setId(5); groupUser.setGroupId(2); + * groupUser.setUserName("Jake5"); + * groupUser.setAddedDateTime("2014-11-22 12:45:34"); grList.add(groupUser); + * + * group.setGroupUserList(grList); + */ + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java new file mode 100644 index 0000000..43df63a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/Port_Constant.java @@ -0,0 +1,23 @@ +package com.realnet.utils; + +public class Port_Constant { + + + + public final static String LOCAL_HOST = "43.205.154.152"; + public final static String FRONTEND_PORT_9191 = "30165"; + + + + public final static String GITEA_IP_ADDRESS = "try.gitea"; + public final static String GITEA_PORT = "io"; + public final static String SURE_VAULT_DOMAIN = "http://34.198.218.30:30150"; + public final static String SUREVAULT_DEPLOYMENT_TYPE ="32"; + public static String FRONTEND_PORTAL_DOMAIN; + + + + + + +} diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java new file mode 100644 index 0000000..542e305 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/java/com/realnet/utils/WireFrameConstant.java @@ -0,0 +1,54 @@ +package com.realnet.utils; + +public class WireFrameConstant { + + public static enum FormType { + header_only, + line_only, + header_line, + multiline + } + + public static final String HEADER_ONLY = "header_only"; + public static final String LINE_ONLY = "line_only"; + public static final String HEADER_LINE = "header_line"; + public static final String MULTILINE = "multiline"; + + public static final String HEADER_TYPE = "header"; + public static final String LINE_TYPE = "line"; + + public static final String ID = "id"; + public static final String DT_PK = "PRI"; + public static final String DT_INTEGER = "int"; + public static final String DT_DOUBLE = "double"; + public static final String DT_LONGTEXT = "longtext"; + public static final String DT_VARCHAR = "varchar"; + public static final String DT_DATE_TIME = "datetime"; + public static final String DT_NULL = "N"; + + public static final String SECTION = "section"; + public static final String LINE_SECTION = "line_section"; + public static final String LABEL = "label"; + public static final String COLUMN = "column"; + public static final String BUTTON = "button"; + + + + public static final String DT_TEXTFIELD = "textfield"; + public static final String DT_LINE_TEXTFIELD = "l_textfield"; +// public static final String DT_LONGTEXT = "longtext"; + public static final String DT_DATE = "date"; + public static final String FIELD_CHECKBOX = "checkbox"; + public static final String FIELD_RADIOBUTTON = "radiobutton"; + public static final String FIELD_AUTOCOMPLETE = "autocomplete"; + + public static final String BASIC = "basic"; + public static final String ADDITIONAL = "addtional"; + + public static final String DT_MULTISELECT = "multiselect"; + + + + +} + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/MyprojectUI_view.properties b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/MyprojectUI_view.properties new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/application.properties b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/application.properties new file mode 100644 index 0000000..09e8dbf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/application.properties @@ -0,0 +1,97 @@ +# File is used by sprigboot +server.contextPath=/* +server.port=9292 +spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/webui/ + +spring.banner.location=classpath:banner_txt.txt + +#Temporary disable security to enable it remove this +#security.ignored=/** + +springfox.documentation.swagger.v2.path=/api-docs +spring.jackson.date-format=yyyy-MM-dd + + + +System.Net.ServicePointManager.Expect100Continue = false; + +#spring.jpa.hibernate.ddl-auto=none +#spring.jpa.hibernate.ddl-auto=update +#spring.datasource.continue-on-error=false + +# **** MY SQL DATABASE CONNECTION **** + +spring.datasource.url=jdbc:mysql://realnet.cdas4e08uugj.us-east-1.rds.amazonaws.com:3306/realnet_CNSBENEW?createDatabaseIfNotExist=true +spring.datasource.username=cnsdev +spring.datasource.password=cnsdev2407 + +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect +# Prefix Path + +#spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.proc.param_null_passing=true + +# **********paytm dependency ****** +razorpay.api.key=rzp_test_xVnrBUjJWTEH0r +razorpay.api.secret=evTXkIFcgpVtiLa1P7M7CIox + +#***** MAIL SENDER +spring.mail.host=smtp.gmail.com +spring.mail.username=realitmailsender@gmail.com +spring.mail.password=epnmhzsccotnyozf +spring.mail.port=587 +#spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.required=true + +# JACKSON +spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false + + +spring.mail.properties.mail.smtp.auth = true +spring.mail.properties.mail.smtp.socketFactory.port = 465 +spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory +spring.mail.properties.mail.smtp.socketFactory.fallback = false + +#******* MULTIPART RESOLVER +spring.servlet.multipart.enabled=true +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=100MB + +#***************OAUTH2 SOCIAL LOGIN ********* +# Social login provider props +spring.security.oauth2.client.registration.google.clientId=437023664181-0lm0ipgip3qbhga4nd7o4128jv4g2nv9.apps.googleusercontent.com +spring.security.oauth2.client.registration.google.clientSecret=I1HPyUqdJ9UONu45W1_wwfww +spring.security.oauth2.client.registration.google.scope=profile, email + + +spring.security.oauth2.client.registration.linkedin.clientId= +spring.security.oauth2.client.registration.linkedin.clientSecret= +spring.security.oauth2.client.registration.linkedin.client-authentication-method=post +spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code +spring.security.oauth2.client.registration.linkedin.scope=r_liteprofile, r_emailaddress +spring.security.oauth2.client.registration.linkedin.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} +spring.security.oauth2.client.registration.linkedin.client-name=Linkedin +spring.security.oauth2.client.registration.linkedin.provider=linkedin +spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization +spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken +spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me +spring.security.oauth2.client.provider.linkedin.user-name-attribute=id +linkedin.email-address-uri=https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)) +app.auth.tokenSecret=926D96C90030DD58429D2751AC1BDBBC +app.auth.tokenExpirationMsec=864000000 + # After successfully authenticating with the OAuth2 Provider, + # we'll be generating an auth token for the user and sending the token to the + # redirectUri mentioned by the frontend client in the /oauth2/authorization request. + # We're not using cookies because they won't work well in mobile clients. +app.oauth2.authorizedRedirectUris=http://localhost:8081/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect + + +projectPath=@project.basedir@ +angularProjectPath=@project.basedir@/webui + + diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/banner_txt.txt b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/banner_txt.txt new file mode 100644 index 0000000..5c9c817 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/banner_txt.txt @@ -0,0 +1,11 @@ +******************************************************************* +******************************************************************* + __ _ ____ __ __ __ + / \ \ | |__****** / ___| **** ****_ \ \ \ \ \ \ + / / \ \ | '_ \ / _ \ \___ \| | | | '__|/ _ \ \ \ \ \ \ \ + \ \ / / | |_) | __/ ___) | |_| | | | __/ / / / / / / + \ /_/ |_.__/ \___| |____/ \__,_|_| \___| /_/ /_/ /_/ + *** *** ***** +******************************************************************* +::SPRING BOOT:: CNS Version::v1.1.0 RELEASE +******************************************************************* \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/data.sql b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/data.sql new file mode 100644 index 0000000..77daec5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/data.sql @@ -0,0 +1,2023 @@ +/* Instructor */ +insert into RN_INSTRUCTOR (ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_AT, UPDATED_AT) values + (1, 'rajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (2, 'sandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (3, 'niladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (4, 'abhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (5, 'sayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (6, 'titas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (7, 'dip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (8, 'asif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (9, 'anushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (10, 'trisha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (11, 'avijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (12, 'dona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (13, 'disha', 'maitra', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (14, 'sasa', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (15, 'vvvv', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (16, 'qqqq', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (17, 'saaaaayasndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (18, 'lllll', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (19, 'kkkkk', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (20, 'ffffff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (21, 'rajaaQdesep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (22, 'sandaaQipsan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (23, 'nilaaQadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (24, 'abQhaaishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (25, 'sayanaadeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (26, 'tiaatas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (27, 'dittp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (28, 'attsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (29, 'anutttshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (30, 'trigggsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (31, 'avijgggit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (32, 'dogggna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (33, 'rgggajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (34, 'sangggdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (35, 'nifgfladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (36, 'abhisfgfhek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (37, 'safgfgyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (38, 'titfgfas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (39, 'dfgfip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (40, 'asifgff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (41, 'fggfrajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (42, 'fgfgsandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (43, 'ncxilgbgadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (44, 'adghghbhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (45, 'sayandhyyueep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (46, 'teritas', 'mereaity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (47, 'dipere', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (48, 'asifcc', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (49, 'anushrccee', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (50, 'trishawww', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (51, 'avijiqqt', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (52, 'qqqdona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (53, 'rajqqqdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (54, 'sandipqqqqan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (55, 'niladriwww', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (56, 'abhishewwwk', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (57, 'sayandeepbbb', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (58, 'tbbbitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (59, 'dbbbip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (60, 'asbbbif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (61, 'rajdeAFep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (62, 'sanSDFipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (63, 'nilaSDFdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (64, 'abhiSDFshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (65, 'sayaSDndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (66, 'tiAStas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (67, 'diASp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (68, 'aASsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (69, 'anuASshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (70, 'triASsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (71, 'avASCijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (72, 'donVa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (73, 'rajCVdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (74, 'saVndipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (75, 'nilVadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (76, 'abChishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (77, 'saCyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (78, 'titCas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (79, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (80, 'asCif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (81, 'rajdeCep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (82, 'saSndCipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (83, 'nilCadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (84, 'abhSCshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (85, 'saSyCandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (86, 'titSasCE', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (87, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (88, 'asEif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (89, 'anEushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (90, 'triEsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (91, 'avEijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (92, 'donEa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (93, 'raEjdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (94, 'sanEdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (95, 'niladEri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (96, 'abhEishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (97, 'sayEandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (98, 'tEitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (99, 'dEip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (100, 'aEsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (101, 'rajSSdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (102, 'sandSSipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (103, 'nilaLSSdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (104, 'abLhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (105, 'saLyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (106, 'tLitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (107, 'diLp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (108, 'aLsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (109, 'anLushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (110, 'triLsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (111, 'aviLjit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (112, 'doLna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (113, 'rajLdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (114, 'sandLipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (115, 'niULladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (116, 'aLbhUishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (117, 'sLLUayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (118, 'tiLUtas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (119, 'diUp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (120, 'asUif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'); + + +/* User */ +insert into user (user_id, password, first_name, last_name, email, company, phone, address1, address2, country, postal, role, is_active, is_blocked, security_provider_id, default_customer_id, secret_question, secret_answer, enable_beta_testing, enable_renewal) values +('demo' , 'demo' , 'Mrinmoy' , 'Majumdar', 'arivera2@joomla.org' , 'Abshire Inc', '7-(740)701-4547', '80429 Garrison Crossing', '4967' , 'USA' , '64890', 'USER' , 1, 0, 10001, 20000, 'Diverse' , 'Yellow' , 0, 0), +('admin' , '$2b$10$AkngMoFbJhllHomzUFdwAehsPzbHxY31XXtWTr0Cnpo9OYs7enn0q' , 'Theresa' , 'Russell' , 'trussell1@about.me' , 'Glover, Adams and Bins', '383-(779)851-3208', '30874 Graceland Terrace', '99152' , 'USA' , '51065', 'ADMIN', 1, 0, 10001, 20000, 'knowledge base', 'Mauv' , 1, 0), +('user' , '$2b$10$AK/siGGl4ITIq0dZHDck0uAyLJHkGPOeLBSAyUL8j5OU5vlf79wjq' , 'Virginia' , 'Reynolds', 'vreynolds0@slashdot.org', 'Rippin, Osinski and Beatty', '84-(228)809-9998', '0118 Burrows Plaza', '496' , 'USA' , '94086', 'USER' , 1, 0, 10001, 20000, 'Innovative' , 'Turquoise', 1, 1), +('jowens3' , 'jowens3' , 'Judy' , 'Owens' , 'jowens3@hp.com' , 'Altenwerth, Fisher and Heidenreich', '30-(772)268-8227', '98 Loeprich Way', '447', 'Greece' , null , 'USER' , 0, 0, 10001, 20001, 'capacity' , 'Fuscia' , 1, 1), +('kburns4' , 'kburns4' , 'Kelly' , 'Burns' , 'kburns4@icio.us' , 'McCullough-Morar', '86-(857)185-5740', '1638 Basil Alley', '56297' , 'China' , null , 'ADMIN', 1, 0, 10000, 20002, 'user-facing' , 'Crimson', 1, 1), +('jshaw5' , 'jshaw5' , 'Julie' , 'Shaw' , 'jshaw5@opera.com' , 'Steuber-Okuneva', '1-(871)375-6188', '389 Myrtle Pass', '41444' , 'Canada' , null , 'ADMIN', 1, 1, 10000, 20000, 'software' , 'Green' , 0, 1), +('pgilbert6' , 'pgilbert6', 'Peter' , 'Gilbert' , 'pgilbert6@eepurl.com' , 'Robel Inc', '52-(372)555-4687', '11522 Fuller Avenue', '5' , 'Mexico' , '39230', 'ADMIN', 1, 1, 10000, 20000, 'multi-state' , 'Puce' , 1, 1), +('jjacobs7' , 'jjacobs7' , 'Justin' , 'Jacobs' , 'jjacobs7@google.co.uk' , 'Harris-Bashirian', '963-(199)359-2552', '95012 Hanover Street', '2377' , 'India' , null , 'USER' , 1, 0, 10000, 20002, 'motivating' , 'Crimson', 1, 0), +('kbennett8' , 'kbennett8', 'Kevin' , 'Bennett' , 'kbennett8@hostgator.com', 'Leannon Inc', '62-(892)710-5713', '459 Coleman Drive', '397' , 'Indonesia' , null , 'ADMIN', 0, 0, 10001, 20000, 'Exclusive' , 'Purple' , 1, 1), +('cmurphy9' , 'cmurphy9' , 'Chris' , 'Murphy' , 'cmurphy9@over-blog.com' , 'Mosciski LLC', '64-(272)961-0086', '2 Ludington Point', '7' , 'New Zealand', null , 'ADMIN', 0, 1, 10000, 20000, 'empowering' , 'Maroon' , 0, 1); + +/* Employees */ +insert into employees (id, last_name, first_name, email, phone, address1, address2, city, state, postal_code, country, avatar, job_title, department, manager_id) values + (201, 'Harris' , 'George' , 'gharris0@pagesperso-orange.fr', '1-(210)270-8536', '2 Bayside Drive', null, 'San Antonio', 'Texas', '78240', 'United States', 'https://robohash.org/modilaboriosammolestiae.bmp?size=50x50&set=set1', 'Administrative Assistant I', 'Toys', null) +,(202, 'Hayes' , 'Rachel' , 'rhayes1@si.edu', '1-(971)797-2729', '30 Anhalt Street', null, 'Portland', 'Oregon', '97232', 'United States', 'https://robohash.org/seddistinctiodolorem.jpg?size=50x50&set=set1', 'Design Engineer', 'Books', null) +,(203, 'Palmer' , 'Anthony', 'apalmer2@posterous.com', '1-(702)984-2108', '02809 4th Pass', null, 'North Las Vegas', 'Nevada', '89036', 'United States', 'https://robohash.org/vitaererumdolore.png?size=50x50&set=set1', 'Health Coach II', 'Toys', null) +,(204, 'Alvarez' , 'Laura' , 'lalvarez3@time.com', '1-(518)328-2658', '647 Lakeland Road', null, 'Albany', 'New York', '12210', 'United States', 'https://robohash.org/nobisplaceatquisquam.jpg?size=50x50&set=set1', 'Computer Systems Analyst II', 'Health', null) +,(205, 'Reynolds', 'Annie' , 'areynolds4@nasa.gov', '1-(775)838-2203', '163 Carey Street', null, 'Reno', 'Nevada', '89550', 'United States', 'https://robohash.org/praesentiumdoloremrerum.png?size=50x50&set=set1', 'Senior Quality Engineer', 'Kids', null) +,(206, 'Henry' , 'Joe' , 'jhenry5@bbb.org', '1-(682)563-2229', '1 Harper Circle', null, 'Fort Worth', 'Texas', '76178', 'United States', 'https://robohash.org/earumiurevoluptas.jpg?size=50x50&set=set1', 'Chief Design Engineer', 'Electronics', null) +,(207, 'Willis' , 'Willie' , 'wwillis6@berkeley.edu', '1-(317)654-6888', '641 Kropf Parkway', null, 'Indianapolis', 'Indiana', '46216', 'United States', 'https://robohash.org/suntsitnecessitatibus.png?size=50x50&set=set1', 'Structural Analysis Engineer', 'Shoes', null) +,(208, 'Lawrence', 'Keith' , 'klawrence7@discovery.com', '1-(501)583-8851', '2184 Melby Crossing', null, 'Little Rock', 'Arkansas', '72222', 'United States', 'https://robohash.org/delenitiomnisconsequatur.jpg?size=50x50&set=set1', 'VP Quality Control', 'Outdoors', null) +,(209, 'Johnston', 'Tina' , 'tjohnston8@alexa.com', '1-(901)128-9976', '72 Hauk Road', null, 'Memphis', 'Tennessee', '38114', 'United States', 'https://robohash.org/voluptasautmaiores.png?size=50x50&set=set1', 'Assistant Media Planner', 'Electronics', null) +,(210, 'Burns' , 'Lisa' , 'lburns9@taobao.com', '1-(585)113-8402', '99 Manufacturers Drive', null, 'Rochester', 'New York', '14624', 'United States', 'https://robohash.org/illumsinttempore.jpg?size=50x50&set=set1', 'Operator', 'Industrial', null) +,(211, 'Stone' , 'Howard' , 'hstonea@ucsd.edu', '1-(202)958-2516', '03 Anthes Center', null, 'Washington', 'District of Columbia', '20425', 'United States', 'https://robohash.org/eautet.bmp?size=50x50&set=set1', 'Account Executive', 'Electronics', null) +,(212, 'Brown' , 'Julie' , 'jbrownb@squidoo.com', '1-(217)741-6449', '37574 4th Drive', null, 'Springfield', 'Illinois', '62705', 'United States', 'https://robohash.org/laborumtotameveniet.png?size=50x50&set=set1', 'Analog Circuit Design manager', 'Electronics', null) +,(213, 'Turner' , 'Edward' , 'eturnerc@theatlantic.com', '1-(701)353-1996', '3 Bultman Circle', null, 'Fargo', 'North Dakota', '58122', 'United States', 'https://robohash.org/sedutporro.png?size=50x50&set=set1', 'Structural Engineer', 'Computers', null) +,(214, 'Nichols' , 'Douglas', 'dnicholsd@fda.gov', '1-(302)771-6486', '5150 Holmberg Way', null, 'Wilmington', 'Delaware', '19805', 'United States', 'https://robohash.org/blanditiiscommodiet.png?size=50x50&set=set1', 'Editor', 'Outdoors', null) +,(215, 'Gilbert' , 'Jessica', 'jgilberte@infoseek.co.jp', '1-(320)607-0289', '32 Summit Park', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/providentaccusamussed.bmp?size=50x50&set=set1', 'Account Executive', 'Baby', null) +,(216, 'Hernandez', 'Kathy' , 'khernandezf@shinystat.com', '1-(210)733-3380', '24 Merrick Way', null, 'San Antonio', 'Texas', '78225', 'United States', 'https://robohash.org/utfaciliset.png?size=50x50&set=set1', 'Junior Executive', 'Movies', null) +,(217, 'Sullivan', 'Lillian', 'lsullivang@flavors.me', '1-(904)885-2053', '42 Manufacturers Pass', null, 'Jacksonville', 'Florida', '32215', 'United States', 'https://robohash.org/quiaetaut.jpg?size=50x50&set=set1', 'Engineer I', 'Sports', null) +,(218, 'Jenkins' , 'Frances', 'fjenkinsh@huffingtonpost.com', '1-(512)764-3809', '69255 Dakota Plaza', null, 'Austin', 'Texas', '78769', 'United States', 'https://robohash.org/voluptatemnamaliquam.bmp?size=50x50&set=set1', 'Developer IV', 'Baby', null) +,(219, 'Myers' , 'Roger' , 'rmyersi@alexa.com', '1-(480)583-9583', '3 Eagle Crest Place', null, 'Gilbert', 'Arizona', '85297', 'United States', 'https://robohash.org/consequaturutquo.png?size=50x50&set=set1', 'Account Executive', 'Beauty', null) +,(220, 'Hunter' , 'Bonnie' , 'bhunterj@ucsd.edu', '1-(320)933-5140', '99 Arapahoe Terrace', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/etfacilisquo.bmp?size=50x50&set=set1', 'Analog Circuit Design manager', 'Baby', null); + +/* Products */ +insert into products (id, product_code, product_name, description, standard_cost, list_price, target_level, reorder_level, minimum_reorder_quantity, quantity_per_unit, discontinued, category) values + (601, 'P1' , 'Nikon D810' , null, 1167.09, 1123.39, 75 , 10, 10, 50, 1, 'Camera') +,(602, 'P2' , 'Canon EOS 5D Mark IV' , null, 1382.83, 1293.84, 90 , 15, 15, 56, 0, 'Camera') +,(603, 'P3' , 'Dell XPS 13' , null, 1482.83, 1393.84, 95 , 20, 30, 56, 0, 'Laptop') +,(604, 'P4' , 'iPad Air' , null, 382.83 , 293.84 , 180, 75, 50, 56, 0, 'Tablet') +,(605, 'P5' , 'Acer Aspire S 13' , null, 882.83 , 793.84 , 40 , 15, 15, 56, 0, 'Laptop') +,(606, 'P6' , 'Nexus 6' , null, 633.88 , 511.7 , 75 , 10, 20, 79, 1, 'Phone' ) +,(607, 'P7' , 'ThinkPad T365' , null, 1441.02, 1308.98, 100, 30, 10, 92, 1, 'Laptop') +,(608, 'P8' , 'Moto Z' , null, 538.44 , 462.34 , 75 , 20, 20, 54, 1, 'Phone' ) +,(609, 'P9' , 'HTC 10' , null, 547.58 , 481.83 , 50 , 5 , 15, 58, 1, 'Tablet') +,(610, 'P10', 'MacBook Pro 13.3' , null, 1625.81, 1576.61, 120, 40, 30, 11, 1, 'Laptop') +,(611, 'P11', 'Nikon D500' , null, 867.09 , 723.39 , 75 , 25, 15, 50, 1, 'Camera') +,(612, 'P12', 'Pentax K-1' , null, 882.83 , 793.84 , 50 , 10, 5 , 56, 0, 'Camera') +,(613, 'P13', 'Asus Zenbook Ux305' , null, 1182.83, 1093.84, 55 , 10, 5 , 56, 0, 'Laptop') +,(614, 'P14', 'HP Envy m7-n109dx 17.3', null, 1382.83, 1293.84, 50 , 10, 10, 56, 0, 'Laptop') +,(615, 'P15', 'Microsft Surface Book' , null, 1682.83, 1593.84, 200, 80, 50, 56, 0, 'Tablet') +,(616, 'P16', 'Apple iPhone 7' , null, 833.88 , 711.76 , 250, 100,50, 79, 1, 'Phone' ) +,(617, 'P17', 'Google Pixel' , null, 641.02 , 608.98 , 100, 30 ,20, 92, 1, 'Phone' ) +,(618, 'P18', 'Samsung Galaxy S7' , null, 538.44 , 562.34 , 75 , 15, 10, 54, 1, 'Phone' ) +,(619, 'P19', 'Samasung Note' , null, 547.58 , 481.83 , 75 , 15, 15, 58, 1, 'Tablet') +,(620, 'P20', 'Chromebook 11.6' , null, 1078.81, 1008.61, 80 , 14, 10, 11, 1, 'Laptop'); + +/* Customers */ +insert into customers (id, last_name, first_name, email, company, phone, address1, address2, city, state, postal_code, country) values + (1 , 'Gray' , 'Clarence' , 'cgray0@rambler.ru' , 'Jetpulse' , '1-(260)615-5114', '02937 Merrick Avenue' , null, 'Fort Wayne', 'Indiana', '46805', 'United States') +,(2 , 'Cooper' , 'Emily' , 'ecooper1@macromedia.com' , 'Skippad' , '1-(251)614-5034', '60 Forster Crossing' , null, 'Mobile', 'Alabama', '36605', 'United States') +,(3 , 'Wilson' , 'George' , 'gwilson2@xinhuanet.com' , 'Riffpath' , '1-(901)445-9881', '52 Browning Center' , null, 'Memphis', 'Tennessee', '38181', 'United States') +,(4 , 'Mcdonald', 'Michael' , 'mmcdonald3@twitter.com' , 'Feedfire' , '1-(419)743-7314', '85093 Jackson Park' , null, 'Toledo', 'Ohio', '43610', 'United States') +,(5 , 'Tucker' , 'Lori' , 'ltucker4@etsy.com' , 'Oyondu' , '1-(202)381-2663', '0706 Heffernan Pass' , null, 'Washington', 'District of Columbia', '20380', 'United States') +,(6 , 'Hansen' , 'Lois' , 'lhansen5@stumbleupon.com', 'Yozio' , '1-(315)385-6866', '2 Ruskin Pass' , null, 'Syracuse', 'New York', '13251', 'United States') +,(7 , 'Grant' , 'Frances' , 'fgrant6@yale.edu' , 'Eire' , '1-(863)799-9068', '61402 Morning Court' , null, 'Lakeland', 'Florida', '33811', 'United States') +,(8 , 'Lewis' , 'Catherine', 'clewis7@unesco.org' , 'Realpoint', '1-(915)208-4997', '775 Messerschmidt Junction', null, 'El Paso', 'Texas', '88563', 'United States') +,(9 , 'Rogers' , 'Edward' , 'erogers8@guardian.co.uk' , 'Quinu' , '1-(971)934-2404', '7074 Montana Place' , null, 'Portland', 'Oregon', '97271', 'United States') +,(10, 'Owens' , 'Tina' , 'towens9@earthlink.net' , 'Blogtag' , '1-(712)989-9002', '59039 Sachtjen Street', null, 'Sioux City', 'Iowa', '51105', 'United States') +,(11, 'Peterson', 'Fred' , 'fpetersona@home.pl' , 'Meedoo' , '1-(202)228-9380', '55 Knutson Street', null, 'Washington', 'District of Columbia', '20099', 'United States') +,(12, 'Cox' , 'Jason' , 'jcoxb@slashdot.org' , 'Tagcat' , '1-(651)991-0172', '19 Hoffman Avenue', null, 'Saint Paul', 'Minnesota', '55114', 'United States') +,(13, 'Perez' , 'Paul' , 'pperezc@ask.com' , 'Kazu' , '1-(405)290-7944', '6336 Continental Circle', null, 'Oklahoma City', 'Oklahoma', '73167', 'United States') +,(14, 'Duncan' , 'Anthony' , 'aduncand@disqus.com' , 'Aibox' , '1-(727)705-8400', '17794 Northport Point', null, 'Clearwater', 'Florida', '33763', 'United States') +,(15, 'Graham' , 'Sean' , 'sgrahame@google.com.br' , 'Tekfly' , '1-(901)443-0731', '47493 Reinke Drive', null, 'Memphis', 'Tennessee', '38131', 'United States') +,(16, 'Simpson' , 'Jose' , 'jsimpsonf@youtube.com' , 'Youspan' , '1-(518)381-4659', '498 Carey Lane', null, 'Albany', 'New York', '12262', 'United States') +,(17, 'Simmons' , 'Frances' , 'fsimmonsg@webster.com' ,'Feednation', '1-(251)473-1327', '44102 Montana Crossing', null, 'Mobile', 'Alabama', '36641', 'United States') +,(18, 'Schmidt' , 'John' , 'jschmidth@vinaora.com' , 'Topicblab', '1-(202)945-2079', '384 Goodland Pass', null, 'Washington', 'District of Columbia', '20210', 'United States') +,(19, 'West' , 'Roger' , 'rwesti@cornell.edu' , 'Skilith' , '1-(716)707-3907', '74 Nancy Pass', null, 'Buffalo', 'New York', '14215', 'United States') +,(20, 'Fields' , 'Jesse' , 'jfieldsj@shop-pro.jp' , 'Vinte' , '1-(617)810-9493', '602 Laurel Park', null, 'Boston', 'Massachusetts', '02203', 'United States') +,(21, 'Patterson', 'Kathy' , 'kpattersonk@machines.org', 'Brainverse', '1-(806)803-9725', '67063 Spenser Junction', null, 'Amarillo', 'Texas', '79188', 'United States') +,(22, 'Bell' , 'Stephanie', 'sbelll@gravatar.com' , 'DabZ' , '1-(801)924-1975', '05 Gina Crossing', null, 'Salt Lake City', 'Utah', '84145', 'United States') +,(23, 'Turner' , 'Martha' , 'mturnerm@hp.com' , 'Yadel' , '1-(225)880-9134', '97789 Scofield Point', null, 'Baton Rouge', 'Louisiana', '70894', 'United States') +,(24, 'Ross' , 'Richard' , 'rrossn@weebly.com' , 'Voolith' , '1-(415)690-1916', '19 Briar Crest Alley', null, 'San Francisco', 'California', '94164', 'United States') +,(25, 'Stephens', 'Stephanie', 'sstephenso@times.co.uk' , 'BlogXS' , '1-(501)827-1408', '63291 Huxley Drive', null, 'North Little Rock', 'Arkansas', '72118', 'United States') +,(26, 'Sanchez' , 'Diane' , 'dsanchezp@sun.com' , 'Tagtune' , '1-(315)979-6793', '13 Oneill Junction', null, 'Syracuse', 'New York', '13224', 'United States') +,(27, 'Lawrence', 'Douglas' , 'dlawrenceq@flickr.com' , 'Browsetype', '1-(610)622-4045', '83224 Mallard Center', null, 'Philadelphia', 'Pennsylvania', '19109', 'United States') +,(28, 'Hansen' , 'Lori' , 'lhansenr@patch.com' , 'Einti' , '1-(915)266-1989', '48410 Westport Circle', null, 'El Paso', 'Texas', '88546', 'United States') +,(29, 'Medina' , 'Robert' , 'rmedinas@uiuc.edu' , 'Tambee' , '1-(216)752-7216', '0562 Muir Trail', null, 'Cleveland', 'Ohio', '44197', 'United States') +,(30, 'Harrison', 'Shawn' , 'sharrisont@webnode.com' , 'Youopia' , '1-(205)595-8085', '20 Mayer Center', null, 'Birmingham', 'Alabama', '35205', 'United States') +,(31, 'Alexander', 'Julia' , 'jalexanderu@netsol.com' , 'Oodoo' , '1-(864)349-2185', '61859 West Point', null, 'Greenville', 'South Carolina', '29610', 'United States') +,(32, 'Stanley', 'Victor' , 'vstanleyv@wikipedia.org' , 'Centimia' , '1-(561)507-7317', '08229 Glacier Hill Avenue', null, 'Boynton Beach', 'Florida', '33436', 'United States') +,(33, 'Wheeler', 'Dennis' , 'dwheelerw@indiatimes.com', 'Dynabox' , '1-(419)889-2883', '409 American Ash Plaza', null, 'Lima', 'Ohio', '45807', 'United States') +,(34, 'Frazier', 'Rachel' , 'rfrazierx@sfgate.com' , 'Skivee' , '1-(314)249-1796', '7 Waxwing Court', null, 'Saint Louis', 'Missouri', '63131', 'United States') +,(35, 'Brooks' , 'Shawn' , 'sbrooksy@mediafire.com' , 'Omba' , '1-(971)854-8478', '614 Monica Terrace', null, 'Portland', 'Oregon', '97240', 'United States') +,(36, 'Coleman', 'Frank' , 'fcolemanz@un.org' , 'Agimba' , '1-(318)446-4337', '4 Browning Park', null, 'Shreveport', 'Louisiana', '71151', 'United States') +,(37, 'Wright' , 'Frank' , 'fwright10@flickr.com' , 'Meedoo' , '1-(504)852-2553', '03446 Sheridan Trail', null, 'New Orleans', 'Louisiana', '70183', 'United States') +,(38, 'Perkins', 'Tina' , 'tperkins11@va.gov' , 'Rhybox' , '1-(571)497-0755', '62 Grayhawk Lane', null, 'Fairfax', 'Virginia', '22036', 'United States') +,(39, 'Griffin', 'Ruth' , 'rgriffin12@pcworld.com' , 'Trudoo' , '1-(504)312-7448', '29701 Jenifer Junction', null, 'Metairie', 'Louisiana', '70033', 'United States') +,(40, 'Sanchez', 'Sean' , 'ssanchez13@bandcamp.com' , 'Chatterpoint', '1-(316)535-7647', '10 Stuart Road', null, 'Wichita', 'Kansas', '67260', 'United States') +,(41, 'Harris' , 'Linda' , 'lharris14@ask.com' , 'Blogpad' , '1-(913)258-6547', '17635 Elka Alley', null, 'Shawnee Mission', 'Kansas', '66205', 'United States') +,(42, 'Wood' , 'George' , 'gwood15@imdb.com' , 'Feednation' , '1-(865)482-7169', '210 Anhalt Drive', null, 'Knoxville', 'Tennessee', '37924', 'United States') +,(43, 'Bennett', 'Nancy' , 'nbennett16@netsol.com' , 'Yodo' , '1-(210)749-3167', '97861 Harper Pass', null, 'San Antonio', 'Texas', '78260', 'United States') +,(44, 'Pierce' , 'Jesse' , 'jpierce17@cyberchimps.com', 'Divanoodle' , '1-(501)518-2300', '0 Columbus Terrace', null, 'Little Rock', 'Arkansas', '72231', 'United States') +,(45, 'Larson' , 'Jerry' , 'jlarson18@ustream.tv' , 'Kazu' , '1-(916)702-0977', '0422 Merry Court', null, 'Sacramento', 'California', '95852', 'United States') +,(46, 'Williams', 'Norma' , 'nwilliams19@spiegel.de' , 'Yacero' , '1-(562)631-4036', '5779 Burning Wood Crossing', null, 'Long Beach', 'California', '90847', 'United States') +,(47, 'Kelley' , 'Louis' , 'lkelley1a@wsj.com' , 'Linkbuzz' , '1-(432)286-2200', '04321 Northport Pass', null, 'Odessa', 'Texas', '79764', 'United States') +,(48, 'Mason' , 'Ruby' , 'rmason1b@census.gov' , 'Trudeo' , '1-(763)835-7627', '99219 5th Place', null, 'Monticello', 'Minnesota', '55565', 'United States') +,(49, 'Carr' , 'Nicole' , 'ncarr1c@yellowbook.com' , 'Plajo' , '1-(330)154-9245', '41 Monica Parkway', null, 'Youngstown', 'Ohio', '44511', 'United States') +,(50, 'Franklin', 'Michelle' , 'mfranklin1d@ucoz.com' , 'Wikivu' , '1-(405)751-8906', '62 Rutledge Alley', null, 'Oklahoma City', 'Oklahoma', '73147', 'United States') +,(51, 'Hawkins', 'Larry' , 'lhawkins1e@typepad.com' , 'Tagpad' , '1-(240)796-9270', '48 Columbus Road', null, 'Hagerstown', 'Maryland', '21747', 'United States') +,(52, 'Adams' , 'Lillian' , 'ladams1f@smugmug.com' , 'Avamm' , '1-(419)394-2363', '69708 West Avenue', null, 'Toledo', 'Ohio', '43605', 'United States') +,(53, 'Williamson', 'Janice' , 'jwilliamson1g@sbwire.com', 'Wordware' , '1-(212)576-0309', '311 Clemons Crossing', null, 'New York City', 'New York', '10090', 'United States') +,(54, 'Mitchell', 'Lisa' , 'lmitchell1h@live.com' , 'Trudoo' , '1-(225)794-6979', '17242 Eagan Terrace', null, 'Baton Rouge', 'Louisiana', '70820', 'United States') +,(55, 'Lawrence', 'Anna' , 'alawrence1i@manage.com' , 'Pixope' , '1-(818)505-8262', '51241 Tennessee Point', null, 'Santa Monica', 'California', '90405', 'United States') +,(56, 'Scott' , 'Margaret' , 'mscott1j@arizona.edu' , 'Mynte' , '1-(202)265-0994', '117 Arapahoe Crossing', null, 'Washington', 'District of Columbia', '20051', 'United States') +,(57, 'Harper' , 'Timothy' , 'tharper1k@loc.gov' , 'Trudoo' , '1-(212)348-5025', '137 Commercial Court', null, 'New York City', 'New York', '10175', 'United States') +,(58, 'Frazier' , 'Mary' , 'mfrazier1l@mapy.cz' , 'Photobug' , '1-(214)939-0299', '281 Briar Crest Way', null, 'Garland', 'Texas', '75049', 'United States') +,(59, 'Young' , 'Margaret' , 'myoung1m@ehow.com' , 'Realmix' , '1-(318)144-2666', '537 Memorial Way', null, 'Shreveport', 'Louisiana', '71105', 'United States') +,(60, 'Sullivan', 'Phyllis' , 'psullivan1n@jiathis.com' , 'Demivee' , '1-(518)361-7505', '117 Onsgard Crossing', null, 'Albany', 'New York', '12227', 'United States') +,(61, 'Knight' , 'Roy' , 'rknight1o@qq.com' , 'Meezzy' , '1-(478)438-2599', '60 Kinsman Drive', null, 'Macon', 'United Kingdom', '31210', 'United States') +,(62, 'Ruiz' , 'Andrea' , 'aruiz1p@domainmarket.com', 'Fivespan' , '1-(415)374-7204', '55455 Heffernan Plaza', null, 'San Francisco', 'California', '94142', 'United States') +,(63, 'Hayes' , 'Heather' , 'hhayes1q@odnoklasniki.ru', 'Twitternation', '1-(615)919-6350', '31 Banding Plaza', null, 'Jackson', 'Mississippi', '39296', 'United States') +,(64, 'Chapman' , 'Roy' , 'rchapman1r@theguardian.com', 'BlogXS' , '1-(941)329-4488', '27487 Fair Oaks Crossing', null, 'Sarasota', 'Florida', '34233', 'United States') +,(65, 'Moore' , 'Daniel' , 'dmoore1s@google.co.uk' , 'Twitterbridge', '1-(408)838-8747', '52377 Everett Court', null, 'San Jose', 'California', '95194', 'United States') +,(66, 'Day' , 'Amy' , 'aday1t@indiegogo.com' , 'Brainverse' , '1-(336)903-6679', '50107 Northport Circle', null, 'Winston Salem', 'North Carolina', '27157', 'United States') +,(67, 'Kelley' , 'Jesse' , 'jkelley1u@who.int' , 'Zoomzone' , '1-(304)183-6041', '31740 Bayside Trail', null, 'Huntington', 'West Virginia', '25711', 'United States') +,(68, 'Andrews' , 'Andrea' , 'aandrews1v@patch.com' , 'Fanoodle' , '1-(206)996-3516', '544 Lakewood Gardens Alley', null, 'Seattle', 'Washington', '98148', 'United States') +,(69, 'Willis' , 'Robert' , 'rwillis1w@si.edu' , 'Tazz' , '1-(678)738-3382', '0998 Bellgrove Circle', null, 'Duluth', 'United Kingdom', '30195', 'United States') +,(70, 'Reid' , 'Daniel' , 'dreid1x@miitbeian.gov.cn', 'Babbleblab', '1-(786)539-0220', '2 New Castle Avenue', null, 'Miami', 'Florida', '33111', 'United States') +,(71, 'Roberts' , 'Louise' , 'lroberts1y@cpanel.net' , 'Skippad' , '1-(316)418-5043', '598 Mayfield Road', null, 'Wichita', 'Kansas', '67210', 'United States') +,(72, 'Harrison', 'Margaret' , 'mharrison1z@globe.ne.jp' , 'Zoovu' , '1-(775)625-5357', '636 Maple Point', null, 'Reno', 'Nevada', '89550', 'United States') +,(73, 'Chapman' , 'Peter' , 'pchapman20@eventbrite.com', 'Linkbuzz' , '1-(574)707-4449', '1 Vermont Plaza', null, 'South Bend', 'Indiana', '46620', 'United States') +,(74, 'Tucker' , 'Willie' , 'wtucker21@hubpages.com' , 'Eazzy' , '1-(814)593-2963', '3 Dryden Trail', null, 'Erie', 'Pennsylvania', '16505', 'United States') +,(75, 'Bradley' , 'Adam' , 'abradley22@cnet.com' , 'Yabox' , '1-(903)334-0845', '15 Veith Center', null, 'Tyler', 'Texas', '75705', 'United States') +,(76, 'Armstrong', 'Juan' , 'jarmstrong23@archive.org', 'Gevee' , '1-(916)285-8157', '95 Claremont Crossing', null, 'Sacramento', 'California', '95865', 'United States') +,(77, 'Payne' , 'Kenneth' , 'kpayne24@com.com' , 'Skinte' , '1-(770)150-8423', '75 Beilfuss Court', null, 'Alpharetta', 'United Kingdom', '30022', 'United States') +,(78, 'Jacobs' , 'Louis' , 'ljacobs25@intel.com' , 'Photolist' , '1-(404)386-3449', '542 Browning Park', null, 'Atlanta', 'United Kingdom', '30343', 'United States') +,(79, 'Cooper' , 'Marilyn' , 'mcooper26@whitehouse.gov', 'Yotz' , '1-(520)875-3539', '03 Transport Point', null, 'Tucson', 'Arizona', '85710', 'United States') +,(80, 'Watkins' , 'William' , 'wwatkins27@pbs.org' , 'Brightbean', '1-(719)568-3678', '0316 La Follette Drive', null, 'Colorado Springs', 'Colorado', '80920', 'United States') +,(81, 'Baker' , 'Douglas' , 'dbaker28@exblog.jp' , 'Voonix' , '1-(619)121-6070', '99 Kedzie Terrace', null, 'Chula Vista', 'California', '91913', 'United States') +,(82, 'Cunningham','Daniel' , 'dcunningham29@oakley.com', 'Leexo' , '1-(619)609-6206', '53540 Hallows Place', null, 'San Diego', 'California', '92137', 'United States') +,(83, 'Mitchell', 'Edward' , 'emitchell2a@amazon.com' , 'Jatri' , '1-(502)427-5275', '3 Jana Junction', null, 'Louisville', 'Kentucky', '40280', 'United States') +,(84, 'Matthews', 'Adam' , 'amatthews2b@live.com' , 'Muxo' , '1-(316)764-9074', '5 Arapahoe Plaza', null, 'Wichita', 'Kansas', '67220', 'United States') +,(85, 'Jacobs' , 'Diane' , 'djacobs2c@jimdo.com' , 'Youspan' , '1-(804)398-4775', '6 Moose Street', null, 'Richmond', 'Virginia', '23285', 'United States') +,(86, 'Frazier' , 'Mary' , 'mfrazier2d@forbes.com' , 'Zoomdog' , '1-(716)502-4243', '713 Continental Trail', null, 'Buffalo', 'New York', '14210', 'United States') +,(87, 'Howard' , 'Anthony' , 'ahoward2e@disqus.com' , 'Katz' , '1-(805)800-7968', '006 Elka Center', null, 'Bakersfield', 'California', '93311', 'United States') +,(88, 'Kelly' , 'Anna' , 'akelly2f@unc.edu' , 'Trilia' , '1-(804)117-9707', '292 Browning Circle', null, 'Richmond', 'Virginia', '23228', 'United States') +,(89, 'Clark' , 'Kathy' , 'kclark2g@businesswire.com' , 'Gigabox' , '1-(831)755-4869', '45 Walton Parkway', null, 'Salinas', 'California', '93907', 'United States') +,(90, 'Carpenter', 'Gerald' , 'gcarpenter2h@foxnews.com' , 'Yakidoo' , '1-(213)344-9608', '84560 Stephen Parkway', null, 'Los Angeles', 'California', '90055', 'United States') +,(91, 'Hart' , 'Albert' , 'ahart2i@scribd.com' , 'Jaloo' , '1-(415)201-5281', '0 Washington Place', null, 'Oakland', 'California', '94611', 'United States') +,(92, 'Young' , 'Julia' , 'jyoung2j@craigslist.org' , 'Oloo' , '1-(615)660-1203', '0623 Gale Drive', null, 'Jackson', 'Mississippi', '39210', 'United States') +,(93, 'Pierce' , 'Tammy' , 'tpierce2k@psu.edu' , 'Ntags' , '1-(703)772-3155', '501 Leroy Parkway', null, 'Washington', 'District of Columbia', '20041', 'United States') +,(94, 'Washington', 'Ronald' , 'rwashington2l@drupal.org' , 'Livetube' , '1-(202)828-6093', '6220 Del Sol Alley', null, 'Washington', 'District of Columbia', '20551', 'United States') +,(95, 'Carter' , 'Alan' , 'acarter2m@simplemachines.org', 'Centizu' , '1-(952)234-1678', '043 Sunnyside Center', null, 'Young America', 'Minnesota', '55551', 'United States') +,(96, 'Freeman' , 'Stephanie', 'sfreeman2n@redcross.org' , 'Feednation' , '1-(504)126-8245', '1120 Veith Parkway', null, 'New Orleans', 'Louisiana', '70165', 'United States') +,(97, 'Price' , 'Sara' , 'sprice2o@irs.gov' , 'Izio' , '1-(415)668-5714', '96394 Bonner Hill', null, 'San Francisco', 'California', '94116', 'United States') +,(98, 'Parker' , 'Emily' , 'eparker2p@4shared.com' , 'Skalith' , '1-(330)637-4894', '0 Old Shore Center', null, 'Akron', 'Ohio', '44310', 'United States') +,(99, 'Chavez' , 'Jeremy' , 'jchavez2q@businessweek.com' , 'Topicware' , '1-(515)769-2045', '8584 Jay Street', null, 'Des Moines', 'Iowa', '50335', 'United States') +,(100, 'Kim' , 'Pamela' , 'pkim2r@stumbleupon.com' , 'Photolist' , '1-(510)144-4318', '3688 Gerald Trail', null, 'Sacramento', 'California', '95823', 'United States'); + +/* LOOK UP VALUES */ + + +/* orders */ +insert into orders (id, employee_id, customer_id, order_date, shipped_date, ship_name, ship_address1, ship_address2, ship_city, ship_state, ship_postal_code, ship_country, shipping_fee, payment_type, paid_date, order_status) values + (4001, 204, 40, '2016-04-05', '2016-11-06', 'Jean Fuller', '93 Spohn Place', null, 'Manggekompo', null, null, 'Indonesia', 8.14, 'Card', '2016-10-12', 'On Hold') +,(4002, 204, 95, '2017-01-29', '2016-05-28', 'Diane Holmes', '46 Eliot Trail', null, 'Virginia Beach', 'Virginia', '23459', 'United States', 1.55, 'Check', '2016-06-27', 'Shipped') +,(4003, 218, 54, '2016-08-19', '2016-12-08', 'Jerry Frazier', '23 Sundown Junction', null, 'Obodivka', null, null, 'Ukraine', 2.29, 'Cash', '2016-09-27', 'On Hold') +,(4004, 204, 69, '2016-09-25', '2016-12-24', 'Denise Freeman', '4909 Beilfuss Hill', null, 'Nova Venécia', null, '29830-000', 'Brazil', 4.77, 'Check', '2016-07-04', 'New') +,(4005, 215, 10, '2017-03-14', '2016-03-19', 'Jonathan Gordon', '7 Ludington Court', null, 'Sukamaju', null, null, 'Indonesia', 8.78, 'Check', '2016-03-22', 'On Hold') +,(4006, 211, 23, '2016-08-14', '2016-12-05', 'Sean Carter', '859 Dahle Plaza', null, 'Dayou', null, null, 'China', 9.43, 'Cash', '2016-08-21', 'New') +,(4007, 204, 92, '2017-01-02', '2016-07-09', 'Alice Warren', '5 Fuller Center', null, 'Log pri Brezovici', null, '1358', 'India', 3.25, 'Cash', '2016-03-24', 'Shipped') +,(4008, 205, 20, '2016-05-15', '2016-09-12', 'Andrea Hamilton', '99 Blue Bill Park Junction', null, 'Liangshui', null, null, 'China', 7.04, 'Check', '2016-09-02', 'On Hold') +,(4009, 219, 58, '2016-11-27', '2017-03-02', 'Wanda Hill', '907 Sundown Court', null, 'Pedra Azul', null, '39970-000', 'Brazil', 4.35, 'Cash', '2016-09-27', 'On Hold') +,(4010, 218, 57, '2016-09-11', '2017-02-26', 'Carolyn Foster', '0 Charing Cross Court', null, 'Chicago', 'Illinois', '60609', 'United States', 1.23, 'Cash', '2016-08-09', 'Complete') +,(4011, 207, 3 , '2017-03-01', '2016-08-04', 'Timothy Warren', '19 John Wall Parkway', null, 'Lyon', 'Rhône-Alpes', '69362 CEDEX 07', 'France', 9.57, 'Card', '2016-05-08', 'Complete') +,(4012, 210, 59, '2016-12-31', '2016-08-08', 'Kathleen Marshall', '2 Swallow Circle', null, 'Cunliji', null, null, 'China', 9.03, 'Cash', '2016-04-23', 'On Hold') +,(4013, 204, 57, '2017-01-11', '2017-02-13', 'Jane Ortiz', '1136 Kedzie Alley', null, 'Eirado', 'Viana do Castelo', '4990-540', 'Portugal', 8.9, 'Check', '2016-10-26', 'Shipped') +,(4014, 212, 26, '2016-09-23', '2016-05-13', 'Carolyn Martinez', '954 Kropf Court', null, 'Ibitinga', null, '14940-000', 'Brazil', 4.57, 'Card', '2016-09-11', 'New') +,(4015, 201, 86, '2016-11-04', '2016-10-03', 'Debra Willis', '89 Grasskamp Road', null, 'San Francisco', null, '8501', 'Philippines', 3.53, 'Card', '2016-10-05', 'New') +,(4016, 208, 17, '2016-04-17', '2016-03-22', 'Sharon Little', '27501 Sommers Junction', null, 'San Juan Opico', null, null, 'India', 6.87, 'Card', '2017-01-08', 'Complete') +,(4017, 205, 73, '2016-07-03', '2016-09-26', 'Nancy Hughes', '1 John Wall Avenue', null, 'La Libertad', null, null, 'Argentina', 4.67, 'Check', '2017-02-01', 'New') +,(4018, 213, 16, '2016-12-01', '2016-06-08', 'Sara Knight', '98248 Tony Pass', null, 'Val-d''Or', 'Québec', 'J9P', 'Canada', 9.52, 'Card', '2016-08-06', 'New') +,(4019, 209, 10, '2016-04-18', '2016-04-25', 'Russell Wood', '3 Commercial Point', null, 'Rokietnica', null, '62-090', 'Poland', 6.8, 'Card', '2017-01-20', 'On Hold') +,(4020, 216, 1 , '2016-07-23', '2017-02-23', 'Aaron Grant', '15477 Farwell Circle', null, 'Yongyang', null, null, 'China', 3.17, 'Cash', '2016-08-11', 'Complete') +,(4021, 209, 38, '2016-12-16', '2017-02-14', 'Ryan Foster', '9218 Leroy Avenue', null, 'Mogapinyana', null, null, 'India', 3.34, 'Cash', '2016-06-21', 'On Hold') +,(4022, 207, 91, '2016-07-18', '2016-04-06', 'Peter Montgomery', '570 Londonderry Pass', null, 'Mathakola', null, null, 'India', 8.11, 'Card', '2016-10-27', 'New') +,(4023, 209, 39, '2016-07-15', '2017-02-02', 'Lawrence Schmidt', '371 Acker Drive', null, 'Mesa', 'Arizona', '85205', 'United States', 1.39, 'Cash', '2016-10-27', 'Complete') +,(4024, 219, 51, '2016-12-08', '2017-01-03', 'Eric Gray', '4608 Farmco Point', null, 'Gemblengmulyo', null, null, 'Indonesia', 8.76, 'Card', '2016-05-13', 'Complete') +,(4025, 204, 77, '2016-09-24', '2017-01-20', 'Gloria Green', '62 Sunnyside Park', null, 'Itararé', null, '18460-000', 'Brazil', 7.75, 'Cash', '2017-02-06', 'On Hold') +,(4026, 215, 73, '2016-09-15', '2016-12-24', 'Nicholas Price', '5672 Ruskin Hill', null, 'Maimará', null, '4624', 'Argentina', 9.11, 'Card', '2016-07-22', 'On Hold') +,(4027, 208, 98, '2016-05-31', '2016-07-14', 'Doris Watson', '133 Gina Street', null, 'Bantiran', null, null, 'Indonesia', 3.0, 'Cash', '2016-10-08', 'Complete') +,(4028, 217, 39, '2016-05-10', '2016-04-07', 'Linda Foster', '40382 4th Terrace', null, 'Agrelo', 'Braga', '4730-300', 'Portugal', 2.39, 'Cash', '2016-09-11', 'Complete') +,(4029, 212, 52, '2016-09-14', '2016-12-21', 'Anthony Spencer', '02 Esker Junction', null, 'El Ocotón', null, null, 'Canada', 7.72, 'Check', '2016-09-23', 'Shipped') +,(4030, 218, 74, '2016-05-08', '2016-07-21', 'James Kennedy', '7460 Westport Hill', null, 'Köln', 'Nordrhein-Westfalen', '51107', 'Germany', 6.16, 'Cash', '2016-11-27', 'Shipped') +,(4031, 214, 4 , '2016-05-31', '2017-03-03', 'Theresa Robinson', '44 Havey Way', null, 'Qingtong', null, null, 'China', 5.02, 'Check', '2017-03-15', 'New') +,(4032, 201, 81, '2016-07-05', '2016-11-18', 'Jesse Ray', '68 Derek Hill', null, 'Azogues', null, null, 'Argentina', 5.41, 'Check', '2016-10-16', 'New') +,(4033, 203, 15, '2016-09-07', '2016-06-09', 'Harold Fields', '2 Vermont Terrace', null, 'Mogocha', null, '673732', 'Russia', 2.38, 'Check', '2016-03-30', 'Complete') +,(4034, 217, 11, '2016-08-19', '2016-12-08', 'Larry Watkins', '629 Waxwing Avenue', null, 'Krasnyy Oktyabr’', null, '398526', 'Russia', 5.23, 'Cash', '2016-07-01', 'On Hold') +,(4035, 205, 51, '2016-11-29', '2016-09-02', 'Debra Marshall', '23578 Arizona Junction', null, 'Juhut', null, null, 'Indonesia', 1.59, 'Card', '2016-06-17', 'Shipped') +,(4036, 217, 56, '2016-10-21', '2017-02-13', 'Todd Stephens', '63633 Columbus Avenue', null, 'Paccho', null, null, 'Peru', 5.09, 'Cash', '2016-04-25', 'New') +,(4037, 219, 60, '2016-09-22', '2016-11-08', 'Jean Webb', '0916 Grover Way', null, 'Kuršėnai', null, '81001', 'Denmark', 8.66, 'Cash', '2016-09-30', 'Shipped') +,(4038, 213, 3 , '2016-06-01', '2016-10-07', 'Heather Snyder', '44 Grayhawk Court', null, 'Haenam', null, null, 'Finland', 5.33, 'Cash', '2016-06-30', 'Complete') +,(4039, 201, 28, '2017-02-19', '2016-11-25', 'Janet Howard', '5351 Barby Trail', null, 'Shanghu', null, null, 'China', 9.18, 'Check', '2017-03-16', 'On Hold') +,(4040, 215, 74, '2016-09-14', '2016-06-23', 'Aaron Wheeler', '08 Burrows Avenue', null, 'Tân Sơn', null, null, 'Vietnam', 3.36, 'Card', '2017-03-05', 'New') +,(4041, 204, 79, '2016-09-27', '2017-02-15', 'Lori Watkins', '3 Pennsylvania Court', null, 'Victoria', null, 'VCT', 'India', 9.41, 'Card', '2016-08-12', 'New') +,(4042, 205, 92, '2016-11-03', '2016-05-11', 'Alice Miller', '7895 Amoth Avenue', null, 'Mae Lao', null, '57250', 'Thailand', 2.11, 'Cash', '2016-08-06', 'Shipped') +,(4043, 212, 82, '2016-11-17', '2016-04-19', 'Marilyn Nguyen', '25203 Meadow Ridge Plaza', null, 'Nine', 'Braga', '4775-446', 'Portugal', 6.03, 'Cash', '2016-05-07', 'On Hold') +,(4044, 218, 55, '2016-06-26', '2016-08-15', 'Ashley West', '08621 Porter Lane', null, 'Kingsport', 'Tennessee', '37665', 'United States', 8.23, 'Cash', '2016-12-17', 'New') +,(4045, 217, 53, '2016-05-07', '2017-02-25', 'Julia Fernandez', '91519 Harbort Way', null, 'Issoire', 'Auvergne', '63504 CEDEX', 'France', 1.14, 'Check', '2016-10-27', 'Complete') +,(4046, 211, 78, '2016-12-11', '2017-02-15', 'Willie Sims', '683 Caliangt Parkway', null, 'Balazar', 'Braga', '4805-005', 'Portugal', 6.57, 'Card', '2017-02-13', 'On Hold') +,(4047, 201, 77, '2016-05-20', '2017-02-19', 'Samuel Burke', '25 Grover Lane', null, 'Housuo', null, null, 'China', 6.99, 'Cash', '2016-08-12', 'New') +,(4048, 217, 72, '2016-11-06', '2016-09-29', 'Patricia Green', '29791 Thierer Street', null, 'Campamento', null, '052027', 'Argentina', 3.33, 'Check', '2016-03-24', 'Complete') +,(4049, 210, 98, '2016-08-24', '2016-04-16', 'Nicole Washington', '68 Monica Point', null, 'Cikaung', null, null, 'Indonesia', 5.78, 'Check', '2016-04-30', 'Complete') +,(4050, 215, 26, '2016-10-07', '2016-11-03', 'Marie Bryant', '36611 Schlimgen Place', null, 'Villa Francisca', null, '10215', 'Canada', 4.11, 'Check', '2016-07-29', 'Complete') +,(4051, 212, 51, '2016-05-19', '2017-03-16', 'Brandon Lane', '5 Duke Center', null, 'Soutinho', 'Porto', '4650-530', 'Portugal', 9.62, 'Check', '2016-11-28', 'Shipped') +,(4052, 205, 9 , '2016-07-19', '2016-09-05', 'Pamela Ferguson', '0 Mockingbird Crossing', null, 'Jefferson City', 'Missouri', '65105', 'United States', 9.98, 'Card', '2016-12-08', 'Shipped') +,(4053, 210, 42, '2016-04-09', '2017-02-05', 'Gloria Edwards', '8275 Sage Plaza', null, 'Yilkiqi', null, null, 'China', 5.21, 'Cash', '2016-11-10', 'On Hold') +,(4054, 211, 70, '2017-02-28', '2017-02-11', 'John Cole', '4679 Trailsway Circle', null, 'Sanlanbahai', null, null, 'China', 4.42, 'Card', '2017-01-06', 'Complete') +,(4055, 208, 65, '2017-01-11', '2017-02-14', 'Bobby Butler', '314 Jenna Crossing', null, 'Malusac', null, '2005', 'Philippines', 7.37, 'Cash', '2017-03-15', 'Shipped') +,(4056, 220, 15, '2016-07-12', '2016-09-06', 'Anthony Lane', '1 Packers Avenue', null, 'Batambak', null, null, 'Indonesia', 5.41, 'Card', '2016-11-21', 'On Hold') +,(4057, 220, 76, '2016-05-05', '2016-04-19', 'Karen Ray', '891 Raven Street', null, 'Chinju', null, null, 'Finland', 4.71, 'Cash', '2017-02-11', 'On Hold') +,(4058, 216, 90, '2017-01-26', '2016-12-19', 'Martha Gonzalez', '8695 Mandrake Place', null, 'Maythalūn', null, null, 'India', 1.75, 'Card', '2017-03-16', 'On Hold') +,(4059, 212, 43, '2016-09-20', '2017-02-11', 'Judy Daniels', '154 Lukken Court', null, 'Luoqiao', null, null, 'China', 4.63, 'Check', '2016-11-09', 'On Hold') +,(4060, 207, 80, '2016-04-29', '2016-07-01', 'Jane Stevens', '43 Kingsford Pass', null, 'Dobruševo', null, '7514', 'Denmark', 1.96, 'Cash', '2016-09-02', 'On Hold') +,(4061, 214, 89, '2016-10-09', '2016-09-09', 'Emily Miller', '5 Pearson Lane', null, 'East London', null, '5688', 'South Africa', 2.14, 'Card', '2016-06-10', 'Complete') +,(4062, 220, 8 , '2016-12-01', '2017-03-09', 'Sarah Johnson', '30 Chinook Lane', null, 'Selishche', null, '180536', 'Russia', 3.76, 'Card', '2016-11-18', 'On Hold') +,(4063, 220, 48, '2017-03-05', '2016-11-30', 'Carolyn Reyes', '72 Michigan Pass', null, 'Sukasenang', null, null, 'Indonesia', 6.52, 'Cash', '2016-05-20', 'Shipped') +,(4064, 214, 31, '2016-07-19', '2016-08-16', 'Kathryn Coleman', '43358 Packers Court', null, 'Przystajń', null, '42-141', 'Poland', 1.68, 'Card', '2016-12-13', 'Complete') +,(4065, 205, 41, '2016-12-09', '2016-03-20', 'Clarence Graham', '1675 Starling Point', null, 'Zangbawa', null, null, 'China', 5.82, 'Cash', '2016-07-08', 'Complete') +,(4066, 205, 41, '2016-05-25', '2016-11-15', 'David Harris', '00 Warner Court', null, 'Kabba', null, null, 'Netherlands', 7.24, 'Cash', '2016-09-24', 'New') +,(4067, 218, 13, '2016-07-24', '2016-12-06', 'Ruth Fields', '88567 Golf Course Plaza', null, 'Mauá', null, '09300-000', 'Brazil', 6.82, 'Cash', '2017-01-26', 'New') +,(4068, 206, 11, '2016-05-04', '2016-07-10', 'Todd Butler', '88 Graedel Point', null, 'Jablah', null, null, 'India', 3.83, 'Cash', '2016-06-17', 'On Hold') +,(4069, 215, 55, '2016-12-22', '2016-03-28', 'Catherine Perkins', '95 Troy Parkway', null, 'Frampol', null, '23-440', 'Poland', 7.6, 'Check', '2016-08-24', 'Shipped') +,(4070, 220, 40, '2016-10-17', '2016-12-01', 'Jeffrey Rodriguez', '3393 Weeping Birch Court', null, 'Burunday', null, null, 'Denmark', 2.52, 'Cash', '2016-09-06', 'Shipped') +,(4071, 218, 70, '2017-03-16', '2016-12-09', 'Rachel Butler', '79327 Ridgeway Circle', null, 'Dupnitsa', null, '2680', 'Denmark', 6.25, 'Check', '2016-04-02', 'Complete') +,(4072, 205, 45, '2017-01-22', '2016-05-15', 'Robin Fisher', '0 Susan Court', null, 'Morohongō', null, '357-0211', 'Japan', 4.42, 'Card', '2017-03-06', 'Complete') +,(4073, 217, 94, '2017-01-25', '2016-04-11', 'Ruth Carpenter', '4 Glacier Hill Road', null, 'Ngrejo', null, null, 'Indonesia', 4.9, 'Cash', '2016-08-13', 'On Hold') +,(4074, 219, 27, '2017-01-06', '2017-01-03', 'Irene Kelly', '0 Comanche Junction', null, 'Chao', null, null, 'Peru', 5.32, 'Check', '2016-11-20', 'On Hold') +,(4075, 214, 44, '2016-06-24', '2016-12-20', 'Douglas Sims', '81709 Helena Park', null, 'Dongmaku', null, null, 'China', 3.35, 'Card', '2017-02-27', 'Complete') +,(4076, 216, 27, '2016-09-23', '2016-10-05', 'Kenneth Rose', '5316 Dottie Way', null, 'Olszówka', null, '62-641', 'Poland', 2.63, 'Cash', '2016-05-27', 'Shipped') +,(4077, 211, 84, '2016-11-24', '2016-08-04', 'Jimmy Morgan', '42187 Shoshone Center', null, 'Saltsjöbaden', 'Stockholm', '133 41', 'Sweden', 1.11, 'Cash', '2016-09-09', 'On Hold') +,(4078, 202, 57, '2016-05-28', '2016-06-02', 'Annie Vasquez', '5 Lien Junction', null, 'Al Qaţn', null, null, 'South Africa', 2.73, 'Check', '2016-11-14', 'On Hold') +,(4079, 202, 64, '2016-07-05', '2016-05-20', 'Henry Mccoy', '58 Nelson Circle', null, 'Tsaghkahovit', null, null, 'India', 3.29, 'Card', '2016-08-18', 'Shipped') +,(4080, 216, 44, '2017-02-20', '2016-10-08', 'Norma Graham', '27 Heffernan Pass', null, 'Cairima', null, null, 'China', 7.02, 'Check', '2017-03-06', 'Complete') +,(4081, 218, 60, '2017-03-16', '2016-08-06', 'Albert Wright', '572 Vahlen Place', null, 'Drahovo', null, null, 'Ukraine', 4.92, 'Check', '2017-01-29', 'New') +,(4082, 219, 15, '2016-12-26', '2017-02-17', 'Jane Wells', '21 Merchant Way', null, 'Acacías', null, '507009', 'Argentina', 6.53, 'Card', '2016-06-04', 'Complete') +,(4083, 212, 61, '2016-06-24', '2016-03-23', 'Jesse Mitchell', '4060 Carioca Drive', null, 'Ntoroko', null, null, 'South Africa', 9.41, 'Cash', '2016-10-19', 'On Hold') +,(4084, 216, 3 , '2016-08-20', '2017-02-15', 'Carlos Brooks', '868 Pankratz Trail', null, 'Bat Khela', null, '18351', 'Iran', 1.0, 'Check', '2016-12-22', 'On Hold') +,(4085, 209, 25, '2016-12-03', '2016-06-01', 'Christopher Williamson', '8874 Starling Plaza', null, 'Tarbes', 'Midi-Pyrénées', '65951 CEDEX 9', 'France', 4.15, 'Card', '2017-02-04', 'New') +,(4086, 205, 2 , '2016-06-19', '2016-08-26', 'Joseph Wells', '7223 Carpenter Road', null, 'Chitral', null, '17200', 'Iran', 5.31, 'Card', '2016-07-22', 'Shipped') +,(4087, 216, 96, '2016-06-04', '2016-12-31', 'Teresa Thomas', '908 Ramsey Junction', null, 'Dzerzhinskiy', null, '140083', 'Russia', 4.29, 'Cash', '2017-03-03', 'Shipped') +,(4088, 203, 35, '2016-09-21', '2017-01-08', 'Scott Gomez', '70537 Tennessee Crossing', null, 'Bồng Sơn', null, null, 'Vietnam', 6.93, 'Cash', '2017-01-01', 'New') +,(4089, 210, 18, '2017-02-17', '2016-10-28', 'Nicole Miller', '0 Jackson Place', null, 'Šilheřovice', null, '747 15', 'Czech Republic', 5.64, 'Card', '2016-11-17', 'On Hold') +,(4090, 201, 8 , '2016-11-12', '2016-06-02', 'Donald Nguyen', '7320 Bunting Pass', null, 'Namioka', null, '953-0062', 'Japan', 7.07, 'Cash', '2016-09-29', 'Complete') +,(4091, 212, 67, '2016-04-08', '2016-11-21', 'Shawn Myers', '1844 Esch Plaza', null, 'Gračec', null, '10370', 'Canada', 4.84, 'Card', '2016-03-17', 'New') +,(4092, 220, 16, '2017-01-12', '2016-08-04', 'Daniel Armstrong', '2 Donald Alley', null, 'La Colorada', null, null, 'Denmark', 2.98, 'Check', '2016-12-08', 'Shipped') +,(4093, 203, 60, '2016-04-17', '2016-05-10', 'Henry Gonzales', '23848 6th Center', null, 'Guayatá', null, '153047', 'Argentina', 1.54, 'Check', '2016-04-18', 'New') +,(4094, 209, 37, '2016-08-07', '2016-04-26', 'Stephanie Snyder', '1152 Morning Park', null, 'Zhitan', null, null, 'China', 9.76, 'Card', '2016-05-23', 'New') +,(4095, 205, 46, '2016-09-01', '2017-02-25', 'Joan Butler', '98050 Mitchell Point', null, 'Bun Barat', null, null, 'Indonesia', 9.57, 'Card', '2017-01-25', 'Shipped') +,(4096, 211, 92, '2017-01-02', '2016-12-06', 'Gloria Murray', '8 Vidon Terrace', null, 'Rumenka', null, null, 'India', 5.33, 'Card', '2016-12-28', 'Shipped') +,(4097, 210, 66, '2016-07-04', '2016-05-30', 'Dorothy Simpson', '0 Pearson Point', null, 'Yevpatoriya', null, null, 'Ukraine', 3.52, 'Check', '2016-04-28', 'Complete') +,(4098, 219, 59, '2016-09-27', '2016-12-17', 'Katherine Brooks', '921 Anhalt Place', null, 'Rietavas', null, '90018', 'Denmark', 5.29, 'Check', '2016-12-19', 'Complete') +,(4099, 207, 65, '2016-07-06', '2016-10-11', 'Linda Reid', '89712 Dryden Point', null, 'Bronnitsy', null, '142451', 'Russia', 5.68, 'Card', '2016-07-08', 'New') +,(4100, 212, 61, '2016-04-14', '2016-05-02', 'Richard Carpenter', '17032 Melrose Crossing', null, 'White River', null, '1256', 'South Africa', 7.22, 'Card', '2016-08-03', 'Shipped') +,(4101, 206, 23, '2016-03-28', '2016-12-01', 'Clarence Coleman', '9167 Valley Edge Point', null, 'Guocun', null, null, 'China', 5.86, 'Check', '2016-08-19', 'Shipped') +,(4102, 202, 16, '2016-07-26', '2017-01-18', 'Kevin Dunn', '178 Park Meadow Avenue', null, 'Mlonggo', null, null, 'Indonesia', 4.15, 'Check', '2016-08-03', 'Complete') +,(4103, 211, 65, '2017-01-17', '2016-11-09', 'Keith Lopez', '689 Anthes Pass', null, 'Cibanten', null, null, 'Indonesia', 8.25, 'Check', '2016-10-15', 'Shipped') +,(4104, 218, 86, '2017-03-12', '2016-05-25', 'Chris Wright', '57974 Riverside Junction', null, 'Ban Mai', null, '80000', 'Thailand', 4.85, 'Cash', '2016-05-08', 'New') +,(4105, 215, 57, '2016-07-03', '2016-05-03', 'Michael Snyder', '93 Ohio Hill', null, 'Bryan', 'Texas', '77806', 'United States', 3.54, 'Card', '2016-08-10', 'Shipped') +,(4106, 210, 2 , '2017-03-07', '2016-09-18', 'David Day', '5024 Summerview Circle', null, 'Itapira', null, '13970-000', 'Brazil', 3.6, 'Cash', '2017-01-20', 'On Hold') +,(4107, 218, 4 , '2016-10-10', '2016-09-02', 'Lisa Kim', '4892 Huxley Center', null, 'Tanjungagung', null, null, 'Indonesia', 6.23, 'Cash', '2016-06-11', 'On Hold') +,(4108, 214, 26, '2016-06-02', '2016-10-05', 'Teresa Ellis', '1569 Mariners Cove Terrace', null, 'Maszkienice', null, '32-854', 'Poland', 7.65, 'Check', '2016-04-14', 'On Hold') +,(4109, 201, 51, '2016-10-07', '2017-02-02', 'Jimmy Lawson', '2165 Bluestem Center', null, 'Kampungbaru', null, null, 'Indonesia', 1.73, 'Check', '2016-09-30', 'Shipped') +,(4110, 215, 4 , '2016-08-21', '2017-02-05', 'Jerry Murray', '40070 Anderson Court', null, 'Vicente Guerrero', 'Veracruz Llave', '92440', 'Mexico', 1.57, 'Card', '2016-06-26', 'New') +,(4111, 210, 56, '2016-07-06', '2016-09-19', 'Joan Adams', '5322 Goodland Avenue', null, 'Paris 17', 'Île-de-France', '75853 CEDEX 17', 'France', 7.52, 'Cash', '2016-05-07', 'New') +,(4112, 214, 77, '2016-09-04', '2016-10-19', 'Chris Young', '7 Clove Center', null, 'Gongjiahe', null, null, 'China', 3.31, 'Card', '2016-11-06', 'New') +,(4113, 217, 62, '2016-07-18', '2016-09-30', 'Norma Oliver', '6002 Rieder Road', null, 'Lingbei', null, null, 'China', 8.85, 'Check', '2016-09-25', 'Complete') +,(4114, 213, 72, '2016-08-01', '2016-09-12', 'Douglas Day', '88 Helena Drive', null, 'Alcoutim', 'Faro', '8970-055', 'Portugal', 5.52, 'Card', '2016-12-19', 'New') +,(4115, 220, 6 , '2016-11-13', '2017-02-22', 'Janet James', '820 Westend Place', null, 'Springfield', 'Massachusetts', '01129', 'United States', 4.72, 'Cash', '2016-03-21', 'On Hold') +,(4116, 201, 72, '2016-09-01', '2016-09-07', 'Martha Lee', '2 Donald Hill', null, 'Majiang', null, null, 'China', 4.39, 'Cash', '2016-12-10', 'Shipped') +,(4117, 202, 40, '2017-02-04', '2016-12-09', 'Benjamin Cruz', '02989 Morningstar Avenue', null, 'Gīvī', null, null, 'Iran', 1.77, 'Check', '2017-01-29', 'Complete') +,(4118, 213, 48, '2016-12-24', '2017-01-06', 'Diane Porter', '7 Kensington Center', null, 'Pingyi', null, null, 'China', 4.69, 'Check', '2016-05-31', 'On Hold') +,(4119, 205, 69, '2016-06-30', '2016-05-01', 'Brandon Myers', '80411 Victoria Center', null, 'Punsu', null, null, 'Indonesia', 7.8, 'Cash', '2016-12-28', 'New') +,(4120, 220, 63, '2016-11-11', '2016-10-30', 'Beverly Garza', '2750 Sullivan Place', null, 'San Jose', null, '8427', 'Philippines', 8.15, 'Check', '2016-09-23', 'Shipped') +,(4121, 220, 32, '2016-05-05', '2016-09-05', 'Cynthia Simpson', '0731 Clarendon Point', null, 'Pomichna', null, null, 'Ukraine', 5.56, 'Card', '2017-02-23', 'On Hold') +,(4122, 201, 38, '2016-04-24', '2016-07-30', 'Janet West', '4800 Dottie Parkway', null, 'Tân Kỳ', null, null, 'Vietnam', 2.63, 'Cash', '2016-06-17', 'On Hold') +,(4123, 214, 24, '2016-04-04', '2016-06-11', 'Kevin Stone', '85 Duke Avenue', null, 'Shemonaīkha', null, null, 'Denmark', 9.99, 'Card', '2016-09-24', 'On Hold') +,(4124, 210, 9 , '2016-09-01', '2016-06-18', 'Amy Austin', '80663 Almo Park', null, 'Zaječov', null, '267 63', 'Czech Republic', 3.58, 'Card', '2016-08-29', 'Complete') +,(4125, 206, 78, '2017-02-09', '2016-07-07', 'Gregory Greene', '6 Commercial Junction', null, 'Hudong', null, null, 'China', 7.34, 'Cash', '2016-12-26', 'New') +,(4126, 215, 48, '2016-07-30', '2016-12-25', 'Laura Woods', '115 Ramsey Plaza', null, 'Allentown', 'Pennsylvania', '18105', 'United States', 4.92, 'Check', '2016-09-28', 'On Hold') +,(4127, 220, 19, '2016-03-29', '2016-05-27', 'Stephanie Reed', '452 Grayhawk Way', null, 'Sicheng', null, null, 'China', 1.1, 'Card', '2017-03-14', 'Shipped') +,(4128, 208, 64, '2016-06-03', '2016-08-13', 'Craig Gonzalez', '6028 West Street', null, 'Kliteh', null, null, 'Indonesia', 1.73, 'Cash', '2016-06-23', 'Complete') +,(4129, 201, 28, '2016-09-05', '2016-04-03', 'Raymond Gomez', '4 Stone Corner Place', null, 'Chechenglu', null, null, 'China', 4.32, 'Card', '2016-06-29', 'Complete') +,(4130, 215, 83, '2016-11-14', '2016-09-13', 'Kenneth Taylor', '7 Nevada Way', null, 'Alīpur', null, '34451', 'Iran', 5.07, 'Card', '2016-11-28', 'Complete') +,(4131, 203, 76, '2017-02-01', '2017-01-04', 'Jose Peters', '2493 Saint Paul Crossing', null, 'Bofuer', null, null, 'Indonesia', 9.85, 'Card', '2016-11-18', 'New') +,(4132, 207, 67, '2016-09-02', '2017-03-10', 'Martin West', '7251 Prairieview Place', null, 'Espinillo', null, '3460', 'Argentina', 7.9, 'Card', '2017-02-05', 'New') +,(4133, 208, 78, '2016-08-27', '2016-12-26', 'Louise Dunn', '4076 East Trail', null, 'Caramanta', null, '056047', 'Argentina', 1.28, 'Cash', '2016-12-22', 'Shipped') +,(4134, 209, 93, '2016-06-27', '2016-04-10', 'Gregory Stanley', '67 Namekagon Crossing', null, 'Pasarkayu', null, null, 'Indonesia', 2.83, 'Check', '2016-09-17', 'Complete') +,(4135, 206, 60, '2016-03-23', '2016-06-19', 'Ronald Palmer', '21 Old Shore Place', null, 'Tujing', null, null, 'China', 9.01, 'Check', '2016-12-22', 'New') +,(4136, 209, 10, '2016-11-07', '2016-11-21', 'Harry Robinson', '740 Toban Court', null, 'Liujiage', null, null, 'China', 7.13, 'Card', '2016-09-20', 'New') +,(4137, 214, 83, '2016-05-20', '2016-04-08', 'Joan Torres', '5167 Laurel Drive', null, 'Nirji', null, null, 'China', 9.81, 'Card', '2016-09-13', 'Complete') +,(4138, 207, 47, '2016-07-17', '2016-10-03', 'Carlos Jones', '4 Fuller Lane', null, 'Detroit', 'Michigan', '48258', 'United States', 8.02, 'Card', '2016-11-16', 'On Hold') +,(4139, 214, 92, '2016-07-17', '2017-01-23', 'Terry Freeman', '738 Vernon Road', null, 'Veverská Bítýška', null, '664 71', 'Czech Republic', 1.93, 'Check', '2016-04-04', 'Complete') +,(4140, 204, 92, '2016-06-09', '2016-05-06', 'Rose Hunt', '3242 Bunting Trail', null, 'Schaumburg', 'Illinois', '60193', 'United States', 7.65, 'Check', '2016-07-03', 'On Hold') +,(4141, 214, 12, '2016-11-19', '2017-03-16', 'Harry Reid', '395 Hauk Road', null, 'Rudky', null, null, 'Ukraine', 5.23, 'Card', '2017-01-18', 'On Hold') +,(4142, 212, 88, '2016-12-25', '2016-12-14', 'Fred Olson', '9311 Old Gate Park', null, 'Hejiabao', null, null, 'China', 4.02, 'Check', '2016-05-16', 'New') +,(4143, 217, 79, '2016-06-14', '2016-08-25', 'Paul Arnold', '08347 Comanche Pass', null, 'Bukovec', null, '739 84', 'Czech Republic', 6.02, 'Card', '2016-05-08', 'New') +,(4144, 216, 56, '2016-06-03', '2016-07-22', 'Carolyn Woods', '55 Stoughton Pass', null, 'Shengmi', null, null, 'China', 7.32, 'Card', '2016-07-27', 'New') +,(4145, 218, 84, '2016-07-02', '2016-11-05', 'Craig Schmidt', '2 Stephen Plaza', null, 'Arhust', null, null, 'Japan', 3.31, 'Check', '2016-06-17', 'New') +,(4146, 219, 13, '2016-09-02', '2017-01-29', 'Antonio Jordan', '452 Clemons Court', null, 'København', 'Region Hovedstaden', '1787', 'Denmark', 4.84, 'Card', '2016-11-10', 'Complete') +,(4147, 212, 51, '2016-10-19', '2017-01-20', 'Carol Evans', '1649 Crescent Oaks Road', null, 'Roubaix', 'Nord-Pas-de-Calais', '59100', 'France', 7.71, 'Card', '2017-03-08', 'On Hold') +,(4148, 217, 26, '2016-04-16', '2016-11-28', 'Steven Torres', '73679 Morning Drive', null, 'Ayotupas', null, null, 'Japan', 7.0, 'Card', '2016-06-12', 'On Hold') +,(4149, 215, 1 , '2017-02-06', '2016-10-27', 'Louis Watson', '03 Golf View Way', null, 'Madaoua', null, null, 'United Kingdom', 4.45, 'Check', '2016-07-22', 'Complete') +,(4150, 210, 100,'2017-01-14', '2016-11-12', 'Robin Reynolds', '5 Hagan Hill', null, 'Huacaschuque', null, null, 'Peru', 7.37, 'Check', '2017-02-09', 'New') +,(4151, 217, 24, '2016-09-06', '2016-10-11', 'Julia Gilbert', '3 Manitowish Avenue', null, 'Passos', 'Viana do Castelo', '4990-770', 'Portugal', 1.76, 'Card', '2016-07-16', 'New') +,(4152, 210, 90, '2016-05-26', '2016-07-14', 'Chris Chavez', '0 Birchwood Plaza', null, 'Odivelas', 'Lisboa', '2675-080', 'Portugal', 8.35, 'Cash', '2017-02-05', 'On Hold') +,(4153, 220, 79, '2016-10-27', '2016-08-14', 'Adam Morrison', '04510 West Circle', null, 'Weda', null, null, 'Japan', 8.84, 'Check', '2016-10-05', 'On Hold') +,(4154, 210, 57, '2017-02-21', '2016-09-28', 'Doris Snyder', '37027 Hintze Parkway', null, 'Vakhrushi', null, '613110', 'Russia', 2.75, 'Cash', '2016-12-02', 'Complete') +,(4155, 202, 24, '2017-02-03', '2016-08-03', 'Lisa Fisher', '919 Warner Circle', null, 'Kanbe', null, null, 'India', 2.48, 'Check', '2016-12-23', 'New') +,(4156, 213, 89, '2017-01-26', '2016-06-25', 'Gloria Murphy', '6750 Hansons Center', null, 'Saint Petersburg', null, '190990', 'Russia', 2.88, 'Cash', '2017-01-31', 'On Hold') +,(4157, 219, 83, '2016-08-03', '2016-06-15', 'Sara Mcdonald', '88365 Namekagon Park', null, 'Maofan', null, null, 'China', 4.69, 'Cash', '2016-09-22', 'New') +,(4158, 202, 79, '2016-08-13', '2016-10-08', 'John Barnes', '41 Springs Plaza', null, 'Carangola', null, '36800-000', 'Brazil', 4.84, 'Check', '2016-11-25', 'New') +,(4159, 215, 84, '2016-11-30', '2017-02-27', 'Bobby Matthews', '39153 Kipling Trail', null, 'Now Zād', null, null, 'Germany', 7.56, 'Cash', '2016-09-25', 'Shipped') +,(4160, 216, 40, '2016-07-27', '2016-12-05', 'Robin Greene', '899 Waubesa Alley', null, 'Vellinge', 'Skåne', '235 93', 'Sweden', 4.17, 'Card', '2016-12-22', 'New') +,(4161, 211, 91, '2017-03-12', '2016-09-11', 'Joseph Long', '3 Nobel Terrace', null, 'Bukabu', null, null, 'Japan', 2.26, 'Card', '2016-10-26', 'On Hold') +,(4162, 204, 94, '2016-10-08', '2016-09-26', 'Lisa Rodriguez', '880 Arizona Terrace', null, 'Elena', null, '5815', 'Argentina', 3.13, 'Cash', '2016-06-15', 'Shipped') +,(4163, 208, 49, '2017-02-23', '2016-06-05', 'Douglas Parker', '79 Mariners Cove Plaza', null, 'Şafāshahr', null, null, 'Iran', 1.83, 'Cash', '2016-10-26', 'On Hold') +,(4164, 201, 23, '2016-10-31', '2017-01-07', 'Laura Stewart', '97911 Meadow Ridge Road', null, 'Hexi', null, null, 'China', 1.24, 'Check', '2017-03-08', 'Shipped') +,(4165, 202, 27, '2017-01-07', '2016-10-05', 'Matthew Jordan', '29 Lakewood Trail', null, 'Kalkal Barat', null, null, 'Japan', 9.19, 'Card', '2016-09-03', 'Shipped') +,(4166, 218, 61, '2016-03-31', '2017-03-03', 'Denise Mason', '79 Carberry Alley', null, 'Vạn Giã', null, null, 'Vietnam', 7.78, 'Card', '2016-03-23', 'New') +,(4167, 220, 56, '2016-11-12', '2016-06-18', 'Phillip Castillo', '9910 Reindahl Parkway', null, 'Shangyanzhuang', null, null, 'China', 2.48, 'Card', '2016-07-14', 'Complete') +,(4168, 201, 41, '2016-07-10', '2016-07-29', 'Dorothy Nelson', '8 Hermina Terrace', null, 'Petrolina', null, '56300-000', 'Brazil', 1.52, 'Check', '2016-11-11', 'Shipped') +,(4169, 218, 100,'2016-12-18', '2016-12-02', 'Lawrence Willis', '21 Northland Trail', null, 'Bukor', null, null, 'India', 2.28, 'Card', '2017-01-06', 'New') +,(4170, 218, 6 , '2016-10-31', '2016-10-20', 'Jonathan Banks', '5748 Kings Hill', null, 'Tianning', null, null, 'China', 5.71, 'Check', '2016-06-02', 'Shipped') +,(4171, 211, 93, '2016-11-16', '2017-01-20', 'Gary Green', '001 Straubel Point', null, 'Huangshapu', null, null, 'China', 3.6, 'Cash', '2016-12-12', 'Complete') +,(4172, 203, 46, '2016-10-16', '2016-09-08', 'Nancy Bryant', '367 Gateway Park', null, 'Zhutang', null, null, 'China', 2.19, 'Cash', '2017-02-15', 'Shipped') +,(4173, 208, 72, '2016-08-27', '2016-04-09', 'Jeremy Rose', '8 Service Lane', null, 'Jinshandian', null, null, 'China', 8.09, 'Check', '2017-01-18', 'On Hold') +,(4174, 212, 88, '2016-06-25', '2016-08-21', 'Rebecca Gibson', '74 American Crossing', null, 'Canmang', null, null, 'China', 1.31, 'Card', '2017-02-08', 'New') +,(4175, 208, 75, '2017-02-28', '2017-01-03', 'Marilyn Hanson', '676 Service Crossing', null, 'Racławice', null, '32-222', 'Poland', 2.88, 'Check', '2017-02-18', 'New') +,(4176, 204, 1 , '2016-09-23', '2016-08-16', 'Denise Hanson', '8 Lakewood Crossing', null, 'Huaizhong', null, null, 'China', 9.48, 'Card', '2016-12-30', 'On Hold') +,(4177, 204, 20, '2017-03-02', '2016-12-27', 'John Shaw', '4752 Meadow Ridge Lane', null, 'Sosnovo-Ozerskoye', null, '612955', 'Russia', 7.17, 'Check', '2016-06-21', 'On Hold') +,(4178, 202, 30, '2016-03-20', '2016-10-17', 'Russell Fernandez', '5941 Esch Lane', null, 'Shuiyang', null, null, 'China', 1.04, 'Check', '2017-01-05', 'On Hold') +,(4179, 202, 27, '2017-01-14', '2016-07-31', 'Annie Ruiz', '67778 Butterfield Trail', null, 'Qalyūb', null, null, 'Germany', 5.51, 'Card', '2016-05-12', 'Shipped') +,(4180, 208, 1 , '2017-03-16', '2016-04-04', 'Ashley Gonzales', '88504 Johnson Street', null, 'Salingogan', null, '6417', 'Philippines', 7.56, 'Check', '2016-07-26', 'Shipped') +,(4181, 203, 70, '2016-03-25', '2016-11-06', 'Richard George', '54 3rd Circle', null, 'Haibeitou', null, null, 'China', 1.99, 'Cash', '2016-09-05', 'New') +,(4182, 219, 69, '2016-04-11', '2017-02-03', 'David Harris', '2 Menomonie Pass', null, 'Oslo', 'Oslo', '0188', 'Greece', 1.93, 'Check', '2016-11-30', 'Shipped') +,(4183, 211, 25, '2016-12-08', '2016-11-16', 'Catherine Reynolds', '302 Autumn Leaf Parkway', null, 'Lameiras', 'Lisboa', '2715-145', 'Portugal', 6.68, 'Cash', '2016-04-02', 'Shipped') +,(4184, 217, 73, '2016-06-19', '2016-11-29', 'Donald Moreno', '690 Laurel Park', null, 'Sinisian', null, '4212', 'Philippines', 3.1, 'Check', '2017-01-06', 'New') +,(4185, 210, 34, '2016-07-03', '2016-05-23', 'Ryan Thomas', '45044 Harper Place', null, 'Madīnat Lab‘ūs', null, null, 'South Africa', 6.31, 'Cash', '2016-06-27', 'Complete') +,(4186, 206, 91, '2016-05-26', '2016-09-09', 'Ruby Lynch', '8350 Karstens Parkway', null, 'Puyo', null, null, 'Argentina', 6.07, 'Check', '2016-05-10', 'Shipped') +,(4187, 208, 64, '2016-05-31', '2016-10-16', 'Linda Robinson', '6069 Chive Plaza', null, 'Joutseno', null, '54101', 'Finland', 3.11, 'Card', '2016-05-15', 'Shipped') +,(4188, 216, 41, '2017-02-07', '2016-03-28', 'Bonnie Morris', '2611 Comanche Junction', null, 'Lacombe', 'Alberta', 'T4L', 'Canada', 2.53, 'Check', '2016-08-31', 'New') +,(4189, 206, 51, '2016-12-20', '2016-12-08', 'Dennis Gardner', '2348 Blue Bill Park Crossing', null, 'Ngkiong', null, null, 'Japan', 5.1, 'Check', '2016-11-28', 'New') +,(4190, 220, 54, '2016-08-06', '2016-08-27', 'Carolyn Matthews', '817 Ohio Point', null, 'Orekhovo-Zuyevo', null, '142609', 'Russia', 7.52, 'Card', '2016-03-22', 'On Hold') +,(4191, 207, 96, '2016-07-03', '2016-06-18', 'Jesse Parker', '3 Eastwood Terrace', null, 'Berezovo', null, null, 'Ukraine', 6.64, 'Check', '2016-05-07', 'New') +,(4192, 216, 18, '2016-06-05', '2017-01-11', 'Ann Gilbert', '6 Oak Valley Lane', null, 'Caijiang', null, null, 'China', 3.72, 'Cash', '2016-11-17', 'On Hold') +,(4193, 208, 22, '2016-06-26', '2017-02-22', 'Martha Hawkins', '57581 Union Road', null, 'Ilinden', null, '1041', 'Denmark', 5.64, 'Cash', '2016-05-23', 'On Hold') +,(4194, 207, 42, '2017-02-03', '2017-01-08', 'Jeffrey Hart', '83 Green Ridge Point', null, 'Wangcheng', null, null, 'China', 1.15, 'Check', '2016-12-07', 'Shipped') +,(4195, 217, 28, '2016-10-18', '2016-05-01', 'Joseph Riley', '54373 Coleman Street', null, 'Karangbungur', null, null, 'Japan', 5.9, 'Cash', '2016-04-23', 'Complete') +,(4196, 207, 78, '2016-07-09', '2016-07-15', 'Brian Dean', '9 Stone Corner Hill', null, 'Dambulla', null, '21100', 'United Kingdom', 5.15, 'Check', '2016-07-09', 'On Hold') +,(4197, 204, 38, '2016-07-19', '2016-04-13', 'Christine Campbell', '47302 Porter Junction', null, 'Dananshan', null, null, 'China', 6.74, 'Card', '2016-11-07', 'Complete') +,(4198, 201, 7 , '2017-03-02', '2016-08-16', 'Ruth Mcdonald', '401 Erie Avenue', null, 'Borkowice', null, '26-422', 'Poland', 3.24, 'Cash', '2016-04-17', 'New') +,(4199, 216, 87, '2016-12-14', '2017-03-05', 'Jean Armstrong', '450 Sullivan Avenue', null, 'Carpenter', null, '2009', 'Philippines', 4.25, 'Cash', '2016-07-11', 'Complete') +,(4200, 218, 8 , '2017-02-01', '2016-04-17', 'Gary Price', '775 Butterfield Lane', null, 'Vaasa', null, '66999', 'Finland', 5.36, 'Card', '2016-07-09', 'Shipped') +,(4201, 217, 77, '2016-11-10', '2016-11-13', 'Carolyn Scott', '5878 Badeau Lane', null, 'Kazanskaya', null, '396614', 'Russia', 7.94, 'Card', '2016-12-09', 'New') +,(4202, 204, 10, '2016-08-12', '2016-03-21', 'Earl Anderson', '9 Roth Court', null, 'Governor’s Harbour', null, null, 'Canada', 2.47, 'Card', '2016-08-06', 'Complete') +,(4203, 204, 54, '2016-05-26', '2016-04-18', 'Elizabeth Kelley', '70 Burrows Street', null, 'Fucheng', null, null, 'China', 9.94, 'Cash', '2016-08-24', 'Shipped') +,(4204, 208, 58, '2017-03-09', '2016-04-17', 'Julia Wilson', '46476 Burning Wood Crossing', null, 'Koper', null, '6600', 'India', 3.82, 'Card', '2016-08-26', 'New') +,(4205, 208, 85, '2016-05-04', '2016-03-18', 'Jeffrey Oliver', '39 Tennessee Avenue', null, 'Jejkowice', null, '44-290', 'Poland', 7.22, 'Card', '2016-09-23', 'Shipped') +,(4206, 220, 8 , '2016-06-16', '2017-01-03', 'Angela Walker', '579 Miller Street', null, 'Hà Tĩnh', null, null, 'Vietnam', 1.04, 'Check', '2016-05-18', 'Complete') +,(4207, 212, 55, '2016-07-04', '2016-11-09', 'Karen Hansen', '953 Manufacturers Pass', null, 'Lysekil', 'Västra Götaland', '453 35', 'Sweden', 8.81, 'Check', '2016-03-18', 'New') +,(4208, 217, 96, '2016-10-26', '2016-07-11', 'Patricia West', '1 Browning Alley', null, 'Huayang', null, null, 'China', 7.54, 'Card', '2016-09-15', 'New') +,(4209, 203, 71, '2016-08-04', '2017-01-01', 'Phillip Gardner', '30438 Mariners Cove Way', null, 'Phu Khiao', null, '36110', 'Thailand', 3.03, 'Check', '2016-03-31', 'Shipped') +,(4210, 207, 30, '2017-03-08', '2016-07-21', 'Fred Howard', '45981 Hovde Trail', null, 'Suncheon', null, null, 'Finland', 1.13, 'Check', '2016-07-14', 'On Hold') +,(4211, 217, 57, '2016-05-28', '2017-03-11', 'George Wagner', '24863 Messerschmidt Road', null, 'Ningzhong', null, null, 'China', 6.5, 'Check', '2016-07-26', 'New') +,(4212, 213, 19, '2016-11-28', '2016-06-09', 'Clarence Russell', '85 Kropf Circle', null, 'Ouro Branco', null, '59347-000', 'Brazil', 6.88, 'Check', '2016-04-02', 'On Hold') +,(4213, 217, 51, '2016-06-25', '2016-05-25', 'Jane Johnston', '1708 Corscot Pass', null, 'Şafāshahr', null, null, 'Iran', 9.16, 'Cash', '2016-10-12', 'Complete') +,(4214, 203, 88, '2017-02-19', '2016-03-25', 'John Adams', '100 Hollow Ridge Way', null, 'Satita', null, null, 'India', 3.01, 'Cash', '2016-11-19', 'Shipped') +,(4215, 202, 12, '2017-01-26', '2016-10-07', 'Diana Graham', '12 Esch Park', null, 'Krasnokamensk', null, '662955', 'Russia', 9.29, 'Check', '2016-06-10', 'Shipped') +,(4216, 211, 66, '2016-07-19', '2016-11-30', 'John Henry', '448 Hanover Trail', null, 'Phitsanulok', null, '65000', 'Thailand', 7.23, 'Card', '2016-09-22', 'Shipped') +,(4217, 218, 98, '2016-11-20', '2016-11-12', 'Donna Bradley', '92136 Arkansas Avenue', null, 'Balong Wetan', null, null, 'Japan', 7.79, 'Card', '2016-12-18', 'New') +,(4218, 206, 5 , '2016-05-04', '2016-08-19', 'Kevin Harper', '2911 Laurel Point', null, 'Patapan', null, null, 'Japan', 1.52, 'Card', '2016-03-20', 'On Hold') +,(4219, 205, 76, '2016-11-15', '2016-12-12', 'Margaret Hanson', '9603 Northridge Junction', null, 'Mwembe', null, null, 'India', 4.76, 'Cash', '2017-03-14', 'Shipped') +,(4220, 206, 62, '2016-12-30', '2016-10-23', 'Henry Bradley', '84 Lake View Plaza', null, 'Zheleznovodsk', null, '357408', 'Russia', 8.08, 'Cash', '2017-02-23', 'Complete') +,(4221, 218, 91, '2016-08-07', '2016-08-31', 'Jane Fowler', '2484 Hoepker Hill', null, 'Huangcun', null, null, 'China', 9.34, 'Card', '2017-01-10', 'Complete') +,(4222, 207, 19, '2016-05-22', '2016-06-25', 'Kimberly Peterson', '5851 Carey Crossing', null, 'Pochuta', null, '04008', 'Japan', 9.16, 'Card', '2016-04-25', 'Shipped') +,(4223, 203, 69, '2017-02-13', '2016-09-18', 'Nicholas Simpson', '9 Hudson Way', null, 'Chashan', null, null, 'China', 5.37, 'Check', '2017-01-01', 'On Hold') +,(4224, 214, 71, '2017-02-28', '2016-06-18', 'Carol Rodriguez', '78 Grayhawk Place', null, 'Luntas', null, null, 'Indonesia', 1.76, 'Card', '2016-10-06', 'Shipped') +,(4225, 207, 34, '2017-03-06', '2016-07-20', 'Jessica Mason', '65 Merrick Lane', null, 'Křižanov', null, '789 01', 'Czech Republic', 9.75, 'Card', '2016-12-28', 'New') +,(4226, 209, 74, '2016-06-04', '2017-01-15', 'Jeffrey Sims', '05441 Wayridge Pass', null, 'Rennes', 'Bretagne', '35047 CEDEX 9', 'France', 9.09, 'Check', '2016-05-19', 'Shipped') +,(4227, 205, 74, '2016-09-09', '2017-01-06', 'Arthur Simmons', '733 Logan Circle', null, 'Dzhankoy', null, null, 'Ukraine', 2.51, 'Check', '2017-01-25', 'New') +,(4228, 207, 52, '2017-01-30', '2017-01-08', 'Kevin Williams', '3561 6th Trail', null, 'Narganá', null, null, 'Denmark', 7.32, 'Cash', '2016-06-24', 'On Hold') +,(4229, 209, 76, '2016-05-05', '2016-07-11', 'Joe Stewart', '0314 Ryan Parkway', null, 'San Jose', 'Oaxaca', '69570', 'Mexico', 9.28, 'Check', '2016-05-06', 'Shipped') +,(4230, 214, 2 , '2016-09-19', '2016-09-08', 'Walter Barnes', '80695 Stone Corner Road', null, 'Busdi', null, '6210', 'Philippines', 5.97, 'Check', '2016-07-19', 'Shipped') +,(4231, 211, 55, '2016-08-27', '2016-10-04', 'Sean Holmes', '91 Becker Drive', null, 'Gezan', null, null, 'China', 3.81, 'Check', '2016-06-14', 'Shipped') +,(4232, 209, 14, '2016-04-01', '2017-03-06', 'Sandra Perez', '45373 Buhler Park', null, 'Ust’-Kut', null, '162176', 'Russia', 4.25, 'Cash', '2017-01-22', 'Shipped') +,(4233, 205, 96, '2016-09-27', '2016-07-03', 'Sara Kelly', '73457 Buhler Court', null, 'Sima', null, null, 'Canada', 7.2, 'Card', '2016-12-14', 'Complete') +,(4234, 217, 74, '2016-11-22', '2017-01-18', 'Edward Reid', '02 Westport Trail', null, 'Tchaourou', null, null, 'India', 3.5, 'Cash', '2016-12-25', 'New') +,(4235, 206, 69, '2016-03-17', '2016-10-29', 'Betty Cook', '83578 Ohio Avenue', null, 'Stockholm', 'Stockholm', '101 22', 'Sweden', 6.17, 'Check', '2016-09-02', 'On Hold') +,(4236, 217, 97, '2017-02-06', '2016-07-01', 'Diana Ellis', '49 Jenna Circle', null, 'Yanshan', null, null, 'China', 6.06, 'Check', '2016-07-16', 'Complete') +,(4237, 216, 17, '2016-11-30', '2016-10-02', 'Donald Miller', '8581 Farragut Junction', null, 'Yosowilangun', null, null, 'Indonesia', 8.9, 'Check', '2016-11-01', 'Complete') +,(4238, 203, 21, '2017-02-09', '2016-12-14', 'Eric Coleman', '9242 Badeau Street', null, 'Caiyuan', null, null, 'China', 4.1, 'Check', '2016-06-07', 'Shipped') +,(4239, 213, 23, '2016-09-15', '2016-11-04', 'Heather Vasquez', '454 Gale Hill', null, 'Susoh', null, null, 'Indonesia', 1.59, 'Check', '2016-10-25', 'New') +,(4240, 208, 2 , '2016-05-28', '2016-05-21', 'Martin Sims', '30 Bunting Center', null, 'Efeng', null, null, 'China', 1.92, 'Cash', '2016-12-15', 'Complete') +,(4241, 202, 85, '2017-02-05', '2016-08-13', 'Catherine Washington', '637 Hermina Court', null, 'San Francisco', 'Jalisco', '46175', 'Mexico', 6.49, 'Card', '2016-12-20', 'On Hold') +,(4242, 204, 17, '2016-10-04', '2016-05-13', 'Gary Kennedy', '2 Grasskamp Point', null, 'Famaillá', null, '4132', 'Argentina', 9.78, 'Card', '2016-12-03', 'Complete') +,(4243, 205, 86, '2016-04-15', '2016-05-25', 'Pamela Parker', '43642 Utah Point', null, 'Santa Rosa', 'Nuevo Leon', '67803', 'Mexico', 1.78, 'Card', '2017-02-16', 'Shipped') +,(4244, 208, 3 , '2016-08-02', '2017-03-13', 'Michelle Russell', '947 Jenna Place', null, 'Kinshasa', null, null, 'Canada', 8.43, 'Cash', '2016-04-13', 'New') +,(4245, 210, 32, '2016-06-16', '2016-07-14', 'Lois Jenkins', '1 Pepper Wood Road', null, 'Kallinge', 'Blekinge', '372 53', 'Sweden', 4.77, 'Cash', '2016-03-17', 'On Hold') +,(4246, 203, 39, '2017-02-04', '2016-08-08', 'Kelly Ramirez', '20490 Eagle Crest Circle', null, 'Baraba', null, '623509', 'Russia', 8.65, 'Cash', '2016-10-04', 'Complete') +,(4247, 202, 24, '2016-05-05', '2016-11-26', 'Harold Gray', '9033 Elmside Plaza', null, 'N’dalatando', null, null, 'Netherlands', 2.78, 'Cash', '2016-07-24', 'New') +,(4248, 210, 16, '2017-01-27', '2017-03-14', 'Dennis Fisher', '4 Sage Road', null, 'Niederanven', null, 'L-6948', 'United Kingdom', 1.26, 'Check', '2016-05-12', 'On Hold') +,(4249, 203, 20, '2016-07-21', '2016-12-08', 'Antonio Wells', '99743 Algoma Hill', null, 'Mūdīyah', null, null, 'South Africa', 4.36, 'Card', '2016-05-28', 'Complete') +,(4250, 217, 88, '2016-05-31', '2016-10-17', 'William Gonzales', '3258 Holy Cross Way', null, 'Yangdun', null, null, 'China', 7.06, 'Check', '2016-04-13', 'New') +,(4251, 211, 1 , '2017-03-04', '2016-10-27', 'Ronald Ward', '5 Logan Terrace', null, 'Tanahmerah', null, null, 'Indonesia', 4.38, 'Card', '2016-09-22', 'On Hold') +,(4252, 217, 87, '2016-12-29', '2016-09-18', 'Gloria Boyd', '10 Grayhawk Hill', null, 'Boromlya', null, null, 'Ukraine', 4.84, 'Cash', '2016-08-01', 'On Hold') +,(4253, 212, 99, '2017-02-02', '2016-04-28', 'Raymond Scott', '3 Donald Trail', null, 'Lakshmīpur', null, '1553', 'Canada', 8.37, 'Cash', '2016-12-06', 'On Hold') +,(4254, 201, 7 , '2016-11-28', '2016-04-11', 'Arthur Hamilton', '95 Doe Crossing Avenue', null, 'Purwosari', null, null, 'Indonesia', 6.84, 'Card', '2016-06-14', 'Shipped') +,(4255, 220, 100,'2016-09-30', '2016-10-08', 'Jean Wagner', '5690 Meadow Valley Alley', null, 'Svedala', 'Skåne', '233 94', 'Sweden', 8.57, 'Check', '2017-01-06', 'Shipped') +,(4256, 218, 78, '2016-04-28', '2016-04-03', 'Kimberly Rose', '6067 Twin Pines Hill', null, 'Capinzal', null, '89665-000', 'Brazil', 6.07, 'Check', '2016-05-18', 'New') +,(4257, 213, 44, '2016-11-04', '2016-03-28', 'Doris Foster', '170 Chive Court', null, 'Lang', null, null, 'China', 1.72, 'Card', '2016-10-20', 'Shipped') +,(4258, 208, 46, '2017-01-11', '2016-09-25', 'Teresa Reynolds', '3 Prairie Rose Alley', null, 'Tashang', null, null, 'China', 4.84, 'Card', '2016-10-16', 'On Hold') +,(4259, 215, 89, '2016-07-07', '2016-12-29', 'Christine Turner', '0746 Heffernan Center', null, 'Henggang', null, null, 'China', 6.81, 'Cash', '2016-08-21', 'New') +,(4260, 210, 23, '2016-10-26', '2017-02-10', 'Jimmy Jordan', '903 Anniversary Trail', null, 'Elaiochóri', null, null, 'Greece', 9.66, 'Cash', '2017-01-10', 'Complete') +,(4261, 207, 20, '2016-11-07', '2017-02-17', 'Andrew Baker', '3 Pennsylvania Park', null, 'Kansas City', 'Missouri', '64130', 'United States', 5.46, 'Cash', '2016-11-20', 'Complete') +,(4262, 203, 32, '2017-02-21', '2016-11-17', 'Diana Dixon', '18520 Maryland Drive', null, 'Santa Catalina', null, '2701', 'Philippines', 4.66, 'Card', '2017-01-09', 'On Hold') +,(4263, 210, 10, '2017-02-28', '2017-02-26', 'Karen Miller', '5608 Moose Court', null, 'Torres Vedras', 'Lisboa', '2560-234', 'Portugal', 5.71, 'Card', '2016-11-30', 'New') +,(4264, 214, 39, '2017-01-09', '2016-10-24', 'Angela Austin', '9659 Vera Point', null, 'Santiaoshi', null, null, 'China', 6.59, 'Check', '2016-05-07', 'Shipped') +,(4265, 203, 3 , '2016-11-11', '2016-11-22', 'Steve Snyder', '7626 Hoepker Junction', null, 'Wulan Hada', null, null, 'China', 5.67, 'Cash', '2017-01-01', 'New') +,(4266, 218, 94, '2016-04-06', '2016-10-02', 'Kevin Daniels', '24 Chinook Point', null, 'Bhairāhawā', null, null, 'United Kingdom', 8.21, 'Card', '2016-05-12', 'Shipped') +,(4267, 203, 58, '2016-11-14', '2016-03-28', 'Patricia Welch', '60375 Corry Street', null, 'Solidaridad', 'Veracruz Llave', '94330', 'Mexico', 2.77, 'Card', '2017-02-02', 'On Hold') +,(4268, 218, 2 , '2016-07-02', '2016-08-14', 'Wanda Reynolds', '965 Calypso Circle', null, 'Dera Bugti', null, '80100', 'Iran', 8.86, 'Check', '2017-01-30', 'On Hold') +,(4269, 216, 47, '2017-03-11', '2016-07-16', 'Harold Williamson', '14332 Texas Junction', null, 'Mzimba', null, null, 'India', 2.47, 'Cash', '2016-06-01', 'Shipped') +,(4270, 213, 62, '2016-11-09', '2017-02-07', 'Juan Fox', '17 Eagan Crossing', null, 'Xiayang', null, null, 'China', 7.63, 'Card', '2017-02-17', 'Shipped') +,(4271, 211, 70, '2016-04-16', '2016-04-26', 'Ryan Long', '0 Harper Circle', null, 'Blagoveshchenka', null, '658670', 'Russia', 3.2, 'Card', '2016-09-10', 'Complete') +,(4272, 206, 29, '2016-03-25', '2016-10-07', 'Frank Cole', '07 Westend Place', null, 'Laixi', null, null, 'China', 1.93, 'Cash', '2016-05-01', 'New') +,(4273, 209, 25, '2016-05-06', '2016-04-13', 'Tammy Wilson', '74278 Grim Pass', null, 'Åkersberga', 'Stockholm', '184 70', 'Sweden', 2.83, 'Card', '2016-10-29', 'Complete') +,(4274, 206, 82, '2017-02-07', '2017-03-06', 'Joan Gonzales', '40 Stephen Street', null, 'Tlogoagung', null, null, 'Indonesia', 3.44, 'Check', '2016-10-14', 'Complete') +,(4275, 203, 91, '2016-10-10', '2016-11-04', 'Jeffrey Hughes', '38 Toban Plaza', null, 'Privas', 'Rhône-Alpes', '07004 CEDEX', 'France', 8.33, 'Card', '2016-04-23', 'On Hold') +,(4276, 210, 89, '2016-05-14', '2016-09-03', 'Rachel Martin', '08 Lake View Hill', null, 'Sandgerði', null, '245', 'India', 2.07, 'Cash', '2016-06-07', 'Complete') +,(4277, 208, 97, '2016-04-06', '2016-07-02', 'Laura Harper', '1 Dexter Street', null, 'Xintaimen', null, null, 'China', 8.08, 'Check', '2016-05-11', 'Shipped') +,(4278, 215, 3 , '2017-03-04', '2017-03-08', 'Annie Rivera', '5975 Debra Park', null, 'Canchaque', null, null, 'Peru', 5.65, 'Check', '2016-04-09', 'Complete') +,(4279, 201, 6 , '2017-03-01', '2016-08-06', 'Pamela Graham', '2 Monument Avenue', null, 'Danxi', null, null, 'China', 2.05, 'Check', '2016-05-23', 'New') +,(4280, 202, 35, '2017-02-04', '2016-06-09', 'Joseph Jenkins', '00001 Fairfield Center', null, 'Mashtūl as Sūq', null, null, 'Germany', 5.32, 'Card', '2016-12-28', 'New') +,(4281, 203, 76, '2016-05-19', '2016-07-29', 'Eugene Garcia', '8308 Onsgard Lane', null, 'Limoncito', null, null, 'India', 4.07, 'Card', '2016-10-20', 'Shipped') +,(4282, 204, 27, '2016-07-20', '2016-09-26', 'Kevin Anderson', '8 Thierer Center', null, 'Saint-Étienne', 'Rhône-Alpes', '42963 CEDEX 9', 'France', 4.88, 'Card', '2016-07-21', 'Complete') +,(4283, 214, 50, '2016-11-27', '2016-06-14', 'Robin Parker', '51949 Forster Parkway', null, 'Laval', 'Pays de la Loire', '53009 CEDEX', 'France', 1.04, 'Check', '2016-04-20', 'Complete') +,(4284, 214, 74, '2016-11-29', '2016-12-08', 'Kelly Palmer', '2 Hauk Hill', null, 'Östersund', 'Jämtland', '831 17', 'Sweden', 4.26, 'Card', '2016-10-08', 'Complete') +,(4285, 214, 76, '2016-10-22', '2016-05-05', 'Diane Freeman', '5441 Petterle Way', null, 'El Tambo', null, null, 'Peru', 7.17, 'Check', '2016-09-27', 'New') +,(4286, 209, 96, '2016-11-08', '2016-08-26', 'Kathleen Adams', '423 Talisman Point', null, 'Kurume', null, '963-8846', 'Japan', 1.99, 'Cash', '2016-05-19', 'On Hold') +,(4287, 204, 76, '2016-10-18', '2017-01-15', 'Teresa Mendoza', '818 Atwood Lane', null, 'Mosteiro', 'Viana do Castelo', '4980-125', 'Portugal', 3.29, 'Cash', '2016-10-03', 'On Hold') +,(4288, 210, 45, '2016-10-15', '2016-12-14', 'Irene Anderson', '4 Rutledge Alley', null, 'Saparua', null, null, 'Indonesia', 4.35, 'Card', '2016-10-13', 'On Hold') +,(4289, 209, 61, '2017-02-12', '2016-07-15', 'Terry Bennett', '351 Johnson Circle', null, 'Quiling', null, '2902', 'Philippines', 6.77, 'Card', '2016-07-20', 'New') +,(4290, 203, 1 , '2017-03-02', '2016-08-25', 'Ronald Mccoy', '73609 Waywood Center', null, 'Zheleznodorozhnyy', null, '238411', 'Russia', 1.05, 'Cash', '2016-06-10', 'New') +,(4291, 211, 73, '2016-09-13', '2016-04-17', 'Andrew Matthews', '820 Lawn Crossing', null, 'Japeri', null, '26400-000', 'Brazil', 1.22, 'Cash', '2016-09-08', 'New') +,(4292, 215, 15, '2016-12-26', '2016-10-04', 'Melissa Chapman', '88384 Ohio Park', null, 'Dayr al Ghuşūn', null, null, 'India', 9.89, 'Check', '2016-08-14', 'Shipped') +,(4293, 210, 18, '2016-11-23', '2016-12-12', 'Russell Griffin', '6 Eliot Lane', null, 'Changshu City', null, null, 'China', 9.37, 'Check', '2016-05-10', 'On Hold') +,(4294, 206, 95, '2016-06-24', '2017-01-21', 'Jeffrey Gray', '04078 Hudson Drive', null, 'Luangwa', null, null, 'India', 2.58, 'Cash', '2016-06-15', 'Shipped') +,(4295, 215, 85, '2016-10-23', '2017-01-29', 'Lori Frazier', '724 Logan Drive', null, 'Gent', 'Vlaanderen', '9052', 'Denmark', 8.59, 'Cash', '2017-01-01', 'New') +,(4296, 217, 83, '2016-04-08', '2017-02-07', 'Joan Ortiz', '90 Merchant Avenue', null, 'Irasan', null, '3120', 'Philippines', 4.64, 'Card', '2016-09-01', 'Complete') +,(4297, 211, 29, '2016-07-13', '2017-02-06', 'John Stanley', '680 Artisan Pass', null, 'Borås', 'Västra Götaland', '504 75', 'Sweden', 1.77, 'Cash', '2016-07-12', 'On Hold') +,(4298, 208, 65, '2016-12-28', '2016-04-19', 'Dorothy Bell', '397 Kim Place', null, 'Zhongxin', null, null, 'China', 1.2, 'Check', '2017-01-28', 'On Hold') +,(4299, 201, 43, '2017-01-12', '2016-08-07', 'Doris Ramirez', '181 Prentice Terrace', null, 'Severnyy', null, '141707', 'Russia', 2.65, 'Card', '2016-08-13', 'Shipped') +,(4300, 207, 27, '2016-11-10', '2016-11-01', 'Elizabeth Harrison', '067 Talisman Trail', null, 'Guangang', null, null, 'China', 4.78, 'Check', '2016-04-30', 'On Hold') +,(4301, 206, 64, '2016-08-14', '2017-01-13', 'Judith Howard', '55095 Sloan Alley', null, 'Longhua', null, null, 'China', 1.93, 'Card', '2016-10-29', 'New') +,(4302, 213, 33, '2017-01-19', '2016-05-23', 'Julia Simpson', '87375 Londonderry Parkway', null, 'Fufang', null, null, 'China', 9.23, 'Card', '2016-11-15', 'Shipped') +,(4303, 220, 49, '2016-08-01', '2016-04-23', 'Elizabeth Bell', '60 Ridgeview Trail', null, 'Infantas', 'Braga', '4810-578', 'Portugal', 3.22, 'Check', '2017-02-01', 'Complete') +,(4304, 217, 56, '2016-09-07', '2016-08-13', 'Ernest Andrews', '231 Graceland Terrace', null, 'Pindamonhangaba', null, '12400-000', 'Brazil', 2.77, 'Card', '2016-04-04', 'On Hold') +,(4305, 219, 44, '2016-06-11', '2016-03-27', 'Jeffrey Lopez', '76434 Havey Court', null, 'Khvalovo', null, '187435', 'Russia', 8.84, 'Cash', '2016-04-14', 'Shipped') +,(4306, 212, 16, '2016-05-29', '2016-12-31', 'Ralph Weaver', '15 Armistice Alley', null, 'Odienné', null, null, 'Canada', 7.1, 'Card', '2017-01-09', 'Shipped') +,(4307, 210, 16, '2016-10-19', '2017-01-10', 'Mary Stevens', '1928 Aberg Park', null, 'Dzwola', null, '23-304', 'Poland', 4.04, 'Card', '2016-08-24', 'Complete') +,(4308, 220, 50, '2016-09-23', '2016-09-16', 'Douglas Welch', '9 Ryan Circle', null, 'Babakanloa', null, null, 'Indonesia', 1.11, 'Card', '2016-10-13', 'Shipped') +,(4309, 217, 99, '2016-10-17', '2017-01-01', 'Raymond Cruz', '0402 Burning Wood Alley', null, 'Bucay', null, '2805', 'Philippines', 9.27, 'Cash', '2016-06-02', 'Complete') +,(4310, 219, 65, '2016-04-14', '2016-05-14', 'Sara Frazier', '43 Truax Terrace', null, 'Halton', 'England', 'LS9', 'United Kingdom', 5.56, 'Check', '2016-12-04', 'New') +,(4311, 220, 17, '2017-02-03', '2016-07-09', 'Sarah Lane', '414 Gina Point', null, 'Fulong', null, null, 'China', 3.35, 'Cash', '2016-12-27', 'New') +,(4312, 205, 77, '2017-02-27', '2016-04-10', 'Michelle Bradley', '16664 Towne Point', null, 'Yangchun', null, null, 'China', 8.64, 'Cash', '2017-01-28', 'Complete') +,(4313, 210, 68, '2016-08-29', '2016-10-27', 'Marie Porter', '7802 Hovde Plaza', null, 'Redakodi', null, null, 'Indonesia', 1.97, 'Cash', '2016-11-08', 'Complete') +,(4314, 207, 41, '2016-08-08', '2016-08-31', 'Melissa Moore', '438 Mendota Way', null, 'Bensonville', null, null, 'United Kingdom', 7.97, 'Cash', '2017-01-17', 'New') +,(4315, 212, 96, '2016-08-08', '2016-07-27', 'Katherine Bell', '76 Manley Park', null, 'Xagmakajor', null, null, 'China', 7.49, 'Cash', '2016-03-29', 'New') +,(4316, 209, 67, '2016-09-26', '2017-02-03', 'Katherine Elliott', '86 Nelson Point', null, 'Boavista', 'Aveiro', '4520-104', 'Portugal', 1.92, 'Card', '2016-04-28', 'Complete') +,(4317, 219, 40, '2016-10-09', '2016-12-21', 'Dorothy Rose', '75962 Basil Drive', null, 'Pécs', 'Baranya', '7610', 'Denmark', 3.23, 'Card', '2017-02-21', 'Shipped') +,(4318, 209, 68, '2017-01-15', '2017-01-03', 'Larry Hicks', '5985 Crest Line Road', null, 'Lingqiao', null, null, 'China', 2.77, 'Check', '2017-01-20', 'Complete') +,(4319, 214, 55, '2016-07-14', '2017-03-05', 'Paula Rodriguez', '6 Lawn Court', null, 'Simajia', null, null, 'China', 6.33, 'Check', '2016-04-08', 'Shipped') +,(4320, 203, 83, '2016-12-26', '2016-10-07', 'Sharon Richards', '43297 Rigney Avenue', null, 'Salto', null, null, 'India', 7.32, 'Check', '2016-09-14', 'Complete') +,(4321, 215, 29, '2016-12-27', '2016-07-21', 'Craig Day', '22 Thierer Center', null, 'Alberton', 'Prince Edward Island', 'P7K', 'Canada', 5.32, 'Check', '2016-04-02', 'On Hold') +,(4322, 207, 80, '2016-12-06', '2016-05-21', 'Donna Butler', '4149 Bartelt Point', null, 'Carbonear', 'Newfoundland and Labrador', 'A1Y', 'Canada', 3.1, 'Check', '2016-10-03', 'New') +,(4323, 216, 31, '2016-06-27', '2017-03-13', 'Carolyn Ferguson', '97225 Bartelt Avenue', null, 'Tinalmud', null, '1531', 'Philippines', 7.11, 'Cash', '2016-05-22', 'Complete') +,(4324, 212, 78, '2016-05-19', '2016-11-14', 'Peter Romero', '22977 Westridge Terrace', null, 'Toulouse', 'Midi-Pyrénées', '31029 CEDEX 4', 'France', 2.97, 'Check', '2016-09-09', 'Shipped') +,(4325, 213, 73, '2017-02-18', '2016-09-22', 'Jose Greene', '40351 Rusk Place', null, 'Vila Nova de Gaia', 'Porto', '4400-005', 'Portugal', 5.76, 'Cash', '2016-12-12', 'Shipped') +,(4326, 208, 62, '2017-02-14', '2016-11-13', 'Betty Anderson', '8403 Melody Center', null, 'Būsh', null, null, 'Germany', 9.56, 'Check', '2016-10-08', 'Shipped') +,(4327, 220, 56, '2016-09-06', '2016-08-17', 'Amanda Frazier', '47 Dapin Center', null, 'Pasirmanggu', null, null, 'Indonesia', 2.25, 'Card', '2016-07-11', 'On Hold') +,(4328, 201, 24, '2016-10-29', '2017-01-25', 'Douglas Foster', '6953 Stoughton Avenue', null, 'Bokhan', null, '669310', 'Russia', 1.26, 'Card', '2016-07-06', 'Complete') +,(4329, 206, 33, '2017-03-09', '2017-03-12', 'Louis Brown', '76 Little Fleur Park', null, 'Shazhenxi', null, null, 'China', 3.4, 'Check', '2016-08-09', 'Complete') +,(4330, 205, 61, '2016-04-14', '2016-09-26', 'Elizabeth Butler', '82 Springview Road', null, 'Kimito', null, '11710', 'Finland', 1.92, 'Card', '2016-10-18', 'Shipped') +,(4331, 220, 39, '2016-06-10', '2016-04-07', 'Albert Flores', '19 Talmadge Hill', null, 'Almelo', 'Provincie Overijssel', '7604', 'Netherlands', 4.23, 'Check', '2016-12-15', 'Shipped') +,(4332, 217, 47, '2016-10-25', '2016-09-28', 'Kimberly Fowler', '0 Trailsway Crossing', null, 'Iwata', null, '925-0145', 'Japan', 8.14, 'Check', '2016-06-06', 'On Hold') +,(4333, 209, 12, '2016-12-25', '2016-10-31', 'Joe Powell', '5 Everett Drive', null, 'Bergen', 'Hordaland', '5895', 'Greece', 8.02, 'Cash', '2016-09-05', 'Shipped') +,(4334, 219, 1 , '2016-08-12', '2017-02-18', 'Virginia Collins', '78693 Cordelia Point', null, 'San Benito', null, '8423', 'Philippines', 8.4, 'Cash', '2017-01-06', 'Complete') +,(4335, 220, 59, '2017-02-26', '2016-11-05', 'Mary Howard', '5 Golf View Street', null, 'Gjinkar', null, null, 'Canada', 3.54, 'Card', '2016-06-09', 'Complete') +,(4336, 220, 19, '2017-02-09', '2017-01-26', 'Ronald Stevens', '57 Old Shore Crossing', null, 'Bureng', null, null, 'United Kingdom', 8.21, 'Card', '2016-12-21', 'On Hold') +,(4337, 204, 59, '2016-05-14', '2016-07-08', 'James Evans', '44078 Warner Drive', null, 'Amurzet', null, '679230', 'Russia', 9.35, 'Card', '2016-07-22', 'Complete') +,(4338, 213, 96, '2016-09-02', '2016-11-10', 'Willie Snyder', '361 Stone Corner Pass', null, 'Sindangsari', null, null, 'Indonesia', 9.32, 'Check', '2016-04-10', 'Complete') +,(4339, 220, 30, '2017-03-04', '2016-08-16', 'Julie Black', '2922 Grasskamp Alley', null, 'Cotonou', null, null, 'India', 9.14, 'Cash', '2017-03-07', 'Shipped') +,(4340, 206, 17, '2016-11-18', '2016-11-24', 'Roy Olson', '4 Shopko Hill', null, 'Binagadi', null, null, 'India', 5.22, 'Check', '2016-10-14', 'Shipped') +,(4341, 202, 28, '2016-11-18', '2017-02-18', 'Evelyn Lawrence', '90 Crownhardt Center', null, 'Bayshint', null, null, 'Japan', 7.25, 'Check', '2016-12-16', 'On Hold') +,(4342, 209, 37, '2016-10-30', '2016-06-07', 'John Rodriguez', '69 Golf View Avenue', null, 'Hezuoqiao', null, null, 'China', 8.23, 'Cash', '2016-11-05', 'On Hold') +,(4343, 203, 51, '2016-04-09', '2016-12-17', 'Ruth Kim', '0027 Dunning Pass', null, 'Kuteynykove', null, null, 'Ukraine', 2.46, 'Cash', '2016-03-28', 'New') +,(4344, 217, 34, '2016-12-16', '2016-10-11', 'Shawn Patterson', '36 Little Fleur Circle', null, 'Xiekou', null, null, 'China', 6.43, 'Cash', '2016-03-27', 'New') +,(4345, 213, 59, '2016-10-30', '2016-07-10', 'Nancy Jones', '47088 Crowley Junction', null, 'Promna', null, '26-803', 'Poland', 5.67, 'Cash', '2016-12-02', 'Complete') +,(4346, 217, 70, '2016-12-27', '2016-10-06', 'Deborah Bishop', '1 Summer Ridge Circle', null, 'Bunobogu', null, null, 'Indonesia', 7.57, 'Cash', '2016-09-19', 'New') +,(4347, 203, 30, '2016-05-26', '2016-08-14', 'Steve Hunt', '4393 Summer Ridge Crossing', null, 'Hošťka', null, '348 06', 'Czech Republic', 5.78, 'Cash', '2016-12-30', 'Shipped') +,(4348, 203, 9 , '2016-04-14', '2016-10-19', 'Betty Black', '23 Nova Junction', null, 'Sępólno Krajeńskie', null, '89-400', 'Poland', 8.55, 'Cash', '2016-09-23', 'New') +,(4349, 211, 95, '2017-01-28', '2016-04-13', 'Gregory Wood', '96 Grasskamp Point', null, 'Psará', null, null, 'Greece', 8.47, 'Cash', '2016-12-18', 'Shipped') +,(4350, 218, 97, '2016-03-22', '2016-04-13', 'Martin Martinez', '5 Towne Crossing', null, 'Kista', 'Stockholm', '164 45', 'Sweden', 8.07, 'Check', '2016-05-15', 'On Hold') +,(4351, 215, 80, '2016-06-20', '2016-11-05', 'Margaret Cook', '82 Eggendart Junction', null, 'Omuthiya', null, null, 'India', 9.71, 'Cash', '2016-09-18', 'Shipped') +,(4352, 211, 15, '2016-09-02', '2017-01-23', 'Justin Myers', '6734 Continental Drive', null, 'Tadabliro', null, null, 'Indonesia', 2.23, 'Cash', '2016-05-12', 'New') +,(4353, 216, 77, '2016-10-09', '2016-07-31', 'Jane Ruiz', '2743 Harbort Center', null, 'Pasar', null, null, 'Indonesia', 4.88, 'Cash', '2016-06-04', 'New') +,(4354, 202, 53, '2017-03-15', '2016-06-21', 'Philip Bradley', '6 Bartillon Park', null, 'Aimorés', null, '35200-000', 'Brazil', 5.01, 'Cash', '2016-05-16', 'New') +,(4355, 220, 14, '2017-01-03', '2016-05-07', 'Phillip White', '1 Schurz Crossing', null, 'Tuzhai', null, null, 'China', 7.06, 'Check', '2016-10-18', 'New') +,(4356, 208, 85, '2016-12-26', '2016-07-28', 'George Ryan', '92 Morrow Road', null, 'Nijmegen', 'Provincie Gelderland', '6519', 'Netherlands', 5.76, 'Cash', '2016-12-14', 'New') +,(4357, 208, 73, '2016-04-06', '2016-04-01', 'Evelyn Rose', '134 Milwaukee Lane', null, 'Tiechang', null, null, 'China', 5.37, 'Cash', '2016-12-19', 'Shipped') +,(4358, 202, 77, '2016-04-14', '2016-10-21', 'Janet Robertson', '09309 Dottie Park', null, 'Ljubešćica', null, '42222', 'Canada', 5.27, 'Cash', '2016-06-07', 'On Hold') +,(4359, 202, 35, '2016-05-08', '2017-01-27', 'Diana Perry', '95535 Lotheville Center', null, 'Kvasice', null, '768 21', 'Czech Republic', 7.1, 'Card', '2016-07-27', 'New') +,(4360, 210, 86, '2016-11-23', '2016-10-12', 'Todd Elliott', '6737 Melrose Road', null, 'Catumbela', null, null, 'Netherlands', 2.19, 'Check', '2016-04-05', 'Shipped') +,(4361, 209, 45, '2016-04-07', '2016-06-30', 'Emily Dean', '143 Ridge Oak Alley', null, 'Diriá', null, null, 'United Kingdom', 1.33, 'Cash', '2016-12-31', 'Complete') +,(4362, 208, 88, '2016-05-08', '2016-04-14', 'Eric Simpson', '8113 Graceland Junction', null, 'Borovoy', null, '309135', 'Russia', 3.81, 'Card', '2016-06-21', 'Shipped') +,(4363, 211, 84, '2016-12-31', '2016-06-05', 'Alan Chapman', '461 Westport Center', null, 'Inayauan', null, '3336', 'Philippines', 8.62, 'Card', '2017-03-03', 'Complete') +,(4364, 205, 100,'2016-09-10', '2017-02-19', 'Denise Dixon', '066 Gerald Avenue', null, 'Venëv', null, '301320', 'Russia', 4.82, 'Check', '2016-04-22', 'Shipped') +,(4365, 211, 7 , '2017-03-09', '2017-03-16', 'Douglas Nelson', '03051 Grasskamp Way', null, 'Póvoa', 'Vila Real', '4870-130', 'Portugal', 1.67, 'Check', '2016-08-30', 'Complete') +,(4366, 213, 24, '2016-04-25', '2016-06-06', 'Louis Frazier', '65 Buhler Circle', null, 'Bīleh Savār', null, null, 'Iran', 9.53, 'Check', '2016-12-20', 'Complete') +,(4367, 207, 8 , '2016-09-24', '2016-04-06', 'Theresa Stanley', '487 Birchwood Point', null, 'T’et’ri Tsqaro', null, null, 'United Kingdom', 5.06, 'Cash', '2016-04-08', 'New') +,(4368, 207, 76, '2016-12-21', '2016-05-03', 'Sean Chapman', '3917 Miller Pass', null, 'Andaray', null, null, 'Peru', 4.36, 'Check', '2016-07-25', 'New') +,(4369, 215, 90, '2016-03-30', '2017-01-03', 'Eugene Brooks', '137 1st Hill', null, 'Independencia', 'Tamaulipas', '89888', 'Mexico', 9.56, 'Check', '2017-01-23', 'Shipped') +,(4370, 204, 33, '2016-12-17', '2016-10-22', 'Joan Martin', '24 Hayes Point', null, 'Dobrzeń Wielki', null, '46-081', 'Poland', 8.87, 'Cash', '2016-07-09', 'Shipped') +,(4371, 204, 13, '2016-12-11', '2016-05-07', 'Martha Mendoza', '0 Sommers Point', null, 'Jiamachi', null, null, 'China', 1.53, 'Check', '2016-08-05', 'On Hold') +,(4372, 211, 90, '2016-10-27', '2017-02-14', 'Joan Allen', '64 Bluestem Drive', null, 'Conde', 'Braga', '4815-019', 'Portugal', 2.66, 'Card', '2016-09-25', 'Shipped') +,(4373, 208, 81, '2016-08-20', '2017-03-16', 'Tammy Richards', '15541 Ramsey Alley', null, 'Gunungkendeng', null, null, 'Indonesia', 5.66, 'Cash', '2016-05-03', 'Shipped') +,(4374, 216, 19, '2017-01-22', '2016-09-10', 'Andrea Medina', '3 Goodland Pass', null, 'Ḩarīb', null, null, 'South Africa', 1.03, 'Card', '2016-10-12', 'Shipped') +,(4375, 213, 8 , '2016-09-13', '2016-12-21', 'Antonio Carpenter', '453 Duke Point', null, 'Rouen', 'Haute-Normandie', '76029 CEDEX', 'France', 5.11, 'Cash', '2017-01-26', 'Complete') +,(4376, 207, 83, '2016-11-29', '2016-04-13', 'Jeffrey Smith', '7 Old Shore Center', null, 'Licuan', null, '2500', 'Philippines', 8.55, 'Cash', '2016-11-08', 'New') +,(4377, 216, 13, '2016-11-06', '2016-10-08', 'Mark Perkins', '57 Troy Court', null, 'Mojimán', null, null, 'Canada', 2.03, 'Card', '2017-01-06', 'Shipped') +,(4378, 219, 4 , '2016-08-05', '2017-03-04', 'Louis Jordan', '5 Armistice Street', null, 'Labège', 'Midi-Pyrénées', '31673 CEDEX', 'France', 3.61, 'Cash', '2016-12-07', 'New') +,(4379, 218, 66, '2017-02-26', '2016-11-18', 'Fred Johnson', '4 Dovetail Crossing', null, 'Santa Cruz', null, null, 'India', 1.08, 'Cash', '2016-04-02', 'Complete') +,(4380, 201, 27, '2016-09-01', '2016-05-08', 'Rose Harvey', '8 Canary Plaza', null, 'Pingtan', null, null, 'China', 6.9, 'Check', '2016-12-09', 'Complete') +,(4381, 209, 89, '2017-02-04', '2016-08-30', 'Christine Thomas', '008 Carberry Alley', null, 'Logung', null, null, 'Indonesia', 6.13, 'Card', '2016-05-09', 'On Hold') +,(4382, 204, 47, '2016-08-11', '2016-12-27', 'Juan Reed', '4337 Del Sol Hill', null, 'Dayeuhluhur', null, null, 'Indonesia', 7.76, 'Card', '2016-06-15', 'New') +,(4383, 215, 30, '2016-08-07', '2016-07-22', 'Diane Gray', '899 Oneill Pass', null, 'Alegrete', null, '97540-000', 'Brazil', 5.62, 'Cash', '2016-12-26', 'Complete') +,(4384, 212, 88, '2016-07-23', '2016-05-07', 'Louise Baker', '46092 Kedzie Court', null, 'Ban Mo', null, '18130', 'Thailand', 4.0, 'Card', '2016-07-11', 'Complete') +,(4385, 203, 62, '2017-02-20', '2016-10-01', 'Paul Thompson', '77444 Northwestern Pass', null, 'Francisco I Madero', 'Coahuila De Zaragoza', '26010', 'Mexico', 3.99, 'Check', '2016-12-23', 'Shipped') +,(4386, 218, 26, '2016-09-02', '2016-06-10', 'Anne Kim', '67814 Buena Vista Court', null, 'Sanjie', null, null, 'China', 9.61, 'Card', '2016-04-05', 'New') +,(4387, 219, 20, '2017-03-05', '2016-12-19', 'Matthew Gutierrez', '33055 Evergreen Crossing', null, 'Cusco', null, null, 'Peru', 6.52, 'Check', '2017-02-17', 'Shipped') +,(4388, 219, 71, '2016-09-06', '2016-05-24', 'Janet Hernandez', '9243 Forest Run Parkway', null, 'Ulanov', null, null, 'Ukraine', 3.04, 'Cash', '2016-09-20', 'New') +,(4389, 207, 2 , '2016-04-25', '2017-02-16', 'Louis Chapman', '878 Roth Alley', null, 'Kusak', null, '423430', 'Russia', 5.78, 'Cash', '2017-02-18', 'On Hold') +,(4390, 218, 64, '2016-09-25', '2016-09-22', 'Joe Carpenter', '56 Artisan Park', null, 'Xinjiang', null, null, 'China', 8.2, 'Card', '2016-12-01', 'On Hold') +,(4391, 218, 64, '2016-07-30', '2016-07-23', 'Charles Harper', '7 Sutherland Road', null, 'Tatarbunary', null, null, 'Ukraine', 4.62, 'Cash', '2016-06-29', 'Shipped') +,(4392, 206, 92, '2016-05-05', '2016-07-17', 'Craig Reynolds', '3 Erie Park', null, 'East End', null, null, 'Canada', 2.03, 'Check', '2017-02-03', 'New') +,(4393, 212, 45, '2016-06-29', '2016-06-17', 'Raymond Mcdonald', '792 Brown Trail', null, 'Yangfang', null, null, 'China', 4.44, 'Card', '2017-02-27', 'Complete') +,(4394, 211, 87, '2016-09-28', '2016-04-03', 'Sandra Medina', '7 Eagan Circle', null, 'Baratleke', null, null, 'Indonesia', 4.34, 'Cash', '2017-01-05', 'Complete') +,(4395, 203, 57, '2016-08-18', '2017-03-05', 'Sean Carpenter', '33 Dottie Park', null, 'Sokal’', null, null, 'Ukraine', 5.39, 'Cash', '2017-02-22', 'On Hold') +,(4396, 203, 87, '2016-06-19', '2016-07-10', 'Alice Ferguson', '0399 Dixon Hill', null, 'Privolzhskiy', null, '413138', 'Russia', 8.74, 'Cash', '2016-12-23', 'New') +,(4397, 216, 61, '2016-08-01', '2016-12-25', 'Diana Nguyen', '5052 Rigney Junction', null, 'Guaynabo', 'Pr', '00971', 'Germany', 5.36, 'Check', '2016-07-12', 'On Hold') +,(4398, 211, 52, '2016-12-04', '2016-05-11', 'Earl Gutierrez', '32 Summit Avenue', null, 'Maqbanah', null, null, 'South Africa', 5.82, 'Cash', '2016-07-21', 'New') +,(4399, 208, 71, '2016-05-16', '2017-02-25', 'Gloria Gordon', '5 Prentice Trail', null, 'Xichang', null, null, 'China', 3.2, 'Card', '2016-05-24', 'Complete') +,(4400, 218, 7 , '2016-09-06', '2016-03-21', 'Robert Wheeler', '83 Logan Circle', null, 'Zhongshan', null, null, 'China', 9.15, 'Cash', '2016-08-16', 'Shipped') +,(4401, 210, 53, '2016-09-05', '2016-05-01', 'Walter Williamson', '8459 American Plaza', null, 'Santo Rosario', null, '3114', 'Philippines', 7.71, 'Check', '2017-01-25', 'New') +,(4402, 216, 92, '2016-10-10', '2016-03-28', 'Jonathan James', '164 Bonner Hill', null, 'Vale de Mendiz', 'Vila Real', '5085-105', 'Portugal', 2.96, 'Card', '2016-07-15', 'Shipped') +,(4403, 212, 12, '2016-09-15', '2016-11-11', 'Judy Williams', '207 Scofield Place', null, 'Lawa-an', null, '5706', 'Philippines', 9.68, 'Check', '2016-04-30', 'On Hold') +,(4404, 213, 83, '2016-04-25', '2016-05-14', 'Amy Olson', '84189 Schurz Circle', null, 'Ogoja', null, null, 'Netherlands', 5.18, 'Card', '2016-11-02', 'Complete') +,(4405, 209, 7 , '2016-12-01', '2016-08-30', 'Donna Vasquez', '82460 Ridgeway Hill', null, 'La Guacamaya', null, null, 'Canada', 5.32, 'Card', '2017-02-11', 'Complete') +,(4406, 209, 66, '2016-09-14', '2016-05-13', 'Susan Jacobs', '17 Morningstar Lane', null, 'Chedao', null, null, 'China', 4.12, 'Cash', '2016-11-11', 'New') +,(4407, 214, 57, '2016-05-04', '2016-06-03', 'Kathryn Burns', '116 Hollow Ridge Park', null, 'Comagascas', null, '1950', 'Philippines', 1.05, 'Cash', '2017-01-28', 'New') +,(4408, 201, 64, '2017-02-11', '2016-06-08', 'Doris Bennett', '090 Lien Place', null, 'Luotang', null, null, 'China', 1.35, 'Cash', '2016-12-16', 'Complete') +,(4409, 209, 41, '2017-02-28', '2016-09-05', 'Cynthia Robertson', '6 Eliot Center', null, 'Abu Dhabi', null, null, 'Denmark', 4.21, 'Check', '2017-01-01', 'New') +,(4410, 215, 24, '2016-08-28', '2016-10-30', 'Jonathan Parker', '0 Weeping Birch Hill', null, 'Cienfuegos', null, null, 'Denmark', 1.69, 'Card', '2017-01-21', 'Shipped') +,(4411, 206, 10, '2016-08-30', '2016-12-06', 'Bobby Foster', '8279 Ridgeview Place', null, 'Cruz Alta', null, '98000-000', 'Brazil', 7.5, 'Cash', '2016-09-09', 'On Hold') +,(4412, 205, 65, '2016-12-13', '2017-02-27', 'Phyllis Moore', '806 Acker Drive', null, 'Paoay', null, '2902', 'Philippines', 4.63, 'Cash', '2017-01-11', 'Shipped') +,(4413, 211, 2 , '2016-12-05', '2016-12-07', 'Kevin Gordon', '00875 Sherman Lane', null, 'Wansheng', null, null, 'China', 2.7, 'Card', '2016-07-31', 'New') +,(4414, 219, 25, '2017-02-08', '2016-06-22', 'Jack Mccoy', '2 Killdeer Center', null, 'Gresik', null, null, 'Indonesia', 4.1, 'Check', '2017-03-05', 'On Hold') +,(4415, 220, 9 , '2017-01-02', '2016-08-28', 'Margaret Fuller', '1960 Parkside Hill', null, 'Kafr Zaytā', null, null, 'India', 1.09, 'Cash', '2016-08-07', 'New') +,(4416, 214, 100,'2017-01-07', '2017-02-07', 'Melissa Nichols', '6 Lakewood Gardens Avenue', null, 'Stockholm', 'Stockholm', '113 90', 'Sweden', 4.1, 'Cash', '2016-03-31', 'On Hold') +,(4417, 210, 87, '2017-01-23', '2016-12-14', 'William Webb', '84 Mifflin Junction', null, 'Kanungu', null, null, 'South Africa', 4.38, 'Card', '2016-05-05', 'Complete') +,(4418, 213, 29, '2017-01-05', '2017-02-07', 'Anne Gonzales', '7 Myrtle Plaza', null, 'Davila', null, '2012', 'Philippines', 5.45, 'Cash', '2016-05-23', 'Shipped') +,(4419, 212, 94, '2016-10-19', '2016-12-20', 'Kathleen Graham', '22 Forest Run Hill', null, 'Mollepampa', null, null, 'Peru', 5.86, 'Check', '2016-07-31', 'Shipped') +,(4420, 201, 32, '2016-11-29', '2016-09-24', 'Diana Sanders', '8925 Kennedy Parkway', null, 'San Miguel de Tucumán', null, '4137', 'Argentina', 3.71, 'Cash', '2016-08-10', 'Complete') +,(4421, 208, 58, '2017-03-02', '2016-04-03', 'Willie Wright', '60 Old Shore Alley', null, 'Jinjiang', null, null, 'China', 6.72, 'Card', '2016-10-09', 'Shipped') +,(4422, 206, 59, '2016-04-19', '2016-12-29', 'Frank Evans', '785 Little Fleur Center', null, 'El Triunfo', null, null, 'Argentina', 9.43, 'Check', '2016-05-13', 'New') +,(4423, 209, 68, '2016-08-22', '2016-11-20', 'Phillip Carter', '6398 John Wall Center', null, 'Shouxihu', null, null, 'China', 4.22, 'Check', '2016-10-18', 'New') +,(4424, 205, 31, '2016-10-05', '2016-10-09', 'Lillian Gomez', '17560 Melrose Point', null, 'Milwaukee', 'Wisconsin', '53205', 'United States', 1.16, 'Check', '2016-04-17', 'On Hold') +,(4425, 202, 7 , '2016-07-24', '2017-02-22', 'John Ortiz', '45 Vera Place', null, 'Kiel', 'Schleswig-Holstein', '24109', 'Germany', 5.86, 'Cash', '2016-10-13', 'On Hold') +,(4426, 214, 80, '2016-10-04', '2016-09-01', 'Brandon Fields', '94792 Jackson Hill', null, 'San Juan', 'Pr', '00918', 'Germany', 2.54, 'Check', '2016-12-19', 'On Hold') +,(4427, 209, 23, '2016-06-23', '2016-04-29', 'Willie Hart', '20 Sloan Terrace', null, 'Mount Darwin', null, null, 'India', 3.71, 'Cash', '2016-09-22', 'Complete') +,(4428, 211, 7 , '2016-09-07', '2016-10-28', 'Walter Montgomery', '67285 Crowley Road', null, 'Wailolong', null, null, 'Indonesia', 9.79, 'Check', '2016-04-05', 'Complete') +,(4429, 217, 10, '2017-03-02', '2016-11-27', 'Sara Williamson', '72 Monterey Circle', null, 'Salvacion', null, '1114', 'Philippines', 3.33, 'Card', '2016-05-18', 'On Hold') +,(4430, 210, 12, '2017-02-18', '2016-03-17', 'Wayne Sanders', '21302 Valley Edge Pass', null, 'Balakasap', null, null, 'Indonesia', 2.18, 'Card', '2016-06-02', 'New') +,(4431, 220, 80, '2016-10-01', '2016-09-28', 'Cynthia Allen', '1 Karstens Avenue', null, 'Santo António das Areias', 'Portalegre', '7330-254', 'Portugal', 3.4, 'Cash', '2016-08-21', 'New') +,(4432, 211, 95, '2017-02-04', '2016-03-17', 'Jonathan Hughes', '93993 Fairview Junction', null, 'Buje', null, '52460', 'Canada', 5.19, 'Cash', '2016-10-01', 'New') +,(4433, 208, 67, '2017-02-11', '2016-06-01', 'Gerald Wright', '77811 Dennis Point', null, 'Hohoe', null, null, 'United Kingdom', 3.25, 'Card', '2016-07-15', 'New') +,(4434, 201, 53, '2016-12-25', '2017-01-07', 'Roy Anderson', '182 High Crossing Terrace', null, 'Bajiazi', null, null, 'China', 8.8, 'Card', '2017-02-11', 'Shipped') +,(4435, 207, 3 , '2016-05-30', '2016-04-07', 'Brenda Wright', '98 Kim Drive', null, 'Lillehammer', 'Oppland', '2605', 'Greece', 5.76, 'Cash', '2017-02-02', 'On Hold') +,(4436, 204, 29, '2016-07-19', '2016-07-05', 'Philip Price', '16 Brown Plaza', null, 'Čapljina', null, null, 'India', 9.62, 'Cash', '2016-11-05', 'On Hold') +,(4437, 210, 80, '2016-10-13', '2016-04-24', 'Michelle Webb', '4160 Everett Point', null, 'Waepana', null, null, 'Indonesia', 9.54, 'Cash', '2016-07-11', 'Complete') +,(4438, 209, 6 , '2016-12-31', '2017-01-27', 'Heather Fields', '10 Fairview Center', null, 'Złotniki Kujawskie', null, '88-180', 'Poland', 1.81, 'Cash', '2017-03-15', 'Shipped') +,(4439, 216, 53, '2017-02-01', '2016-09-12', 'Ryan Long', '0 Gateway Avenue', null, 'Pizhanka', null, '613380', 'Russia', 9.34, 'Cash', '2016-07-02', 'New') +,(4440, 211, 25, '2017-02-03', '2016-10-13', 'Joyce Stewart', '61 Burrows Street', null, 'Kushelevka', null, '658381', 'Russia', 6.4, 'Cash', '2017-01-29', 'On Hold') +,(4441, 215, 93, '2016-03-21', '2016-11-17', 'Walter Arnold', '97613 Pond Avenue', null, 'Looc', null, '5507', 'Philippines', 1.09, 'Cash', '2016-10-05', 'Shipped') +,(4442, 214, 10, '2016-05-10', '2016-05-31', 'Irene Simmons', '36 Larry Court', null, 'Rozhdestveno', null, '399768', 'Russia', 4.82, 'Check', '2017-01-13', 'Complete') +,(4443, 208, 19, '2017-02-09', '2017-02-05', 'Christina Mccoy', '1482 Rockefeller Point', null, 'Rybatskoye', null, '196851', 'Russia', 1.62, 'Cash', '2016-09-14', 'Shipped') +,(4444, 210, 98, '2017-02-15', '2016-05-17', 'Marie Fowler', '04 Prairie Rose Junction', null, 'Chicago', 'Illinois', '60604', 'United States', 7.47, 'Card', '2017-02-22', 'Complete') +,(4445, 218, 32, '2017-02-12', '2016-05-20', 'Louise Bell', '3 Charing Cross Pass', null, 'Selce', null, '1219', 'Denmark', 4.47, 'Cash', '2016-04-01', 'New') +,(4446, 209, 25, '2016-09-22', '2016-12-03', 'Barbara Black', '697 Oneill Drive', null, 'Shanghang', null, null, 'China', 4.66, 'Check', '2016-11-09', 'On Hold') +,(4447, 209, 100,'2016-08-26', '2017-01-16', 'James Holmes', '77 Marcy Court', null, 'Estreito', null, '65975-000', 'Brazil', 9.85, 'Check', '2016-12-04', 'On Hold') +,(4448, 210, 72, '2016-06-25', '2016-12-07', 'Kenneth Williams', '6400 Milwaukee Hill', null, 'Wanshan', null, null, 'China', 3.66, 'Card', '2016-06-09', 'On Hold') +,(4449, 213, 16, '2016-12-13', '2016-08-07', 'Joshua Jacobs', '8 Judy Park', null, 'Ágios Andréas', null, null, 'Greece', 3.81, 'Cash', '2016-07-07', 'Complete') +,(4450, 216, 100,'2016-12-21', '2017-02-13', 'Aaron Sanders', '1 Dakota Court', null, 'Huayllo', null, null, 'Peru', 7.59, 'Cash', '2016-04-22', 'On Hold') +,(4451, 211, 50, '2016-08-22', '2016-06-05', 'Eugene Scott', '03 Golden Leaf Point', null, 'Stírion', null, null, 'Greece', 8.99, 'Card', '2017-02-25', 'New') +,(4452, 220, 86, '2016-05-07', '2016-07-20', 'Cynthia Phillips', '820 Merchant Way', null, 'Mrongi Daja', null, null, 'Indonesia', 2.21, 'Check', '2016-04-27', 'On Hold') +,(4453, 213, 58, '2016-10-30', '2016-03-22', 'Martin Reed', '14 Meadow Vale Alley', null, 'Jiangdong', null, null, 'China', 3.58, 'Cash', '2017-02-12', 'Complete') +,(4454, 206, 98, '2016-05-14', '2016-11-07', 'Janet Porter', '74391 Ronald Regan Park', null, 'Lamakera Dua', null, null, 'Indonesia', 9.86, 'Check', '2016-06-12', 'New') +,(4455, 204, 2 , '2016-03-28', '2016-04-11', 'Amanda Duncan', '047 Jenna Road', null, 'Tungawan', null, '7018', 'Philippines', 2.04, 'Card', '2016-07-09', 'New') +,(4456, 211, 58, '2016-08-05', '2016-11-19', 'Joseph Henderson', '14 Morningstar Pass', null, 'Kolobolon', null, null, 'Indonesia', 6.44, 'Check', '2016-05-24', 'New') +,(4457, 215, 21, '2017-02-15', '2016-06-11', 'Cynthia Bishop', '066 Surrey Pass', null, 'Hưng Yên', null, null, 'Vietnam', 1.61, 'Check', '2016-07-05', 'Shipped') +,(4458, 211, 10, '2016-08-08', '2016-08-06', 'Craig Andrews', '7 Mariners Cove Court', null, 'Tuanchengshan', null, null, 'China', 8.4, 'Cash', '2016-12-15', 'New') +,(4459, 211, 71, '2016-05-13', '2017-02-19', 'Steve Warren', '6702 Delladonna Point', null, 'Pražmo', null, '739 04', 'Czech Republic', 8.29, 'Card', '2016-06-29', 'New') +,(4460, 214, 5 , '2016-12-21', '2016-06-21', 'Brenda Mills', '77934 Prairieview Way', null, 'Huafeng', null, null, 'China', 6.76, 'Cash', '2016-07-08', 'New') +,(4461, 212, 34, '2016-04-27', '2016-07-22', 'Randy Wright', '9 Thackeray Way', null, 'Dvůr Králové nad Labem', null, '544 01', 'Czech Republic', 9.45, 'Card', '2016-03-20', 'Shipped') +,(4462, 202, 47, '2016-10-31', '2016-06-30', 'Michelle Ramirez', '0152 Old Shore Road', null, 'Pulaupinang', null, null, 'Indonesia', 2.42, 'Card', '2016-09-05', 'New') +,(4463, 209, 86, '2016-07-30', '2016-04-29', 'Frank Duncan', '67 Buell Terrace', null, 'Krasne', null, null, 'Ukraine', 2.71, 'Card', '2016-06-22', 'Complete') +,(4464, 204, 62, '2017-03-01', '2017-03-11', 'Carlos Warren', '978 Merrick Circle', null, 'Penghua', null, null, 'China', 7.29, 'Cash', '2016-03-22', 'Shipped') +,(4465, 202, 87, '2016-06-23', '2016-11-15', 'Tina Gardner', '0 Mcguire Terrace', null, 'Cangqian', null, null, 'China', 2.17, 'Card', '2016-06-01', 'New') +,(4466, 220, 31, '2016-06-04', '2016-06-08', 'Stephen Turner', '17 Leroy Plaza', null, 'Pedaringan', null, null, 'Indonesia', 8.89, 'Check', '2016-05-09', 'Shipped') +,(4467, 210, 35, '2016-05-21', '2016-09-26', 'Melissa Wilson', '61199 Forest Center', null, 'Krmelín', null, '739 24', 'Czech Republic', 2.35, 'Card', '2016-06-20', 'On Hold') +,(4468, 216, 50, '2016-09-10', '2016-12-02', 'Billy Harper', '8940 Fisk Parkway', null, 'San Jose', 'California', '95113', 'United States', 3.98, 'Cash', '2016-10-04', 'Complete') +,(4469, 207, 22, '2016-06-03', '2016-11-06', 'Carl Davis', '5 Lindbergh Street', null, 'Taling Chan', null, '10170', 'Thailand', 4.71, 'Card', '2017-02-03', 'New') +,(4470, 211, 64, '2016-06-16', '2016-05-26', 'Gerald Henry', '2221 Porter Crossing', null, 'Mozdok', null, '363759', 'Russia', 9.57, 'Cash', '2016-10-11', 'Shipped') +,(4471, 206, 25, '2016-07-27', '2016-08-24', 'Debra Garza', '65379 Sunnyside Trail', null, 'Jiadingzhen', null, null, 'China', 1.06, 'Check', '2016-06-23', 'On Hold') +,(4472, 204, 18, '2016-08-30', '2016-10-09', 'Margaret Rodriguez', '3202 Marquette Point', null, 'Oranzherei', null, '416368', 'Russia', 3.35, 'Check', '2016-06-18', 'On Hold') +,(4473, 212, 88, '2016-10-29', '2016-05-25', 'William Burke', '46 Kingsford Center', null, 'San Juan', null, '11301', 'Denmark', 3.85, 'Check', '2017-02-12', 'Shipped') +,(4474, 217, 9 , '2017-02-19', '2016-05-29', 'Larry Myers', '731 Packers Point', null, 'Trelleborg', 'Skåne', '231 68', 'Sweden', 4.46, 'Card', '2016-06-19', 'New') +,(4475, 202, 40, '2016-11-03', '2016-04-25', 'Virginia Hall', '141 Rowland Way', null, 'Aoji-ri', null, null, 'Denmark', 7.58, 'Check', '2016-11-13', 'Shipped') +,(4476, 211, 16, '2017-03-07', '2016-10-14', 'Doris Berry', '60 Rusk Lane', null, 'Al Qamşīyah', null, null, 'India', 1.8, 'Check', '2016-03-19', 'On Hold') +,(4477, 210, 87, '2016-12-04', '2016-03-22', 'Juan Richards', '3830 Randy Parkway', null, 'Nakhon Nayok', null, '26120', 'Thailand', 1.22, 'Card', '2016-08-05', 'Complete') +,(4478, 203, 34, '2017-01-28', '2016-09-27', 'Kimberly Fox', '34957 Elka Way', null, 'Santiago', null, '97700-000', 'Brazil', 3.99, 'Check', '2016-07-06', 'On Hold') +,(4479, 219, 89, '2016-07-01', '2016-05-31', 'Ruby Ruiz', '90581 American Hill', null, 'Agudos', null, '17120-000', 'Brazil', 5.97, 'Cash', '2016-06-03', 'On Hold') +,(4480, 203, 53, '2016-10-17', '2016-11-07', 'Ruby Robinson', '385 Carioca Plaza', null, 'Kalangan', null, null, 'Indonesia', 8.71, 'Card', '2016-12-01', 'Complete') +,(4481, 207, 91, '2017-02-25', '2016-03-31', 'Victor Lopez', '170 Mariners Cove Circle', null, 'Bressuire', 'Poitou-Charentes', '79304 CEDEX', 'France', 8.59, 'Check', '2016-07-30', 'Complete') +,(4482, 215, 58, '2017-02-15', '2016-07-25', 'Kimberly Marshall', '647 Summerview Circle', null, 'Timahankrajan', null, null, 'Indonesia', 3.07, 'Check', '2016-04-21', 'On Hold') +,(4483, 207, 76, '2016-06-27', '2016-10-15', 'Pamela Matthews', '9379 Summit Trail', null, 'Brangsi', null, null, 'Indonesia', 1.35, 'Card', '2016-05-27', 'New') +,(4484, 210, 98, '2017-02-03', '2016-11-04', 'Randy Patterson', '6641 American Ash Point', null, 'Ivanec', null, '42240', 'Canada', 2.36, 'Card', '2016-10-31', 'Shipped') +,(4485, 205, 71, '2017-01-01', '2017-02-16', 'Carolyn Garza', '281 Raven Lane', null, 'Jingyang', null, null, 'China', 6.85, 'Check', '2016-04-27', 'Shipped') +,(4486, 202, 20, '2016-07-24', '2016-07-06', 'Ruth Perkins', '5656 Northview Lane', null, 'Burevestnik', null, '607612', 'Russia', 9.29, 'Cash', '2017-03-16', 'On Hold') +,(4487, 203, 49, '2017-02-20', '2017-01-12', 'Kelly Oliver', '249 Londonderry Pass', null, 'Grande Rivière du Nord', null, null, 'Canada', 7.65, 'Check', '2016-12-04', 'Shipped') +,(4488, 203, 67, '2016-11-09', '2016-07-19', 'Shirley Henry', '3045 Rowland Lane', null, 'Midlands', null, null, 'Germany', 5.35, 'Check', '2016-06-14', 'Complete') +,(4489, 209, 100,'2017-01-24', '2016-05-30', 'Marie Ferguson', '629 Crownhardt Junction', null, 'El Paso', 'Texas', '88546', 'United States', 5.18, 'Check', '2016-04-20', 'Shipped') +,(4490, 202, 87, '2016-06-27', '2016-09-05', 'Rachel Scott', '343 Schurz Road', null, 'Cabiguan', null, '1144', 'Philippines', 1.05, 'Cash', '2016-07-24', 'Shipped') +,(4491, 211, 93, '2017-01-16', '2016-09-29', 'Henry Fields', '26143 Del Sol Avenue', null, 'Huangduobu', null, null, 'China', 6.15, 'Card', '2016-06-02', 'Shipped') +,(4492, 217, 10, '2016-12-08', '2016-10-01', 'Harold Jones', '2 Oak Avenue', null, 'Surkhakhi', null, '386147', 'Russia', 9.96, 'Card', '2016-04-07', 'New') +,(4493, 217, 35, '2016-05-05', '2016-05-01', 'Walter Wright', '12 Paget Road', null, 'Siluman', null, null, 'Indonesia', 2.1, 'Cash', '2016-10-26', 'On Hold') +,(4494, 206, 51, '2017-02-25', '2016-10-24', 'Marilyn Hayes', '4 5th Way', null, 'Punkaharju', null, '58501', 'Finland', 3.57, 'Cash', '2016-06-22', 'New') +,(4495, 208, 3 , '2016-12-27', '2016-09-09', 'Sandra West', '0384 Bowman Center', null, 'Tagta', null, null, 'India', 6.45, 'Cash', '2016-08-25', 'New') +,(4496, 218, 41, '2017-01-10', '2016-12-11', 'Dennis Meyer', '4 Cambridge Alley', null, 'Cariamanga', null, null, 'Argentina', 5.33, 'Check', '2016-09-28', 'New') +,(4497, 216, 76, '2016-09-28', '2016-05-12', 'Frank Dean', '23227 Veith Park', null, 'Fengqiao', null, null, 'China', 6.72, 'Cash', '2016-04-12', 'Complete') +,(4498, 204, 3 , '2016-11-11', '2016-12-01', 'Amy Palmer', '7735 Maple Wood Road', null, 'Działoszyce', null, '28-440', 'Poland', 3.08, 'Card', '2016-09-07', 'Shipped') +,(4499, 211, 96, '2017-02-04', '2016-03-27', 'Emily Nelson', '3 Crownhardt Plaza', null, 'Oslob', null, '6025', 'Philippines', 6.41, 'Card', '2016-09-25', 'On Hold') +,(4500, 204, 7 , '2016-04-29', '2017-01-20', 'Randy Hanson', '687 Drewry Place', null, 'Barberena', null, '06002', 'Japan', 2.51, 'Card', '2016-12-12', 'Complete') +,(4501, 215, 92, '2017-02-27', '2016-09-26', 'Raymond Banks', '826 Mendota Pass', null, 'Chicago', 'Illinois', '60681', 'United States', 3.34, 'Card', '2016-10-30', 'Complete') +,(4502, 220, 24, '2016-10-01', '2016-09-26', 'Kimberly Robertson', '2643 Becker Trail', null, 'Columbus', 'United Kingdom', '31904', 'United States', 3.07, 'Check', '2016-04-27', 'Complete') +,(4503, 215, 52, '2017-02-25', '2016-08-08', 'Marilyn Miller', '1 Tennessee Park', null, 'Spokane', 'Washington', '99252', 'United States', 5.34, 'Check', '2016-08-16', 'On Hold') +,(4504, 220, 35, '2017-01-27', '2016-09-08', 'Marie Carpenter', '4575 Fair Oaks Hill', null, 'Richmond', 'Virginia', '23293', 'United States', 7.01, 'Cash', '2016-04-06', 'Shipped') +,(4505, 203, 10, '2016-06-24', '2017-02-22', 'Nicholas Wells', '823 Duke Center', null, 'Irvine', 'California', '92710', 'United States', 1.4, 'Check', '2016-06-17', 'On Hold') +,(4506, 207, 26, '2016-12-26', '2017-03-14', 'John Dean', '06 Spenser Place', null, 'Charleston', 'South Carolina', '29403', 'United States', 1.31, 'Cash', '2016-10-25', 'Shipped') +,(4507, 216, 28, '2016-08-22', '2016-12-13', 'Diana Spencer', '26 Ridgeway Plaza', null, 'Ogden', 'Utah', '84403', 'United States', 9.42, 'Cash', '2016-04-13', 'Shipped') +,(4508, 213, 90, '2016-08-31', '2017-01-13', 'Wanda Bowman', '862 Iowa Avenue', null, 'Kansas City', 'Kansas', '66160', 'United States', 7.1, 'Cash', '2016-10-19', 'Complete') +,(4509, 204, 93, '2016-07-07', '2016-05-31', 'Andrew Garrett', '27066 Gina Road', null, 'El Paso', 'Texas', '88558', 'United States', 6.88, 'Check', '2016-04-23', 'Complete') +,(4510, 202, 56, '2017-02-06', '2016-10-29', 'Juan Webb', '6233 South Junction', null, 'Lafayette', 'Louisiana', '70505', 'United States', 1.07, 'Cash', '2016-05-20', 'New') +,(4511, 219, 54, '2016-11-08', '2016-06-17', 'William Gardner', '5 Meadow Ridge Terrace', null, 'Tacoma', 'Washington', '98447', 'United States', 4.46, 'Check', '2016-05-25', 'Complete') +,(4512, 215, 4 , '2016-09-09', '2016-08-21', 'Fred Fernandez', '15 Ludington Junction', null, 'San Rafael', 'California', '94913', 'United States', 4.3, 'Cash', '2016-09-02', 'New') +,(4513, 206, 54, '2016-10-28', '2016-06-30', 'Ruth Ellis', '41196 Rieder Avenue', null, 'Baltimore', 'Maryland', '21211', 'United States', 8.39, 'Card', '2016-05-29', 'Complete') +,(4514, 215, 73, '2017-02-26', '2016-09-17', 'David Ferguson', '5813 Brown Parkway', null, 'Shawnee Mission', 'Kansas', '66286', 'United States', 2.71, 'Card', '2016-04-18', 'Shipped') +,(4515, 216, 23, '2016-11-08', '2016-06-27', 'Susan Freeman', '0 Bashford Parkway', null, 'Tucson', 'Arizona', '85720', 'United States', 5.5, 'Check', '2017-02-01', 'Shipped') +,(4516, 212, 9 , '2016-04-30', '2016-12-31', 'Alan Hunt', '193 Declaration Plaza', null, 'Louisville', 'Kentucky', '40256', 'United States', 9.74, 'Cash', '2017-01-20', 'On Hold') +,(4517, 202, 46, '2017-02-01', '2016-07-22', 'Phillip Romero', '1860 Thompson Crossing', null, 'Biloxi', 'Mississippi', '39534', 'United States', 3.02, 'Card', '2016-11-04', 'Complete') +,(4518, 203, 75, '2016-09-07', '2016-11-14', 'George Diaz', '6 Mcguire Center', null, 'Mesa', 'Arizona', '85210', 'United States', 7.84, 'Check', '2016-06-21', 'Shipped') +,(4519, 217, 68, '2016-10-07', '2016-08-15', 'Virginia King', '7405 High Crossing Alley', null, 'Sioux City', 'Iowa', '51105', 'United States', 4.03, 'Check', '2016-05-09', 'Complete') +,(4520, 216, 6 , '2017-02-18', '2017-02-17', 'Brenda Ruiz', '224 Badeau Street', null, 'Corpus Christi', 'Texas', '78426', 'United States', 9.11, 'Check', '2016-11-13', 'New') +,(4521, 201, 84, '2016-09-17', '2016-06-15', 'Debra Brown', '94 Morningstar Center', null, 'San Francisco', 'California', '94177', 'United States', 6.59, 'Check', '2017-03-10', 'Shipped') +,(4522, 205, 89, '2016-10-22', '2017-03-13', 'Emily Henry', '79 Manufacturers Center', null, 'Los Angeles', 'California', '90020', 'United States', 4.11, 'Cash', '2016-10-27', 'Complete') +,(4523, 211, 67, '2016-04-17', '2017-02-12', 'Aaron Peterson', '504 Schlimgen Terrace', null, 'Bethesda', 'Maryland', '20892', 'United States', 5.42, 'Card', '2016-08-25', 'Shipped') +,(4524, 215, 83, '2016-08-22', '2016-07-31', 'Janice Burke', '3 Mcbride Lane', null, 'Washington', 'District of Columbia', '20073', 'United States', 3.76, 'Card', '2016-08-09', 'Shipped') +,(4525, 217, 100,'2016-03-31', '2016-12-09', 'Debra Kelley', '18155 Northview Plaza', null, 'Detroit', 'Michigan', '48267', 'United States', 2.26, 'Cash', '2016-12-29', 'On Hold') +,(4526, 214, 32, '2016-11-24', '2016-03-28', 'Donald Sims', '86 Michigan Avenue', null, 'Brooklyn', 'New York', '11231', 'United States', 5.05, 'Check', '2016-08-07', 'Shipped') +,(4527, 205, 100,'2016-05-13', '2016-06-17', 'Daniel Mason', '4 Hanover Road', null, 'Reno', 'Nevada', '89595', 'United States', 4.81, 'Check', '2016-10-22', 'Shipped') +,(4528, 201, 32, '2016-11-15', '2016-11-16', 'Howard Knight', '5 Weeping Birch Alley', null, 'Jacksonville', 'Florida', '32225', 'United States', 5.99, 'Check', '2016-11-07', 'New') +,(4529, 213, 99, '2016-12-02', '2016-07-09', 'Virginia Hughes', '629 Manufacturers Point', null, 'Syracuse', 'New York', '13224', 'United States', 5.6, 'Card', '2016-12-02', 'Complete') +,(4530, 219, 18, '2016-12-07', '2017-02-07', 'Carl Graham', '90 Heffernan Pass', null, 'Saint Petersburg', 'Florida', '33737', 'United States', 9.35, 'Check', '2016-10-18', 'Complete') +,(4531, 201, 57, '2016-12-26', '2016-12-29', 'Joan Murray', '38 Bellgrove Crossing', null, 'Tacoma', 'Washington', '98447', 'United States', 6.69, 'Card', '2016-12-05', 'On Hold') +,(4532, 202, 58, '2016-04-02', '2016-07-01', 'Robert Williams', '09407 Northfield Circle', null, 'Cedar Rapids', 'Iowa', '52410', 'United States', 6.56, 'Card', '2016-04-16', 'On Hold') +,(4533, 218, 36, '2017-02-07', '2016-05-05', 'Ryan Black', '57199 Hoffman Place', null, 'Jacksonville', 'Florida', '32204', 'United States', 8.54, 'Check', '2017-01-24', 'Shipped') +,(4534, 208, 92, '2016-07-09', '2016-06-20', 'Brenda Hunter', '16179 Ludington Court', null, 'Birmingham', 'Alabama', '35263', 'United States', 9.82, 'Cash', '2016-09-30', 'New') +,(4535, 214, 70, '2016-08-04', '2016-06-29', 'Anne Warren', '08161 Barnett Parkway', null, 'Van Nuys', 'California', '91411', 'United States', 7.04, 'Cash', '2017-02-24', 'Complete') +,(4536, 213, 99, '2017-01-11', '2017-01-21', 'Betty Snyder', '9 Badeau Court', null, 'Davenport', 'Iowa', '52804', 'United States', 8.72, 'Card', '2016-09-03', 'Shipped') +,(4537, 217, 76, '2016-07-31', '2017-02-13', 'Edward Wilson', '1031 Esch Drive', null, 'Fresno', 'California', '93750', 'United States', 1.64, 'Check', '2016-04-21', 'On Hold') +,(4538, 210, 60, '2016-06-22', '2016-04-10', 'Terry Butler', '124 Hoepker Pass', null, 'San Antonio', 'Texas', '78255', 'United States', 2.35, 'Check', '2017-01-31', 'Complete') +,(4539, 220, 5 , '2016-11-12', '2016-04-25', 'Emily Hawkins', '990 Quincy Drive', null, 'Richmond', 'Virginia', '23289', 'United States', 4.36, 'Card', '2016-09-17', 'Complete') +,(4540, 213, 42, '2017-02-28', '2017-02-11', 'Cynthia Rose', '8881 Packers Trail', null, 'Berkeley', 'California', '94712', 'United States', 6.09, 'Check', '2016-04-14', 'New') +,(4541, 204, 27, '2016-09-30', '2017-01-28', 'Lisa Turner', '83 Graedel Terrace', null, 'Oakland', 'California', '94611', 'United States', 9.61, 'Card', '2016-05-07', 'Shipped') +,(4542, 219, 26, '2016-07-13', '2016-03-23', 'Jason Price', '475 Meadow Valley Point', null, 'Annapolis', 'Maryland', '21405', 'United States', 2.93, 'Check', '2016-06-10', 'New') +,(4543, 202, 63, '2016-07-29', '2016-05-20', 'Joan Hayes', '7 Upham Center', null, 'Temple', 'Texas', '76505', 'United States', 7.39, 'Card', '2016-09-20', 'Complete') +,(4544, 212, 97, '2016-10-31', '2017-01-16', 'Paula Torres', '443 Debs Terrace', null, 'Racine', 'Wisconsin', '53405', 'United States', 3.93, 'Card', '2016-07-07', 'Shipped') +,(4545, 201, 33, '2017-03-08', '2016-08-21', 'Theresa Watkins', '85395 Rusk Center', null, 'Jackson', 'Mississippi', '39210', 'United States', 5.32, 'Card', '2016-11-19', 'Complete') +,(4546, 211, 68, '2016-05-25', '2016-07-17', 'Clarence Nguyen', '155 Northport Road', null, 'Greensboro', 'North Carolina', '27455', 'United States', 7.06, 'Cash', '2016-08-24', 'Shipped') +,(4547, 203, 73, '2016-05-03', '2016-10-23', 'Jean Mason', '03 Eagle Crest Lane', null, 'Colorado Springs', 'Colorado', '80935', 'United States', 4.2, 'Cash', '2016-04-07', 'New') +,(4548, 217, 2 , '2016-05-20', '2016-08-07', 'Nicole Brown', '364 Debra Lane', null, 'Washington', 'District of Columbia', '20046', 'United States', 7.97, 'Cash', '2016-04-30', 'New') +,(4549, 220, 89, '2016-04-11', '2016-12-11', 'Carol Chapman', '756 Muir Point', null, 'Washington', 'District of Columbia', '20397', 'United States', 2.21, 'Card', '2017-02-05', 'Shipped') +,(4550, 211, 13, '2016-04-16', '2016-08-03', 'Roy George', '8 Anhalt Terrace', null, 'Indianapolis', 'Indiana', '46207', 'United States', 4.5, 'Check', '2017-03-06', 'New') +,(4551, 219, 37, '2016-04-14', '2017-03-01', 'Heather Bishop', '0901 Tennessee Street', null, 'Kingsport', 'Tennessee', '37665', 'United States', 1.92, 'Card', '2017-01-02', 'Shipped') +,(4552, 218, 94, '2017-03-05', '2016-06-01', 'Wayne Mason', '90645 Carberry Drive', null, 'Madison', 'Wisconsin', '53716', 'United States', 6.96, 'Card', '2016-12-31', 'Complete') +,(4553, 212, 37, '2016-10-16', '2016-10-13', 'Gloria Elliott', '100 Granby Junction', null, 'Miami', 'Florida', '33153', 'United States', 9.25, 'Cash', '2016-06-09', 'Shipped') +,(4554, 217, 4 , '2016-06-05', '2016-07-26', 'Timothy Hayes', '6001 Elgar Circle', null, 'Pensacola', 'Florida', '32575', 'United States', 6.5, 'Cash', '2016-03-30', 'Complete') +,(4555, 207, 49, '2016-08-19', '2016-08-15', 'Judith Baker', '3436 Briar Crest Park', null, 'Newark', 'New Jersey', '07188', 'United States', 2.33, 'Check', '2016-09-17', 'Complete') +,(4556, 217, 17, '2016-11-18', '2016-12-10', 'Roy Russell', '6401 Graedel Court', null, 'Alexandria', 'Virginia', '22301', 'United States', 3.24, 'Check', '2016-04-08', 'Complete') +,(4557, 216, 35, '2016-09-11', '2016-05-07', 'Jacqueline Davis', '864 Cherokee Lane', null, 'Columbus', 'Ohio', '43226', 'United States', 4.7, 'Card', '2016-08-06', 'Shipped') +,(4558, 211, 20, '2016-10-06', '2016-07-15', 'Eugene Castillo', '03090 Northland Circle', null, 'Salt Lake City', 'Utah', '84199', 'United States', 9.36, 'Card', '2016-10-06', 'Complete') +,(4559, 216, 13, '2017-01-13', '2016-03-28', 'Janice Mills', '522 Holmberg Alley', null, 'Scottsdale', 'Arizona', '85271', 'United States', 7.31, 'Cash', '2016-05-15', 'On Hold') +,(4560, 211, 77, '2016-08-24', '2017-03-13', 'Ruby White', '0070 Corben Way', null, 'Naples', 'Florida', '34114', 'United States', 3.71, 'Check', '2016-07-17', 'On Hold') +,(4561, 219, 55, '2016-08-13', '2016-11-19', 'Frank Jackson', '25 Rigney Point', null, 'Washington', 'District of Columbia', '20420', 'United States', 1.94, 'Cash', '2016-06-12', 'Shipped') +,(4562, 207, 96, '2016-10-12', '2016-12-04', 'Pamela Peterson', '830 Loftsgordon Junction', null, 'Houston', 'Texas', '77281', 'United States', 1.45, 'Check', '2017-03-06', 'New') +,(4563, 204, 70, '2016-07-23', '2017-02-06', 'Martha Frazier', '3 Gerald Lane', null, 'Scottsdale', 'Arizona', '85260', 'United States', 2.74, 'Cash', '2017-01-19', 'New') +,(4564, 204, 59, '2017-02-26', '2016-10-23', 'Kenneth Hawkins', '27305 Maple Crossing', null, 'San Diego', 'California', '92145', 'United States', 9.41, 'Cash', '2017-02-09', 'On Hold') +,(4565, 203, 66, '2016-08-06', '2017-02-03', 'Barbara Collins', '8 Norway Maple Junction', null, 'Fort Worth', 'Texas', '76198', 'United States', 1.08, 'Card', '2016-06-24', 'New') +,(4566, 217, 83, '2016-09-14', '2016-03-29', 'Gary Ellis', '97 Nobel Avenue', null, 'Alexandria', 'Louisiana', '71307', 'United States', 5.05, 'Card', '2016-06-13', 'Shipped') +,(4567, 214, 63, '2017-03-04', '2016-11-05', 'Douglas Hughes', '98309 Mccormick Park', null, 'Kansas City', 'Kansas', '66160', 'United States', 1.4, 'Card', '2017-02-13', 'Shipped') +,(4568, 208, 12, '2016-10-31', '2017-02-27', 'Harold Flores', '1 Merchant Lane', null, 'Duluth', 'United Kingdom', '30096', 'United States', 4.84, 'Check', '2016-04-30', 'On Hold') +,(4569, 201, 96, '2016-08-20', '2016-10-03', 'Marie Nguyen', '084 Stuart Hill', null, 'Arlington', 'Texas', '76004', 'United States', 5.95, 'Cash', '2016-04-25', 'On Hold') +,(4570, 203, 1 , '2016-10-13', '2016-03-21', 'Judy Fowler', '7541 Golf Course Way', null, 'Kansas City', 'Missouri', '64109', 'United States', 8.02, 'Check', '2016-05-05', 'New') +,(4571, 219, 49, '2016-11-04', '2016-09-02', 'Howard Rogers', '5 Scott Hill', null, 'Brooklyn', 'New York', '11215', 'United States', 5.21, 'Cash', '2016-10-28', 'Complete') +,(4572, 215, 5 , '2016-03-24', '2016-08-31', 'Stephanie Martinez', '0022 Reinke Trail', null, 'Baton Rouge', 'Louisiana', '70894', 'United States', 7.74, 'Card', '2016-08-14', 'On Hold') +,(4573, 206, 61, '2016-08-31', '2016-07-10', 'Jacqueline Lane', '780 Elka Place', null, 'Cleveland', 'Ohio', '44105', 'United States', 9.12, 'Check', '2016-11-30', 'On Hold') +,(4574, 220, 65, '2016-06-26', '2016-06-25', 'Betty Harrison', '23089 Kensington Junction', null, 'Greensboro', 'North Carolina', '27404', 'United States', 5.63, 'Check', '2016-03-30', 'Complete') +,(4575, 212, 81, '2016-04-28', '2016-10-19', 'Robin Bradley', '7895 Weeping Birch Plaza', null, 'Waterbury', 'Connecticut', '06721', 'United States', 7.34, 'Cash', '2017-01-25', 'On Hold') +,(4576, 216, 13, '2017-02-24', '2016-07-18', 'Ralph Bailey', '4019 Harper Park', null, 'Sacramento', 'California', '94291', 'United States', 6.77, 'Cash', '2017-02-02', 'New') +,(4577, 203, 43, '2016-09-24', '2016-11-18', 'Melissa Ross', '775 Lyons Road', null, 'Bridgeport', 'Connecticut', '06606', 'United States', 1.64, 'Check', '2016-07-23', 'Shipped') +,(4578, 212, 53, '2016-07-05', '2016-06-19', 'Joan Russell', '0 Kings Terrace', null, 'Bloomington', 'Illinois', '61709', 'United States', 4.66, 'Card', '2016-04-09', 'New') +,(4579, 214, 17, '2016-10-01', '2016-10-18', 'Benjamin George', '40131 Ronald Regan Road', null, 'Washington', 'District of Columbia', '20525', 'United States', 8.04, 'Check', '2016-06-16', 'Complete') +,(4580, 207, 69, '2016-04-19', '2017-02-09', 'Katherine Stone', '37483 Melrose Parkway', null, 'Fresno', 'California', '93794', 'United States', 6.7, 'Check', '2017-02-08', 'Complete') +,(4581, 218, 28, '2017-03-04', '2016-11-25', 'Ernest Cruz', '872 Nancy Street', null, 'Pompano Beach', 'Florida', '33069', 'United States', 5.81, 'Cash', '2016-04-21', 'On Hold') +,(4582, 217, 32, '2017-03-16', '2016-06-08', 'Joshua Edwards', '72309 Elmside Point', null, 'San Francisco', 'California', '94110', 'United States', 2.49, 'Cash', '2016-04-01', 'On Hold') +,(4583, 219, 83, '2017-01-24', '2016-07-25', 'Justin Mills', '88350 Wayridge Hill', null, 'Charleston', 'West Virginia', '25326', 'United States', 6.03, 'Card', '2016-10-07', 'New') +,(4584, 208, 45, '2016-10-18', '2016-05-13', 'Kathleen Gibson', '25 Carpenter Lane', null, 'Reno', 'Nevada', '89505', 'United States', 5.41, 'Check', '2016-08-21', 'Shipped') +,(4585, 216, 71, '2016-09-19', '2016-10-15', 'Ruby Bennett', '1 Muir Pass', null, 'Las Vegas', 'Nevada', '89135', 'United States', 2.5, 'Cash', '2016-11-29', 'On Hold') +,(4586, 214, 48, '2016-08-07', '2016-08-12', 'Richard Robinson', '1125 Melvin Terrace', null, 'Bethesda', 'Maryland', '20816', 'United States', 4.02, 'Card', '2017-01-09', 'Complete') +,(4587, 212, 62, '2016-12-17', '2017-01-23', 'Debra Sanchez', '534 Stoughton Lane', null, 'Johnstown', 'Pennsylvania', '15906', 'United States', 8.78, 'Cash', '2016-08-07', 'Shipped') +,(4588, 216, 30, '2016-10-24', '2016-12-21', 'Willie Dean', '680 Northview Circle', null, 'Huntington', 'West Virginia', '25775', 'United States', 8.43, 'Card', '2017-03-12', 'New') +,(4589, 210, 10, '2017-01-01', '2016-09-22', 'Christina Kelley', '8706 Sundown Street', null, 'Peoria', 'Illinois', '61635', 'United States', 4.24, 'Cash', '2017-02-08', 'On Hold') +,(4590, 205, 6 , '2016-11-29', '2017-02-23', 'Russell Montgomery', '977 Packers Drive', null, 'Charlotte', 'North Carolina', '28247', 'United States', 2.87, 'Cash', '2016-05-30', 'Complete') +,(4591, 206, 15, '2016-03-28', '2017-02-23', 'Edward Cunningham', '283 Bultman Way', null, 'Jacksonville', 'Florida', '32277', 'United States', 6.55, 'Check', '2017-03-10', 'Shipped') +,(4592, 209, 82, '2016-12-20', '2016-09-07', 'Michael Chavez', '00 Oak Avenue', null, 'Young America', 'Minnesota', '55551', 'United States', 8.22, 'Check', '2016-04-19', 'On Hold') +,(4593, 204, 24, '2017-03-13', '2016-08-30', 'David White', '506 Nevada Circle', null, 'Portland', 'Maine', '04109', 'United States', 1.11, 'Card', '2017-01-13', 'On Hold') +,(4594, 206, 27, '2016-09-13', '2017-03-12', 'Cheryl Vasquez', '9070 Di Loreto Court', null, 'Van Nuys', 'California', '91499', 'United States', 7.42, 'Card', '2017-02-25', 'On Hold') +,(4595, 211, 94, '2016-07-03', '2016-05-08', 'Charles Garrett', '1337 Hooker Trail', null, 'Honolulu', 'Hawaii', '96810', 'United States', 9.57, 'Check', '2016-10-04', 'Shipped') +,(4596, 216, 56, '2016-07-08', '2017-02-28', 'Michelle Butler', '1 Magdeline Lane', null, 'Orlando', 'Florida', '32813', 'United States', 7.05, 'Check', '2016-07-12', 'New') +,(4597, 217, 26, '2016-09-24', '2016-10-05', 'Howard Reyes', '3677 Donald Alley', null, 'Carol Stream', 'Illinois', '60351', 'United States', 7.62, 'Cash', '2017-02-08', 'Complete') +,(4598, 212, 76, '2016-04-13', '2016-08-10', 'Eugene Kelly', '838 Becker Plaza', null, 'Laredo', 'Texas', '78044', 'United States', 4.9, 'Check', '2016-10-23', 'New') +,(4599, 208, 29, '2016-04-16', '2016-05-15', 'Jimmy Mcdonald', '0 Dayton Place', null, 'Rochester', 'New York', '14646', 'United States', 1.56, 'Check', '2017-01-14', 'Complete') +,(4600, 208, 2 , '2016-04-26', '2016-04-06', 'Stephen Jacobs', '7131 Scoville Terrace', null, 'Phoenix', 'Arizona', '85020', 'United States', 4.52, 'Cash', '2017-01-22', 'On Hold'); + + + + +/* Order details */ +insert into order_items (order_id, product_id, quantity, unit_price, discount, order_item_status, date_allocated) values + (4001, 608, 1 , 97.34, 8.73, 'Allocated', '2017-01-15') +,(4001, 611, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 616, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 613, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 615, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4002, 604, 3 , 88.97, 2.86, 'On Order' , '2016-12-15') +,(4002, 610, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4002, 615, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4003, 609, 8 , 92.87, 4.01, 'No Stock' , '2016-06-15') +,(4003, 612, 7 , 87.15, 3.54, 'No Stock' , '2017-02-09') +,(4004, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 620, 2 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 611, 4 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4005, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 620, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 618, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 607, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4007, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 610, 2 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 612, 5 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4008, 612, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 615, 3 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 611, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4009, 605, 6 , 62.16, 5.68, 'No Stock' , '2017-02-13') +,(4009, 610, 6 , 19.31, 5.0 , 'No Stock' , '2016-09-16') +,(4009, 615, 9 , 51.21, 4.48, 'Allocated', '2016-10-18') +,(4010, 601, 1 , 32.18, 9.41, 'On Order' , '2016-03-17') +,(4010, 602, 1 , 31.35, 7.18, 'No Stock' , '2016-12-30') +,(4010, 603, 10, 24.24, 2.76, 'Allocated', '2016-07-05') +,(4010, 610, 6 , 9.09 , 3.02, 'On Order' , '2016-07-17') +,(4011, 604, 10, 58.25, 9.3 , 'No Stock' , '2016-04-04') +,(4011, 606, 5 , 73.34, 1.76, 'Allocated', '2016-06-30') +,(4011, 608, 3 , 95.07, 4.6 , 'On Order' , '2016-06-04') +,(4011, 615, 9 , 20.84, 3.93, 'Allocated', '2016-06-10') +,(4012, 604, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 601, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 610, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4013, 604, 2 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 606, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4014, 601, 3 , 37.57, 4.99, 'Allocated', '2016-08-21') +,(4015, 611, 8 , 95.27, 6.62, 'Allocated', '2017-03-13') +,(4015, 612, 2 , 89.63, 4.14, 'Allocated', '2016-04-07') +,(4015, 615, 8 , 69.03, 1.11, 'On Order' , '2016-08-15') +,(4016, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4017, 605, 6 , 75.88, 2.1 , 'On Order' , '2017-02-15') +,(4017, 610, 4 , 26.43, 7.18, 'On Order' , '2016-04-30') +,(4017, 619, 6 , 77.91, 9.26, 'No Stock' , '2016-04-02') +,(4018, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4019, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4020, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4021, 604, 3 , 20.14, 8.54, 'No Stock' , '2016-06-26') +,(4022, 614, 7 , 41.61, 4.62, 'On Order' , '2016-09-09') +,(4022, 619, 1 , 10.45, 2.56, 'On Order' , '2016-10-18') +,(4023, 607, 6 , 7.68 , 5.59, 'On Order' , '2016-11-15') +,(4023, 611, 7 , 89.4 , 1.71, 'No Stock' , '2016-04-03') +,(4024, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 609, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4025, 612, 6 , 81.24, 3.52, 'Allocated', '2016-04-25') +,(4025, 614, 4 , 14.07, 2.58, 'On Order' , '2016-09-11') +,(4026, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4026, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4027, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 612, 3 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4028, 605, 5 , 95.04, 7.82, 'On Order' , '2016-07-24') +,(4028, 615, 8 , 74.56, 1.78, 'Allocated', '2016-12-09') +,(4029, 604, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 603, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 607, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4030, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4031, 605, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 608, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 609, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 615, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4032, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4033, 615, 4 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 609, 3 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 620, 1 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4034, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4035, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4036, 604, 1 , 46.63, 4.25, 'No Stock' , '2016-05-04') +,(4036, 605, 6 , 66.75, 9.97, 'Allocated', '2017-02-25') +,(4037, 615, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4037, 612, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4038, 602, 2 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4038, 620, 3 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4039, 609, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 619, 3 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 620, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4040, 612, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4040, 620, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4041, 615, 9 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 612, 2 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 620, 1 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4042, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4043, 611, 7 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 619, 3 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 620, 1 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4044, 602, 8 , 47.3 , 3.26, 'On Order' , '2016-11-05') +,(4044, 612, 3 , 79.42, 6.56, 'On Order' , '2017-02-11') +,(4045, 603, 3 , 31.01, 7.2 , 'No Stock' , '2016-11-11') +,(4045, 604, 10, 43.54, 6.8 , 'Allocated', '2016-11-13') +,(4045, 608, 7 , 15.2 , 3.58, 'Allocated', '2017-01-18') +,(4046, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4047, 619, 2 , 81.11, 8.77, 'No Stock' , '2016-06-17') +,(4047, 620, 8 , 1.54 , 6.85, 'No Stock' , '2016-05-05') +,(4048, 605, 7 , 13.52, 2.44, 'On Order' , '2016-07-06') +,(4049, 603, 7 , 40.99, 5.77, 'Allocated', '2017-02-22') +,(4049, 609, 10, 90.45, 2.75, 'Allocated', '2017-01-26') +,(4049, 612, 10, 24.28, 9.85, 'No Stock' , '2016-10-01') +,(4050, 606, 4 , 27.84, 1.49, 'No Stock' , '2016-12-18') +,(4050, 607, 2 , 72.72, 3.08, 'On Order' , '2016-04-24') +,(4050, 612, 2 , 76.85, 5.15, 'No Stock' , '2017-02-25') +,(4051, 603, 1 , 57.6 , 1.77, 'Allocated', '2016-07-02') +,(4052, 605, 9 , 50.74, 6.47, 'No Stock' , '2016-05-22') +,(4053, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4054, 601, 10, 55.48, 9.19, 'On Order' , '2016-07-12') +,(4055, 606, 10, 57.17, 3.06, 'No Stock' , '2016-11-20') +,(4056, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4057, 609, 1 , 79.3 , 9.42, 'On Order' , '2016-10-01') +,(4057, 610, 5 , 41.21, 5.55, 'No Stock' , '2016-07-20') +,(4057, 618, 3 , 68.99, 6.42, 'On Order' , '2016-08-19') +,(4058, 604, 6 , 36.78, 6.96, 'Allocated', '2016-05-20') +,(4058, 619, 6 , 79.01, 4.3 , 'Allocated', '2016-06-19') +,(4059, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4060, 603, 10, 40.38, 2.1 , 'On Order' , '2017-02-05') +,(4060, 604, 9 , 41.98, 1.46, 'Allocated', '2017-01-17') +,(4061, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 602, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 603, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 604, 1 , 71.77, 4.91, 'No Stock' , '2016-11-20') +,(4062, 605, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 608, 1 , 62.85, 4.62, 'Allocated', '2016-03-25') +,(4063, 605, 4 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 615, 1 , 68.27, 6.79, 'No Stock' , '2016-07-06') +,(4064, 602, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 603, 5 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4065, 610, 5 , 99.76, 1.78, 'Allocated', '2016-09-23') +,(4066, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4066, 604, 9 , 2.63 , 7.42, 'Allocated', '2016-08-12') +,(4066, 615, 7 , 25.14, 7.22, 'No Stock' , '2016-03-27') +,(4067, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4068, 602, 4 , 12.67, 5.17, 'Allocated', '2016-08-30') +,(4068, 603, 1 , 87.81, 1.02, 'On Order' , '2016-10-12') +,(4069, 620, 7 , 89.85, 3.49, 'Allocated', '2017-02-22') +,(4070, 615, 5 , 94.08, 4.09, 'On Order' , '2017-01-31') +,(4071, 616, 1, 10.00, 1.00, 'Allocated', '2016-12-14') +,(4072, 601, 3 , 89.95, 9.61, 'No Stock' , '2016-11-25') +,(4072, 612, 5 , 34.51, 5.99, 'No Stock' , '2016-05-25') +,(4073, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4074, 606, 10, 98.2 , 3.63, 'On Order' , '2016-04-30') +,(4075, 605, 8 , 69.36, 9.16, 'On Order' , '2016-07-19') +,(4075, 606, 1 , 3.95 , 8.66, 'On Order' , '2016-04-09') +,(4076, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4077, 602, 10, 90.58, 5.92, 'No Stock' , '2016-06-23') +,(4077, 609, 1 , 8.25 , 3.74, 'No Stock' , '2016-12-07') +,(4077, 615, 9 , 86.2 , 4.5 , 'Allocated', '2017-03-10') +,(4078, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 615, 7 , 1.95 , 1.76, 'On Order' , '2017-03-04') +,(4079, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4080, 608, 5 , 26.84, 9.03, 'On Order' , '2016-11-13') +,(4080, 609, 3 , 41.76, 4.08, 'Allocated', '2016-09-10') +,(4081, 604, 9 , 5.49 , 8.45, 'On Order' , '2016-10-21') +,(4082, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4083, 602, 1 , 44.85, 5.16, 'No Stock' , '2016-09-16') +,(4084, 604, 4 , 58.27, 4.09, 'Allocated', '2016-08-12') +,(4085, 605, 8 , 93.54, 7.49, 'On Order' , '2016-11-24') +,(4086, 615, 2 , 94.02, 1.63, 'No Stock' , '2016-09-01') +,(4087, 601, 2 , 79.39, 3.86, 'No Stock' , '2016-07-13') +,(4088, 615, 3 , 14.03, 3.74, 'Allocated', '2016-11-15') +,(4089, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4090, 611, 4 , 46.11, 1.53, 'No Stock' , '2016-07-25') +,(4091, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4092, 602, 5 , 42.68, 7.92, 'On Order' , '2016-09-09') +,(4093, 615, 8 , 75.27, 5.92, 'No Stock' , '2016-07-09') +,(4094, 605, 7 , 91.05, 4.52, 'On Order' , '2017-02-21') +,(4095, 602, 6 , 58.5 , 9.62, 'On Order' , '2017-02-26') +,(4095, 604, 3 , 80.13, 4.11, 'No Stock' , '2016-12-01') +,(4095, 608, 1 , 23.96, 5.54, 'No Stock' , '2016-03-27') +,(4096, 601, 4 , 9.84 , 5.33, 'No Stock' , '2016-04-18') +,(4097, 605, 4 , 45.03, 5.61, 'On Order' , '2016-05-13') +,(4097, 606, 3 , 41.39, 3.59, 'On Order' , '2016-11-29') +,(4098, 607, 8 , 11.86, 2.74, 'No Stock' , '2016-11-23') +,(4099, 606, 2 , 54.09, 5.84, 'On Order' , '2016-10-08') +,(4100, 608, 3 , 6.62 , 1.25, 'Allocated', '2016-11-16') +,(4101, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4102, 608, 1 , 2.54 , 9.62, 'On Order' , '2016-10-01') +,(4102, 609, 9 , 92.56, 5.98, 'On Order' , '2016-10-14') +,(4102, 610, 10, 26.81, 5.9 , 'On Order' , '2016-08-20') +,(4103, 606, 6 , 71.32, 9.88, 'No Stock' , '2016-09-10') +,(4103, 608, 1 , 73.91, 9.79, 'No Stock' , '2016-12-26') +,(4104, 603, 9 , 33.85, 4.08, 'Allocated', '2017-03-02') +,(4105, 601, 5 , 49.17, 1.99, 'On Order' , '2016-11-11') +,(4105, 606, 9 , 93.8 , 4.48, 'Allocated', '2017-01-06') +,(4106, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4107, 603, 2 , 24.95, 3.71, 'On Order' , '2016-07-20') +,(4107, 604, 5 , 43.75, 1.39, 'No Stock' , '2017-01-03') +,(4107, 608, 1 , 49.09, 8.72, 'Allocated', '2016-12-19') +,(4107, 616, 8 , 26.78, 1.21, 'On Order' , '2016-09-23') +,(4108, 604, 8 , 36.89, 3.04, 'On Order' , '2017-01-01') +,(4108, 619, 1 , 6.43 , 6.66, 'Allocated', '2016-05-03') +,(4109, 604, 9 , 89.19, 9.43, 'No Stock' , '2016-10-21') +,(4109, 609, 2 , 3.71 , 9.12, 'No Stock' , '2016-10-23') +,(4110, 605, 3 , 61.65, 7.86, 'On Order' , '2016-08-05') +,(4110, 606, 2 , 63.62, 7.4 , 'Allocated', '2016-06-07') +,(4111, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4112, 607, 5 , 63.7 , 9.44, 'On Order' , '2017-01-01') +,(4112, 610, 1 , 22.54, 8.3 , 'On Order' , '2016-04-09') +,(4113, 604, 6 , 86.01, 4.4 , 'Allocated', '2017-01-05') +,(4113, 611, 5 , 39.64, 4.58, 'Allocated', '2017-02-26') +,(4113, 615, 3 , 22.49, 3.61, 'Allocated', '2016-08-24') +,(4113, 619, 6 , 7.6 , 6.63, 'On Order' , '2016-05-01') +,(4114, 610, 6 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 608, 2 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 609, 3 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4115, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4115, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4116, 610, 5 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 620, 3 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 615, 1 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4117, 603, 7 , 91.81, 4.35, 'On Order' , '2016-04-18') +,(4117, 610, 9 , 79.15, 6.8 , 'Allocated', '2017-02-09') +,(4118, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 615, 3 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 612, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4119, 615, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 612, 4 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4120, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 602, 3 , 7.09 , 6.48, 'No Stock' , '2016-06-03') +,(4121, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 611, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 606, 5 , 44.99, 1.66, 'No Stock' , '2016-05-08') +,(4122, 611, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 612, 6 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4123, 607, 10, 4.78 , 1.32, 'Allocated', '2016-12-28') +,(4124, 604, 1 , 18.79, 6.75, 'On Order' , '2017-01-05') +,(4125, 605, 9 , 59.37, 1.61, 'On Order' , '2016-07-24') +,(4125, 608, 1 , 72.49, 2.72, 'On Order' , '2016-08-22') +,(4126, 610, 10, 13.83, 1.15, 'On Order' , '2016-09-29') +,(4126, 615, 10, 71.77, 9.08, 'No Stock' , '2017-02-24') +,(4127, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4128, 605, 6 , 94.61, 7.16, 'No Stock' , '2017-02-09') +,(4128, 616, 3 , 4.67 , 2.72, 'On Order' , '2016-04-06') +,(4129, 610, 5 , 73.89, 8.17, 'On Order' , '2016-04-30') +,(4130, 608, 6 , 47.42, 8.39, 'No Stock' , '2017-02-27') +,(4131, 602, 5 , 28.62, 6.07, 'No Stock' , '2016-03-21') +,(4132, 602, 7 , 38.86, 3.58, 'Allocated', '2016-06-21') +,(4132, 604, 4 , 89.39, 2.36, 'No Stock' , '2016-12-20') +,(4132, 605, 5 , 29.97, 9.78, 'No Stock' , '2016-08-03') +,(4133, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 615, 4 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4134, 606, 1 , 73.57, 3.21, 'Allocated', '2016-04-07') +,(4134, 608, 1 , 65.61, 8.68, 'On Order' , '2017-01-14') +,(4135, 603, 2 , 7.24 , 2.61, 'Allocated', '2017-01-02') +,(4135, 607, 6 , 15.99, 6.23, 'No Stock' , '2016-12-16') +,(4135, 609, 6 , 26.55, 2.9 , 'On Order' , '2016-11-25') +,(4135, 612, 8 , 17.99, 9.59, 'No Stock' , '2016-03-25') +,(4136, 606, 10, 16.82, 8.15, 'On Order' , '2016-06-22') +,(4137, 605, 2 , 39.96, 6.08, 'On Order' , '2016-05-22') +,(4138, 620, 6 , 4.6 , 3.68, 'Allocated', '2016-09-17') +,(4139, 601, 4 , 87.74, 7.37, 'No Stock' , '2016-11-25') +,(4140, 603, 10, 90.31, 6.8 , 'On Order' , '2016-05-23') +,(4140, 615, 8 , 82.86, 2.49, 'On Order' , '2016-12-24') +,(4141, 609, 7 , 20.28, 1.51, 'Allocated', '2017-02-10') +,(4142, 608, 7 , 55.47, 8.32, 'No Stock' , '2016-07-07') +,(4142, 619, 5 , 75.63, 1.64, 'Allocated', '2016-08-02') +,(4143, 606, 3 , 99.61, 4.9 , 'No Stock' , '2016-10-25') +,(4144, 604, 6 , 80.75, 3.9 , 'Allocated', '2016-09-09') +,(4145, 603, 3 , 57.97, 8.04, 'On Order' , '2016-06-17') +,(4146, 611, 8 , 69.7 , 6.14, 'On Order' , '2016-04-15') +,(4147, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4148, 602, 4 , 67.89, 1.73, 'Allocated', '2016-03-26') +,(4149, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4150, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4152, 608, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4152, 620, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4153, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 604, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4155, 606, 7 , 42.62, 2.57, 'No Stock' , '2017-02-11') +,(4155, 607, 2 , 83.04, 5.25, 'On Order' , '2016-09-01') +,(4155, 610, 6 , 90.56, 6.31, 'On Order' , '2016-10-18') +,(4156, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4157, 603, 9 , 93.09, 5.35, 'Allocated', '2016-08-03') +,(4157, 607, 6 , 40.05, 3.9 , 'On Order' , '2017-01-13') +,(4158, 612, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4158, 611, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4159, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4159, 612, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4160, 610, 8 , 42.67, 5.88, 'No Stock' , '2017-01-04') +,(4160, 620, 10, 87.78, 4.28, 'Allocated', '2016-11-20') +,(4161, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4161, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4162, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4162, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4163, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4164, 607, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 608, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 617, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4165, 604, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 603, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 614, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4166, 601, 3 , 34.36, 9.92, 'No Stock' , '2016-09-01') +,(4166, 602, 10, 33.99, 5.76, 'Allocated', '2016-05-26') +,(4167, 603, 5 , 58.2 , 1.14, 'Allocated', '2016-06-20') +,(4167, 608, 1 , 20.01, 6.24, 'No Stock' , '2017-01-05') +,(4168, 601, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4168, 605, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4169, 604, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 609, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 607, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4170, 607, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4170, 620, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4171, 610, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 601, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 611, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 613, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 615, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4172, 606, 6 , 88.26, 2.95, 'No Stock' , '2016-04-11') +,(4172, 609, 7 , 60.97, 1.12, 'Allocated', '2016-10-14') +,(4173, 601, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 603, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 605, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4174, 607, 8 , 53.95, 6.31, 'No Stock' , '2016-04-30') +,(4174, 612, 2 , 13.56, 7.15, 'No Stock' , '2016-07-08') +,(4175, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4176, 615, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4176, 616, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4177, 601, 2 , 17.86, 2.99, 'Allocated', '2016-05-07') +,(4177, 604, 8 , 18.39, 6.73, 'On Order' , '2016-04-05') +,(4178, 605, 9 , 23.59, 8.82, 'Allocated', '2016-09-11') +,(4178, 607, 9 , 62.59, 7.88, 'No Stock' , '2016-04-18') +,(4179, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4180, 602, 7 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4180, 603, 1 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4181, 602, 2 , 64.2 , 4.74, 'Allocated', '2016-08-16') +,(4181, 603, 3 , 41.45, 2.49, 'Allocated', '2016-04-18') +,(4181, 604, 5 , 86.42, 6.42, 'No Stock' , '2016-05-03') +,(4182, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4183, 615, 1 , 68.34, 8.16, 'On Order' , '2016-12-22') +,(4184, 601, 2 , 95.18, 2.74, 'Allocated', '2016-09-16') +,(4184, 603, 9 , 99.41, 9.44, 'No Stock' , '2016-07-01') +,(4184, 604, 1 , 29.52, 3.48, 'Allocated', '2016-04-02') +,(4185, 602, 2 , 22.84, 5.5 , 'On Order' , '2016-10-20') +,(4185, 611, 10, 34.57, 4.27, 'Allocated', '2017-02-05') +,(4185, 612, 4 , 85.32, 5.03, 'Allocated', '2017-03-14') +,(4185, 619, 9 , 64.97, 1.57, 'No Stock' , '2016-10-19') +,(4186, 605, 2 , 80.08, 7.63, 'On Order' , '2017-01-31') +,(4187, 602, 9 , 87.92, 7.74, 'On Order' , '2016-11-13') +,(4187, 616, 3 , 73.39, 6.52, 'On Order' , '2016-09-15') +,(4188, 604, 8 , 30.36, 1.97, 'No Stock' , '2016-06-05') +,(4188, 605, 5 , 70.95, 6.11, 'On Order' , '2016-03-31') +,(4188, 611, 3 , 23.18, 8.76, 'On Order' , '2016-03-30') +,(4189, 608, 4 , 52.23, 3.08, 'No Stock' , '2016-04-12') +,(4190, 602, 10, 17.3 , 4.18, 'No Stock' , '2016-03-29') +,(4190, 615, 6 , 34.29, 9.45, 'Allocated', '2016-11-01') +,(4191, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4192, 602, 4 , 90.29, 5.09, 'Allocated', '2017-02-14') +,(4192, 605, 8 , 1.03 , 1.28, 'On Order' , '2017-02-14') +,(4192, 615, 1 , 11.61, 7.49, 'No Stock' , '2016-08-11') +,(4193, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4194, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4195, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4196, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4197, 608, 10, 60.36, 3.99, 'On Order' , '2016-10-30') +,(4198, 606, 1 , 58.71, 2.32, 'No Stock' , '2016-06-26') +,(4199, 602, 8 , 12.59, 9.45, 'Allocated', '2016-04-16') +,(4199, 603, 7 , 5.5 , 2.26, 'No Stock' , '2016-11-28') +,(4200, 605, 10, 92.81, 1.0 , 'No Stock' , '2017-03-07') +,(4201, 606, 3 , 46.48, 5.94, 'Allocated', '2016-12-15') +,(4201, 608, 2 , 97.29, 5.87, 'No Stock' , '2016-09-12') +,(4202, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4202, 608, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4203, 610, 2 , 29.12, 6.46, 'No Stock' , '2016-10-27') +,(4203, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4204, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4204, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4205, 610, 4 , 78.23, 5.95, 'No Stock' , '2016-06-21') +,(4205, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4206, 603, 2 , 40.49, 6.94, 'On Order' , '2017-02-23') +,(4206, 619, 6 , 80.19, 3.28, 'No Stock' , '2017-01-21') +,(4207, 604, 9 , 84.48, 7.01, 'No Stock' , '2016-08-17') +,(4207, 605, 9 , 41.79, 1.55, 'On Order' , '2016-06-27') +,(4207, 610, 5 , 12.3 , 9.51, 'On Order' , '2016-05-17') +,(4208, 603, 7 , 37.26, 3.68, 'Allocated', '2016-03-30') +,(4208, 605, 5 , 82.65, 2.76, 'On Order' , '2016-12-11') +,(4208, 607, 1 , 84.88, 8.67, 'No Stock' , '2016-04-28') +,(4208, 609, 1 , 88.01, 1.98, 'Allocated', '2016-10-04') +,(4208, 610, 6 , 88.85, 4.2 , 'No Stock' , '2016-04-19') +,(4209, 606, 6 , 46.31, 8.98, 'Allocated', '2016-04-20') +,(4210, 603, 2 , 92.12, 8.78, 'No Stock' , '2016-12-11') +,(4210, 609, 7 , 70.37, 6.89, 'Allocated', '2016-06-23') +,(4211, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4212, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4213, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4214, 608, 3 , 37.43, 5.18, 'Allocated', '2016-05-15') +,(4214, 610, 9 , 35.48, 7.16, 'On Order' , '2017-02-13') +,(4214, 611, 7 , 84.99, 8.17, 'No Stock' , '2016-07-08') +,(4215, 610, 5 , 4.35 , 2.65, 'Allocated', '2016-07-24') +,(4216, 606, 3 , 79.91, 8.92, 'Allocated', '2016-05-02') +,(4216, 608, 8 , 45.75, 3.7 , 'Allocated', '2017-02-24') +,(4216, 615, 1 , 55.11, 8.94, 'No Stock' , '2016-05-06') +,(4217, 605, 5 , 40.67, 3.31, 'On Order' , '2016-11-09') +,(4217, 610, 5 , 20.0 , 8.58, 'On Order' , '2016-07-27') +,(4218, 615, 7 , 34.14, 8.03, 'Allocated', '2016-11-12') +,(4218, 619, 9 , 62.61, 5.74, 'On Order' , '2016-11-08') +,(4219, 604, 9 , 46.24, 2.42, 'No Stock' , '2016-10-31') +,(4219, 613, 7 , 26.63, 3.9 , 'No Stock' , '2016-12-04') +,(4219, 619, 1 , 98.58, 7.38, 'No Stock' , '2016-08-06') +,(4220, 604, 5 , 66.78, 9.28, 'No Stock' , '2016-10-09') +,(4220, 609, 6 , 62.82, 9.71, 'No Stock' , '2016-04-06') +,(4221, 602, 8 , 8.44 , 1.85, 'Allocated', '2016-11-25') +,(4222, 601, 10, 84.14, 2.59, 'No Stock' , '2016-06-25') +,(4222, 604, 9 , 39.15, 8.12, 'No Stock' , '2016-09-27') +,(4223, 602, 2 , 74.35, 9.94, 'Allocated', '2016-04-18') +,(4223, 611, 4 , 58.85, 6.75, 'No Stock' , '2017-03-04') +,(4224, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4225, 605, 7 , 88.08, 8.69, 'On Order' , '2016-11-13') +,(4226, 606, 1 , 84.22, 3.54, 'On Order' , '2017-01-19') +,(4226, 608, 4 , 97.1 , 4.73, 'On Order' , '2016-04-25') +,(4227, 606, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4227, 607, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4228, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 610, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4229, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4229, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4230, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4231, 611, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4231, 618, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4232, 615, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4232, 618, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4233, 608, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 610, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 618, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4234, 604, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4234, 619, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4235, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4235, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4236, 607, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 617, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 620, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4237, 602, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4237, 620, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4238, 602, 3 , 32.5 , 2.63, 'No Stock' , '2016-04-09') +,(4238, 608, 8 , 88.3 , 7.59, 'On Order' , '2016-08-18') +,(4239, 606, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4239, 616, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4240, 606, 10, 43.66, 2.48, 'No Stock' , '2017-02-05') +,(4240, 609, 2 , 56.95, 2.11, 'No Stock' , '2016-11-15') +,(4241, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4242, 605, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 606, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 607, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4243, 604, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 614, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 610, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4244, 609, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 619, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 620, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4245, 608, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 618, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 620, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4246, 603, 10, 53.94, 3.85, 'No Stock' , '2016-06-04') +,(4246, 606, 7 , 6.16 , 9.37, 'No Stock' , '2016-07-05') +,(4246, 607, 3 , 27.34, 1.97, 'Allocated', '2016-11-15') +,(4246, 611, 4 , 73.06, 1.26, 'No Stock' , '2017-02-28') +,(4247, 601, 4 , 66.41, 4.54, 'On Order' , '2017-02-26') +,(4247, 605, 2 , 61.24, 5.9 , 'Allocated', '2016-12-15') +,(4248, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4248, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4249, 615, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 620, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 609, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4250, 606, 7 , 63.89, 3.39, 'On Order' , '2016-12-31') +,(4250, 612, 8 , 75.06, 4.19, 'Allocated', '2016-06-26') +,(4251, 602, 1 , 1.75 , 1.73, 'No Stock' , '2016-12-07') +,(4251, 604, 8 , 43.98, 1.58, 'Allocated', '2016-07-28') +,(4252, 606, 4 , 94.24, 1.31, 'No Stock' , '2017-03-14') +,(4252, 619, 10, 41.46, 4.18, 'No Stock' , '2017-03-03') +,(4252, 620, 3 , 29.91, 4.91, 'On Order' , '2016-12-28') +,(4253, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4253, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4254, 610, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 620, 2 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 612, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4255, 610, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4255, 611, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4256, 604, 9 , 6.74 , 1.84, 'No Stock' , '2016-06-13') +,(4256, 612, 4 , 42.02, 2.86, 'Allocated', '2016-09-19') +,(4256, 620, 2 , 31.71, 4.97, 'Allocated', '2016-10-02') +,(4257, 617, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 610, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 611, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4258, 605, 7 , 22.45, 8.41, 'On Order' , '2016-06-02') +,(4258, 615, 3 , 69.12, 3.65, 'Allocated', '2017-02-27') +,(4258, 619, 4 , 62.32, 2.23, 'Allocated', '2017-02-20') +,(4259, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4260, 603, 1 , 27.68, 1.99, 'Allocated', '2016-09-20') +,(4260, 604, 3 , 59.65, 3.05, 'No Stock' , '2016-12-31') +,(4261, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4262, 602, 4 , 51.73, 3.06, 'Allocated', '2017-01-17') +,(4263, 612, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 615, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 616, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4264, 604, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4264, 614, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4265, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4265, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4266, 601, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4266, 602, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4267, 601, 4 , 44.78, 6.86, 'No Stock' , '2016-09-27') +,(4267, 610, 4 , 19.08, 6.41, 'No Stock' , '2016-12-24') +,(4268, 611, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4268, 612, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4269, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4270, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4271, 603, 2 , 80.47, 4.81, 'Allocated', '2016-05-25') +,(4271, 604, 8 , 38.65, 4.02, 'No Stock' , '2016-05-09') +,(4272, 610, 7 , 66.28, 2.85, 'No Stock' , '2016-09-17') +,(4273, 612, 10, 85.38, 8.44, 'No Stock' , '2016-12-19') +,(4274, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4275, 610, 8 , 1.12 , 8.65, 'Allocated', '2016-10-28') +,(4275, 615, 1 , 24.01, 5.55, 'No Stock' , '2016-12-30') +,(4276, 603, 3 , 44.76, 7.28, 'No Stock' , '2016-12-28') +,(4277, 610, 9 , 40.01, 8.62, 'No Stock' , '2016-11-10') +,(4278, 603, 6 , 32.0 , 1.23, 'Allocated', '2016-12-23') +,(4278, 608, 4 , 38.01, 9.45, 'Allocated', '2016-10-05') +,(4278, 609, 5 , 31.99, 5.41, 'No Stock' , '2016-10-23') +,(4279, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4280, 606, 5 , 7.52 , 2.76, 'Allocated', '2016-05-27') +,(4280, 609, 4 , 37.09, 4.44, 'On Order' , '2016-08-10') +,(4281, 610, 9 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 611, 2 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 612, 1 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4282, 601, 1 , 19.14, 3.98, 'On Order' , '2016-11-09') +,(4282, 606, 3 , 88.94, 6.79, 'On Order' , '2016-09-29') +,(4282, 609, 6 , 25.35, 5.22, 'Allocated', '2016-10-05') +,(4283, 601, 1 , 14.78, 3.31, 'On Order' , '2016-10-07') +,(4284, 606, 5 , 32.57, 7.22, 'On Order' , '2016-08-24') +,(4285, 604, 5 , 47.88, 3.77, 'No Stock' , '2016-12-09') +,(4285, 615, 8 , 9.28 , 2.13, 'Allocated', '2016-03-27') +,(4286, 620, 5 , 63.24, 7.62, 'Allocated', '2016-12-06') +,(4287, 602, 6 , 2.9 , 9.5 , 'On Order' , '2016-10-06') +,(4287, 605, 5 , 7.63 , 2.78, 'Allocated', '2016-08-22') +,(4287, 611, 1 , 8.98 , 3.39, 'Allocated', '2016-07-18') +,(4287, 614, 3 , 34.4 , 7.12, 'On Order' , '2017-03-04') +,(4288, 604, 6 , 57.67, 3.25, 'Allocated', '2016-05-18') +,(4289, 601, 7 , 19.32, 7.31, 'On Order' , '2017-01-21') +,(4289, 615, 10, 89.16, 2.08, 'No Stock' , '2016-06-03') +,(4290, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4291, 601, 1 , 68.5 , 2.58, 'Allocated', '2016-11-05') +,(4291, 603, 5 , 11.27, 5.56, 'Allocated', '2016-06-10') +,(4291, 606, 1 , 76.82, 3.31, 'Allocated', '2016-09-27') +,(4292, 608, 10, 27.45, 4.8 , 'On Order' , '2016-05-12') +,(4292, 610, 9 , 16.78, 5.96, 'No Stock' , '2016-05-05') +,(4293, 612, 4 , 69.21, 2.07, 'Allocated', '2016-08-23') +,(4294, 619, 4 , 81.5 , 9.13, 'Allocated', '2017-01-20') +,(4295, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4296, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4297, 604, 4 , 19.21, 1.7 , 'Allocated', '2016-08-20') +,(4297, 606, 4 , 71.24, 5.74, 'No Stock' , '2016-10-11') +,(4298, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4299, 603, 8 , 81.7 , 5.69, 'Allocated', '2016-07-06') +,(4300, 601, 5 , 35.51, 8.38, 'On Order' , '2016-12-23') +,(4300, 607, 5 , 46.94, 6.82, 'No Stock' , '2016-07-29') +,(4301, 605, 6 , 99.32, 1.22, 'Allocated', '2016-09-02') +,(4301, 620, 7 , 96.67, 6.9 , 'Allocated', '2016-11-24') +,(4302, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4303, 605, 8 , 31.92, 5.62, 'On Order' , '2016-04-09') +,(4304, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4305, 606, 1 , 2.53 , 1.15, 'On Order' , '2016-12-03') +,(4305, 609, 6 , 76.41, 7.87, 'Allocated', '2016-07-05') +,(4305, 612, 3 , 31.58, 5.53, 'On Order' , '2016-10-01') +,(4306, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4307, 601, 7 , 36.63, 3.9 , 'On Order' , '2016-09-16') +,(4307, 606, 10, 56.47, 8.96, 'No Stock' , '2017-02-25') +,(4308, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4309, 606, 6 , 84.25, 2.28, 'On Order' , '2016-04-07') +,(4310, 605, 7 , 15.88, 2.48, 'Allocated', '2017-02-17') +,(4311, 603, 2 , 67.26, 6.18, 'No Stock' , '2016-05-06') +,(4312, 619, 4 , 87.5 , 6.57, 'Allocated', '2017-03-14') +,(4313, 602, 3 , 87.01, 4.45, 'On Order' , '2016-08-30') +,(4313, 610, 7 , 54.92, 8.87, 'No Stock' , '2017-01-20') +,(4314, 602, 9 , 49.19, 2.67, 'Allocated', '2016-07-24') +,(4314, 607, 10, 32.19, 8.12, 'On Order' , '2016-11-23') +,(4315, 602, 7 , 9.25 , 3.78, 'On Order' , '2017-01-04') +,(4316, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4317, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4318, 609, 5 , 29.17, 3.35, 'No Stock' , '2016-11-28') +,(4318, 610, 4 , 41.75, 3.7 , 'On Order' , '2016-09-09') +,(4318, 620, 5 , 81.63, 1.49, 'On Order' , '2016-04-16') +,(4319, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4320, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4321, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4322, 603, 2 , 21.09, 9.37, 'No Stock' , '2016-11-29') +,(4323, 608, 8 , 24.05, 9.49, 'On Order' , '2016-08-12') +,(4324, 607, 7 , 83.23, 1.48, 'On Order' , '2016-07-10') +,(4325, 608, 10, 35.28, 1.8 , 'Allocated', '2016-09-01') +,(4326, 602, 8 , 69.18, 4.43, 'No Stock' , '2016-07-31') +,(4326, 610, 2 , 24.44, 8.1 , 'No Stock' , '2016-03-29') +,(4327, 608, 3 , 22.57, 4.64, 'Allocated', '2016-03-23') +,(4328, 604, 1 , 55.53, 3.16, 'On Order' , '2016-12-14') +,(4328, 605, 2 , 38.78, 6.97, 'Allocated', '2017-03-04') +,(4328, 607, 5 , 28.94, 3.59, 'Allocated', '2016-08-01') +,(4329, 603, 6 , 65.93, 2.86, 'On Order' , '2016-10-25') +,(4330, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4331, 602, 5 , 37.37, 6.39, 'No Stock' , '2016-03-19') +,(4332, 606, 5 , 93.96, 3.31, 'No Stock' , '2016-08-09') +,(4332, 610, 5 , 3.77 , 6.74, 'Allocated', '2016-06-23') +,(4333, 608, 7 , 14.29, 3.95, 'On Order' , '2016-06-16') +,(4334, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4335, 609, 6 , 63.15, 9.3 , 'Allocated', '2016-08-31') +,(4336, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4337, 610, 1 , 52.98, 5.68, 'Allocated', '2016-03-19') +,(4338, 610, 1 , 83.94, 3.56, 'Allocated', '2016-11-03') +,(4339, 604, 10, 78.06, 5.32, 'No Stock' , '2016-11-19') +,(4340, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4341, 609, 6 , 52.04, 7.63, 'No Stock' , '2016-11-25') +,(4341, 615, 1 , 9.44 , 8.66, 'No Stock' , '2016-09-06') +,(4342, 615, 6 , 67.41, 8.5 , 'Allocated', '2016-08-28') +,(4343, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4344, 610, 10, 61.53, 5.36, 'On Order' , '2016-04-30') +,(4345, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4346, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4347, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4348, 608, 1 , 96.42, 4.57, 'On Order' , '2016-05-14') +,(4348, 610, 3 , 38.0 , 5.74, 'On Order' , '2016-05-30') +,(4348, 611, 6 , 38.59, 6.7 , 'On Order' , '2016-08-16') +,(4349, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4350, 602, 8 , 81.72, 7.57, 'Allocated', '2016-08-18') +,(4350, 604, 6 , 95.31, 9.43, 'On Order' , '2016-12-29') +,(4350, 608, 9 , 43.57, 6.54, 'No Stock' , '2016-08-24') +,(4351, 602, 1 , 37.63, 3.31, 'No Stock' , '2016-08-26') +,(4351, 607, 9 , 83.22, 2.44, 'No Stock' , '2016-04-11') +,(4352, 602, 3 , 13.09, 3.98, 'No Stock' , '2016-10-03') +,(4352, 603, 9 , 88.58, 4.87, 'On Order' , '2017-03-05') +,(4352, 614, 4 , 47.62, 5.05, 'Allocated', '2016-05-30') +,(4353, 612, 9 , 28.8 , 1.77, 'Allocated', '2016-03-28') +,(4354, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4355, 607, 4 , 20.25, 3.18, 'No Stock' , '2016-04-27') +,(4355, 608, 9 , 73.3 , 5.95, 'Allocated', '2016-12-08') +,(4355, 609, 7 , 26.16, 6.88, 'Allocated', '2016-12-09') +,(4356, 614, 8 , 93.97, 2.88, 'No Stock' , '2016-06-14') +,(4357, 605, 6 , 24.39, 5.53, 'No Stock' , '2016-07-31') +,(4357, 612, 4 , 71.28, 1.94, 'No Stock' , '2016-07-08') +,(4358, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4359, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4360, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4361, 601, 6 , 45.27, 1.05, 'Allocated', '2016-03-29') +,(4361, 609, 10, 39.75, 1.28, 'On Order' , '2016-07-15') +,(4362, 603, 4 , 42.92, 5.17, 'No Stock' , '2016-09-24') +,(4363, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4364, 602, 8 , 90.01, 4.2 , 'On Order' , '2017-02-09') +,(4365, 601, 2 , 92.96, 3.73, 'Allocated', '2016-06-10') +,(4365, 603, 7 , 86.67, 9.6 , 'On Order' , '2016-07-31') +,(4366, 604, 6 , 52.01, 2.02, 'No Stock' , '2016-09-23') +,(4366, 605, 9 , 88.21, 3.68, 'On Order' , '2016-08-10') +,(4366, 609, 8 , 80.78, 3.99, 'No Stock' , '2016-05-07') +,(4367, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4368, 604, 4 , 53.46, 4.56, 'No Stock' , '2016-09-07') +,(4369, 612, 2 , 8.5 , 3.86, 'Allocated', '2017-01-20') +,(4370, 603, 9 , 46.22, 8.2 , 'On Order' , '2016-09-02') +,(4370, 604, 10, 10.38, 2.29, 'Allocated', '2016-06-03') +,(4371, 610, 10, 23.33, 4.07, 'On Order' , '2016-08-25') +,(4372, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4373, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4374, 604, 3 , 29.51, 2.34, 'No Stock' , '2017-03-07') +,(4375, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4376, 608, 10, 5.55 , 3.21, 'No Stock' , '2016-09-14') +,(4377, 602, 9 , 91.62, 8.57, 'On Order' , '2016-08-26') +,(4378, 603, 8 , 74.83, 5.38, 'On Order' , '2016-04-11') +,(4379, 605, 9 , 53.7 , 5.65, 'On Order' , '2016-10-29') +,(4380, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4381, 619, 1 , 35.54, 3.78, 'Allocated', '2016-07-27') +,(4382, 602, 8 , 33.64, 7.95, 'Allocated', '2016-11-05') +,(4382, 606, 4 , 68.17, 6.06, 'On Order' , '2017-01-22') +,(4383, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4384, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4385, 609, 1 , 18.13, 8.94, 'On Order' , '2016-03-25') +,(4386, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4387, 602, 8 , 86.06, 9.74, 'Allocated', '2016-12-01') +,(4387, 606, 8 , 87.31, 7.53, 'No Stock' , '2016-06-12') +,(4387, 610, 3 , 47.55, 5.2 , 'Allocated', '2016-10-06') +,(4388, 602, 4 , 5.86 , 3.52, 'On Order' , '2016-05-09') +,(4388, 603, 8 , 24.25, 6.18, 'Allocated', '2016-09-22') +,(4388, 606, 6 , 29.46, 2.93, 'Allocated', '2016-09-11') +,(4388, 619, 1 , 36.76, 7.37, 'No Stock' , '2016-12-29') +,(4389, 602, 1 , 94.23, 9.35, 'Allocated', '2016-06-13') +,(4389, 603, 2 , 40.15, 8.39, 'No Stock' , '2016-08-09') +,(4390, 609, 4 , 7.02 , 5.61, 'On Order' , '2016-11-29') +,(4391, 607, 1 , 48.41, 8.97, 'On Order' , '2016-07-10') +,(4392, 603, 8 , 74.91, 8.23, 'No Stock' , '2016-04-07') +,(4393, 611, 4 , 55.83, 4.56, 'Allocated', '2016-04-13') +,(4394, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4395, 610, 7 , 82.73, 5.09, 'No Stock' , '2016-09-27') +,(4395, 617, 6 , 26.05, 6.29, 'On Order' , '2016-07-24') +,(4396, 605, 9 , 66.19, 1.32, 'No Stock' , '2017-02-05') +,(4396, 619, 4 , 3.15 , 1.04, 'On Order' , '2016-07-08') +,(4397, 619, 9 , 78.52, 7.64, 'No Stock' , '2016-08-19') +,(4398, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4399, 610, 7 , 85.03, 4.71, 'No Stock' , '2016-05-04') +,(4400, 612, 9 , 36.85, 6.54, 'On Order' , '2016-10-31') +,(4400, 620, 2 , 15.9 , 5.62, 'On Order' , '2016-06-18') +,(4401, 602, 1 , 91.01, 4.13, 'No Stock' , '2016-09-27') +,(4401, 604, 10, 98.7 , 5.27, 'Allocated', '2016-06-03') +,(4402, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4403, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4404, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4405, 604, 3 , 46.99, 9.31, 'No Stock' , '2016-09-08') +,(4405, 610, 10, 4.94 , 1.68, 'On Order' , '2016-11-15') +,(4406, 602, 7 , 25.84, 7.67, 'On Order' , '2016-10-28') +,(4406, 606, 2 , 96.43, 5.64, 'No Stock' , '2016-11-14') +,(4406, 607, 10, 14.91, 3.88, 'No Stock' , '2016-06-18') +,(4407, 606, 9 , 20.82, 6.82, 'No Stock' , '2016-10-08') +,(4407, 608, 4 , 29.19, 7.26, 'No Stock' , '2016-12-15') +,(4408, 605, 4 , 12.83, 9.29, 'No Stock' , '2016-11-20') +,(4408, 615, 4 , 89.77, 2.7 , 'No Stock' , '2017-03-07') +,(4408, 619, 3 , 36.44, 8.86, 'No Stock' , '2016-12-17') +,(4409, 602, 2 , 36.96, 9.73, 'Allocated', '2016-08-19') +,(4409, 611, 7 , 94.98, 4.11, 'On Order' , '2016-05-17') +,(4410, 603, 7 , 13.79, 5.05, 'No Stock' , '2016-09-28') +,(4410, 604, 10, 70.24, 4.07, 'No Stock' , '2016-10-27') +,(4410, 607, 6 , 26.39, 7.8 , 'No Stock' , '2016-03-21') +,(4411, 602, 7 , 3.47 , 3.86, 'No Stock' , '2017-03-14') +,(4411, 611, 3 , 10.43, 3.67, 'On Order' , '2016-12-27') +,(4412, 605, 10, 26.07, 6.78, 'Allocated', '2017-02-16') +,(4412, 607, 7 , 76.81, 5.67, 'No Stock' , '2016-11-26') +,(4412, 610, 3 , 98.77, 3.34, 'On Order' , '2016-09-29') +,(4413, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4414, 606, 5 , 26.01, 4.54, 'On Order' , '2016-03-23') +,(4415, 605, 5 , 74.86, 1.68, 'No Stock' , '2016-09-18') +,(4416, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4417, 601, 6 , 66.38, 5.22, 'No Stock' , '2016-07-07') +,(4417, 604, 7 , 96.99, 4.89, 'No Stock' , '2016-09-30') +,(4418, 609, 8 , 59.88, 5.52, 'Allocated', '2016-09-03') +,(4419, 604, 4 , 54.04, 4.95, 'On Order' , '2017-01-05') +,(4420, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4421, 605, 2 , 96.34, 1.7 , 'On Order' , '2016-06-10') +,(4422, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4423, 602, 3 , 25.88, 5.34, 'Allocated', '2016-04-19') +,(4423, 605, 5 , 4.06 , 2.22, 'On Order' , '2016-06-21') +,(4423, 608, 9 , 20.4 , 4.26, 'On Order' , '2016-08-17') +,(4424, 605, 8 , 44.66, 4.23, 'Allocated', '2016-11-06') +,(4425, 607, 7 , 18.91, 6.75, 'On Order' , '2016-11-28') +,(4425, 608, 4 , 60.11, 4.46, 'No Stock' , '2017-02-15') +,(4426, 606, 8 , 44.98, 6.5 , 'On Order' , '2016-11-13') +,(4426, 607, 4 , 78.46, 2.91, 'Allocated', '2017-01-26') +,(4427, 604, 2 , 61.91, 3.08, 'On Order' , '2016-09-01') +,(4427, 607, 10, 53.82, 8.17, 'No Stock' , '2016-11-09') +,(4428, 603, 2 , 81.15, 5.94, 'Allocated', '2016-12-01') +,(4428, 605, 9 , 48.38, 5.26, 'On Order' , '2016-07-08') +,(4429, 606, 10, 28.8 , 2.75, 'Allocated', '2017-03-03') +,(4430, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4431, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4432, 603, 9 , 52.12, 4.42, 'No Stock' , '2016-09-03') +,(4433, 601, 4 , 34.09, 9.94, 'No Stock' , '2016-04-18') +,(4433, 605, 1 , 65.04, 7.32, 'On Order' , '2016-04-04') +,(4434, 601, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 605, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 607, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4435, 610, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 612, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 614, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4436, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4437, 601, 7 , 56.48, 9.07, 'Allocated', '2016-05-05') +,(4437, 602, 1 , 98.71, 8.08, 'On Order' , '2017-03-16') +,(4437, 609, 7 , 12.69, 5.56, 'On Order' , '2016-12-16') +,(4438, 604, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 605, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 606, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 615, 5 , 11.46, 3.07, 'Allocated', '2016-06-10') +,(4439, 618, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 603, 9 , 66.05, 8.7 , 'No Stock' , '2016-11-08') +,(4440, 616, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4441, 602, 4 , 79.49, 2.54, 'Allocated', '2017-02-19') +,(4441, 609, 4 , 88.86, 9.63, 'Allocated', '2016-06-06') +,(4442, 608, 1 , 55.66, 2.52, 'Allocated', '2016-09-08') +,(4443, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4444, 602, 4 , 52.6 , 9.83, 'On Order' , '2017-01-18') +,(4444, 605, 8 , 81.63, 9.58, 'On Order' , '2017-01-27') +,(4445, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 601, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 607, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4446, 602, 3 , 76.28, 1.52, 'On Order' , '2017-02-17') +,(4446, 606, 5 , 18.52, 2.13, 'On Order' , '2016-06-28') +,(4447, 609, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 608, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 607, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4448, 605, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 606, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 607, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4449, 618, 6 , 35.62, 5.23, 'On Order' , '2016-04-15') +,(4449, 619, 10, 86.97, 4.63, 'No Stock' , '2016-09-29') +,(4450, 619, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 620, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 601, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4451, 604, 3 , 47.48, 1.4 , 'Allocated', '2016-09-12') +,(4452, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4453, 606, 2 , 4.03 , 8.07, 'On Order' , '2016-12-10') +,(4454, 619, 7 , 55.92, 9.0 , 'On Order' , '2016-10-07') +,(4455, 602, 10, 50.3 , 9.33, 'On Order' , '2017-01-11') +,(4455, 603, 1 , 7.68 , 7.77, 'Allocated', '2016-12-09') +,(4455, 605, 1 , 98.23, 3.73, 'Allocated', '2016-07-07') +,(4456, 607, 8 , 54.83, 9.57, 'No Stock' , '2016-08-16') +,(4456, 612, 7 , 97.34, 1.24, 'Allocated', '2016-05-13') +,(4457, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4458, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4459, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4460, 602, 8 , 37.95, 8.36, 'No Stock' , '2017-01-03') +,(4461, 620, 6 , 73.77, 2.02, 'Allocated', '2016-03-27') +,(4462, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4463, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4464, 606, 1 , 31.6 , 1.18, 'On Order' , '2016-09-05') +,(4465, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4466, 620, 10, 37.79, 1.76, 'Allocated', '2016-12-14') +,(4467, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4468, 610, 3 , 80.77, 6.87, 'Allocated', '2016-12-30') +,(4469, 602, 3 , 19.99, 5.21, 'No Stock' , '2016-08-11') +,(4469, 612, 3 , 73.21, 4.85, 'On Order' , '2017-02-19') +,(4470, 607, 4 , 7.7 , 5.78, 'No Stock' , '2016-04-22') +,(4471, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4472, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4473, 609, 2 , 97.6 , 1.84, 'Allocated', '2016-05-12') +,(4474, 611, 7 , 12.5 , 6.31, 'Allocated', '2016-04-18') +,(4475, 603, 2 , 44.42, 7.21, 'No Stock' , '2017-03-10') +,(4476, 603, 4 , 43.47, 5.63, 'No Stock' , '2016-09-17') +,(4477, 603, 4 , 24.99, 4.46, 'No Stock' , '2016-09-10') +,(4478, 606, 1 , 29.13, 4.59, 'On Order' , '2017-03-04') +,(4478, 619, 4 , 58.05, 2.9 , 'Allocated', '2017-01-26') +,(4479, 603, 10, 93.2 , 7.79, 'On Order' , '2016-03-21') +,(4479, 609, 4 , 70.36, 9.01, 'Allocated', '2017-02-03') +,(4479, 610, 6 , 49.48, 6.79, 'Allocated', '2017-03-01') +,(4480, 608, 9 , 11.03, 6.26, 'On Order' , '2016-12-10') +,(4481, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4482, 603, 10, 28.92, 8.1 , 'No Stock' , '2016-05-27') +,(4482, 607, 6 , 90.11, 5.74, 'On Order' , '2016-04-29') +,(4482, 610, 4 , 7.12 , 2.89, 'On Order' , '2017-01-12') +,(4482, 611, 1 , 12.48, 8.56, 'No Stock' , '2016-08-16') +,(4482, 614, 10, 55.93, 1.63, 'On Order' , '2016-07-09') +,(4482, 618, 1 , 33.9 , 2.46, 'Allocated', '2016-07-11') +,(4483, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4484, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4485, 605, 7 , 99.92, 1.31, 'No Stock' , '2016-05-11') +,(4486, 615, 7 , 4.39 , 3.61, 'Allocated', '2016-06-24') +,(4487, 602, 9 , 69.78, 7.96, 'No Stock' , '2016-12-29') +,(4487, 607, 5 , 24.92, 8.97, 'On Order' , '2016-08-15') +,(4487, 615, 4 , 72.16, 8.97, 'On Order' , '2016-07-28') +,(4488, 601, 9 , 64.29, 1.52, 'On Order' , '2016-03-30') +,(4488, 609, 10, 66.79, 5.3 , 'On Order' , '2016-07-11') +,(4489, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4490, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4491, 602, 3 , 16.8 , 5.22, 'On Order' , '2016-09-16') +,(4492, 607, 4 , 99.59, 2.45, 'On Order' , '2017-03-04') +,(4493, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4494, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4495, 607, 7 , 86.05, 5.4 , 'Allocated', '2016-10-03') +,(4496, 603, 10, 55.12, 3.71, 'Allocated', '2016-07-06') +,(4497, 607, 7 , 27.3 , 4.26, 'Allocated', '2017-01-29') +,(4498, 604, 10, 89.58, 1.25, 'Allocated', '2016-03-19') +,(4498, 610, 10, 69.32, 2.48, 'No Stock' , '2016-06-24') +,(4499, 601, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 602, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 603, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4500, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4500, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4500, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 618, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4502, 603, 2 , 27.21, 1.12, 'No Stock' , '2016-07-27') +,(4502, 605, 9 , 39.93, 3.2 , 'On Order' , '2016-11-21') +,(4503, 615, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 611, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 612, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4504, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4505, 612, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 609, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 601, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4506, 602, 7 , 88.03, 1.0 , 'On Order' , '2016-09-23') +,(4506, 603, 9 , 66.78, 1.18, 'Allocated', '2017-02-03') +,(4506, 606, 10, 85.37, 2.21, 'Allocated', '2016-10-03') +,(4506, 609, 9 , 84.3 , 4.06, 'Allocated', '2016-12-08') +,(4507, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4508, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4509, 611, 2 , 99.24, 8.51, 'Allocated', '2016-08-12') +,(4509, 612, 8 , 2.41 , 3.81, 'On Order' , '2016-08-30') +,(4510, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4511, 610, 3 , 73.48, 8.4 , 'Allocated', '2016-12-06') +,(4511, 611, 4 , 7.29 , 6.91, 'Allocated', '2016-12-23') +,(4511, 616, 5 , 26.16, 6.26, 'On Order' , '2016-12-09') +,(4512, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4513, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4514, 605, 6 , 86.17, 7.08, 'No Stock' , '2017-01-25') +,(4514, 610, 6 , 71.51, 6.3 , 'No Stock' , '2017-01-23') +,(4515, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4516, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4517, 604, 10, 55.76, 7.34, 'Allocated', '2016-10-23') +,(4517, 619, 2 , 1.09 , 7.07, 'Allocated', '2016-08-19') +,(4518, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4519, 609, 9 , 61.39, 7.83, 'On Order' , '2016-07-01') +,(4520, 619, 9 , 72.61, 9.55, 'No Stock' , '2016-10-08') +,(4521, 610, 10, 19.38, 3.54, 'Allocated', '2016-12-08') +,(4521, 615, 8 , 54.35, 7.77, 'No Stock' , '2017-01-31') +,(4522, 602, 9 , 68.98, 6.79, 'No Stock' , '2016-11-28') +,(4523, 606, 9 , 79.86, 1.63, 'No Stock' , '2016-05-25') +,(4524, 602, 9 , 91.58, 3.46, 'On Order' , '2017-03-12') +,(4525, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4526, 603, 9 , 56.56, 7.64, 'On Order' , '2016-10-14') +,(4526, 604, 4 , 80.67, 2.83, 'No Stock' , '2016-07-29') +,(4526, 610, 5 , 88.8 , 2.86, 'On Order' , '2017-02-25') +,(4527, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4528, 605, 4 , 73.64, 8.81, 'Allocated', '2017-01-26') +,(4528, 609, 4 , 64.56, 4.09, 'On Order' , '2016-10-03') +,(4529, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4530, 602, 9 , 70.97, 4.73, 'On Order' , '2016-12-07') +,(4531, 606, 10, 26.53, 2.83, 'No Stock' , '2016-03-25') +,(4531, 615, 5 , 79.05, 6.82, 'Allocated', '2016-08-04') +,(4531, 619, 4 , 36.14, 7.09, 'No Stock' , '2016-03-26') +,(4532, 605, 5 , 6.28 , 9.94, 'No Stock' , '2017-03-13') +,(4532, 610, 8 , 17.25, 3.68, 'Allocated', '2016-05-28') +,(4533, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4534, 606, 8 , 60.95, 9.33, 'Allocated', '2016-07-15') +,(4534, 607, 10, 49.84, 8.32, 'No Stock' , '2016-04-24') +,(4535, 610, 6 , 17.67, 1.81, 'On Order' , '2017-03-01') +,(4535, 619, 3 , 88.0 , 3.12, 'Allocated', '2016-07-11') +,(4536, 615, 5 , 88.08, 4.93, 'Allocated', '2016-12-04') +,(4537, 611, 2 , 14.77, 4.04, 'No Stock' , '2016-03-25') +,(4538, 603, 6 , 3.51 , 4.54, 'Allocated', '2016-04-21') +,(4539, 603, 7 , 6.58 , 4.8 , 'Allocated', '2016-05-14') +,(4540, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4541, 603, 5 , 37.47, 2.89, 'On Order' , '2016-04-07') +,(4541, 607, 4 , 35.17, 5.44, 'No Stock' , '2017-01-07') +,(4541, 615, 2 , 83.62, 4.01, 'Allocated', '2016-11-22') +,(4542, 605, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 601, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 603, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4543, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4544, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4545, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 604, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4547, 606, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 602, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 603, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4548, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4549, 605, 9 , 24.12, 7.26, 'No Stock' , '2016-08-22') +,(4549, 606, 7 , 6.19 , 4.68, 'Allocated', '2016-09-02') +,(4550, 609, 8 , 49.04, 7.62, 'On Order' , '2016-06-10') +,(4550, 610, 10, 92.51, 4.84, 'No Stock' , '2017-02-24') +,(4551, 601, 3 , 85.1 , 2.45, 'Allocated', '2016-07-08') +,(4551, 602, 3 , 69.43, 1.31, 'No Stock' , '2017-03-15') +,(4551, 610, 1 , 19.38, 8.43, 'No Stock' , '2016-11-09') +,(4552, 601, 2 , 91.69, 8.12, 'On Order' , '2016-06-03') +,(4552, 613, 3 , 41.15, 6.38, 'No Stock' , '2016-04-11') +,(4553, 603, 1 , 5.22 , 8.43, 'On Order' , '2016-10-28') +,(4554, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4555, 607, 6 , 77.16, 3.07, 'No Stock' , '2016-04-29') +,(4555, 612, 9 , 81.31, 9.81, 'On Order' , '2017-01-24') +,(4556, 615, 10, 65.81, 7.25, 'Allocated', '2016-11-07') +,(4557, 603, 1 , 5.01 , 4.57, 'No Stock' , '2016-09-05') +,(4557, 606, 3 , 29.35, 8.67, 'On Order' , '2016-09-14') +,(4558, 601, 3 , 29.62, 7.16, 'No Stock' , '2016-11-06') +,(4559, 620, 2 , 87.83, 7.93, 'On Order' , '2016-11-09') +,(4560, 610, 7 , 9.51 , 8.01, 'On Order' , '2016-08-22') +,(4561, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4562, 610, 9 , 15.1 , 6.8 , 'Allocated', '2016-08-27') +,(4562, 611, 3 , 71.09, 1.26, 'No Stock' , '2016-07-12') +,(4563, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4564, 602, 2 , 6.68 , 6.29, 'Allocated', '2016-03-19') +,(4565, 603, 7 , 81.01, 2.82, 'Allocated', '2017-03-06') +,(4565, 606, 8 , 99.68, 6.28, 'No Stock' , '2016-04-27') +,(4566, 614, 7 , 57.79, 4.48, 'No Stock' , '2016-11-02') +,(4567, 604, 7 , 94.42, 5.46, 'No Stock' , '2016-05-18') +,(4567, 605, 1 , 61.75, 1.31, 'Allocated', '2016-04-14') +,(4567, 608, 10, 25.99, 4.85, 'On Order' , '2016-05-01') +,(4567, 620, 9 , 62.17, 4.66, 'Allocated', '2016-06-11') +,(4568, 606, 8 , 66.92, 1.1 , 'Allocated', '2016-10-02') +,(4568, 607, 10, 95.6 , 9.17, 'On Order' , '2016-05-04') +,(4568, 608, 6 , 81.57, 6.24, 'No Stock' , '2017-01-24') +,(4569, 601, 10, 96.56, 6.33, 'Allocated', '2016-07-22') +,(4570, 610, 6 , 98.15, 2.57, 'No Stock' , '2016-06-28') +,(4571, 604, 8 , 5.15 , 2.51, 'No Stock' , '2016-07-11') +,(4572, 603, 2 , 59.21, 2.46, 'Allocated', '2016-11-18') +,(4573, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4574, 615, 3 , 14.81, 9.61, 'On Order' , '2016-05-04') +,(4575, 608, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 611, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 615, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4576, 607, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 608, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 610, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4577, 604, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 603, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 601, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4578, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 602, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 603, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4579, 615, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 616, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 620, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4580, 601, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 603, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 605, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 609, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4581, 607, 8 , 42.4 , 9.73, 'On Order' , '2016-06-04') +,(4581, 610, 9 , 79.73, 3.87, 'On Order' , '2016-04-20') +,(4581, 611, 5 , 78.01, 3.65, 'On Order' , '2016-03-17') +,(4581, 616, 5 , 50.56, 5.24, 'No Stock' , '2016-07-06') +,(4582, 609, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 607, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 606, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4583, 604, 9 , 19.92, 6.51, 'Allocated', '2016-04-13') +,(4583, 610, 1 , 19.4 , 8.3 , 'On Order' , '2016-12-08') +,(4584, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4585, 602, 2 , 90.57, 2.52, 'Allocated', '2016-05-22') +,(4585, 610, 10, 44.26, 3.84, 'On Order' , '2016-12-27') +,(4586, 604, 2 , 56.61, 9.64, 'Allocated', '2017-02-23') +,(4586, 612, 7 , 24.24, 7.68, 'On Order' , '2016-04-04') +,(4587, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4588, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 601, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 602, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4589, 601, 5 , 52.25, 4.47, 'Allocated', '2016-07-02') +,(4589, 603, 9 , 72.27, 4.97, 'On Order' , '2016-04-03') +,(4590, 610, 3 , 46.2 , 6.71, 'Allocated', '2016-12-16') +,(4590, 615, 5 , 52.0 , 5.26, 'On Order' , '2016-06-01') +,(4591, 601, 1 , 96.52, 2.39, 'No Stock' , '2017-01-16') +,(4591, 605, 8 , 19.56, 9.68, 'On Order' , '2016-09-15') +,(4592, 609, 10, 30.76, 3.2 , 'No Stock' , '2016-05-02') +,(4592, 619, 1 , 48.47, 6.13, 'On Order' , '2016-07-19') +,(4593, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4595, 605, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 601, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 602, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4596, 605, 6 , 95.17, 7.53, 'On Order' , '2016-09-11') +,(4596, 609, 10, 82.11, 4.38, 'No Stock' , '2016-11-17') +,(4597, 608, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 605, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 601, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4598, 603, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 608, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 610, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4599, 603, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 607, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 609, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4600, 611, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 615, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 612, 5 , 22.93, 8.87, 'Allocated', '2016-06-16'); diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/logback.xml b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/logback.xml new file mode 100644 index 0000000..12fa9be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/logback.xml @@ -0,0 +1,108 @@ + + + + + + + + + ${LOG_PATTERN} + + + + + ${APP_LOG_ROOT}/ExceptionLogs/Error.log + + ${LOG_PATTERN} + + + ${APP_LOG_ROOT}/ExceptionLogs/Error-%d{yyyy-MM-dd}.%i.log + 1 + 10 + + + 10MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/messages.properties b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/messages.properties new file mode 100644 index 0000000..b015c87 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/messages.properties @@ -0,0 +1,5 @@ + +email.notempty=Please provide valid email id. +email.valid=Email should be valid +email.regex=Enter a valid email +name.minsize=Name should have minimum 3 characters diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/note.txt b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/note.txt new file mode 100644 index 0000000..dd9fbe6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/note.txt @@ -0,0 +1,57 @@ +HEADER-LINE FORM : + +GET: http://localhost:9119/api/teacher +GET: http://localhost:9119/api/teacher/{id} +PUT: http://localhost:9119/api/teacher/{id} +DELETE: http://localhost:9119/api/teacher/{id} : NEED TO MODIFY THE INCORRECT ID INPUT ERROR HANDLING +POST: http://localhost:9119/api/teacher +===EX1=== +{ + "name": "niladri", + "email": "sen.niladri6@gmail.com", + "phoneNumber": 6291, + "salary": 1000.0, + "students": [{ + "name": "paku", + "depertment": "CSE", + "rollNumber": 108 + }] +} +===EX2===: +{ + "name": "sandipan", + "email": "sandy@gmail.com", + "phoneNumber": 9038, + "salary": 2000.0, + "students": [ + { + "name": "sahil", + "depertment": "CSE", + "rollNumber": 111 + }, + { + "name": "tarun", + "depertment": "CSE", + "rollNumber": 121 + } + ] +} + +===== 6.11.36 +user.java class code changed +@Getter @Setter private List role; +TokenUtil class code change + +===== 9.11.20 +1.8 +=== SWAGGER UI ==== +http://localhost:9119/swagger-ui.html + +========= +GIT HUB COMMAND +========= +$ git commit -m "your mesage" +$ git push origin main +$ git status + +$ git push origin main diff --git a/pro103ab-back-b/authsec_springboot/backend/src/main/resources/schema.sql b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/schema.sql new file mode 100644 index 0000000..573e44a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/src/main/resources/schema.sql @@ -0,0 +1,303 @@ +/** + Model : NorthWind +**/ + +DROP SCHEMA IF EXISTS northwind; + +CREATE SCHEMA northwind; +USE northwind; + +/* Table: user (Application Users) */ +CREATE TABLE user ( + user_id NVARCHAR(20) NOT NULL, + password NVARCHAR(255) NOT NULL, + first_name NVARCHAR(50) , + last_name NVARCHAR(50) , + email NVARCHAR(70) , + security_provider_id INT , + default_customer_id INT , + company NVARCHAR(50) , + phone NVARCHAR(20) , + address1 NVARCHAR(100), + address2 NVARCHAR(100), + country NVARCHAR(20) , + postal NVARCHAR(20) , + role NVARCHAR(20) , + other_roles NVARCHAR(80) , + is_active TINYINT , + is_blocked TINYINT , + secret_question NVARCHAR(100), + secret_answer NVARCHAR(100), + enable_beta_testing TINYINT, + enable_renewal TINYINT, + CONSTRAINT user_id PRIMARY KEY(user_id) +); + +/* Table: customers */ +CREATE TABLE customers ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + company VARCHAR(50) , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: employees */ +CREATE TABLE employees ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + avatar VARCHAR(250) , + job_title VARCHAR(50) , + department VARCHAR(50) , + manager_id INT , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: orders */ +CREATE TABLE orders ( + id INT NOT NULL, + employee_id INT , + customer_id INT , + order_date DATETIME , + shipped_date DATETIME , + ship_name VARCHAR(50) , + ship_address1 VARCHAR(150) , + ship_address2 VARCHAR(150) , + ship_city VARCHAR(50) , + ship_state VARCHAR(50) , + ship_postal_code VARCHAR(50) , + ship_country VARCHAR(50) , + shipping_fee DECIMAL(19,4) NULL DEFAULT '0.0000', + payment_type VARCHAR(50) , + paid_date DATETIME , + order_status VARCHAR(25), + PRIMARY KEY (id) +); + +/* Table: order_details */ +CREATE TABLE order_items ( + order_id INT NOT NULL, + product_id INT , + quantity DECIMAL(18,4) NOT NULL DEFAULT '0.0000', + unit_price DECIMAL(19,4) NULL DEFAULT '0.0000', + discount DECIMAL(19,4) NULL DEFAULT '0.0000', + order_item_status VARCHAR(25), + date_allocated DATETIME , + PRIMARY KEY (order_id, product_id) +); + +/* Table: products */ +CREATE TABLE products ( + id INT NOT NULL, + product_code VARCHAR(25) , + product_name VARCHAR(50) , + description VARCHAR(250), + standard_cost DECIMAL(19,4) NULL DEFAULT '0.0000', + list_price DECIMAL(19,4) NOT NULL DEFAULT '0.0000', + target_level INT , + reorder_level INT , + minimum_reorder_quantity INT , + quantity_per_unit VARCHAR(50) , + discontinued TINYINT NOT NULL DEFAULT '0', + category VARCHAR(50), + PRIMARY KEY (id) +); + + +/* Foreign Key: orders */ +ALTER TABLE orders ADD CONSTRAINT fk_orders__customers FOREIGN KEY (customer_id) REFERENCES customers(id); +ALTER TABLE orders ADD CONSTRAINT fk_orders__employees FOREIGN KEY (employee_id) REFERENCES employees(id); +/* Foreign Key: order_items */ +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__orders FOREIGN KEY (order_id) REFERENCES orders(id); +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__products FOREIGN KEY (product_id) REFERENCES products(id); + +/* Views */ +CREATE OR REPLACE VIEW order_info AS +select o.id as order_id + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , o.customer_id + , o.employee_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone customer_phone + , c.email customer_email + , c.company as customer_company + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department employee_department + , e.job_title employee_job_title + From orders o + , employees e + , customers c + where o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW order_details AS +select oi.order_id + , oi.product_id + , oi.quantity + , oi.unit_price + , oi.discount + , oi.date_allocated + , oi.order_item_status + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , p.product_code + , p.product_name + , p.category + , p.description + , p.list_price + , o.customer_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone as customer_phone + , c.email as customer_email + , c.company as customer_company + , o.employee_id + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department as employee_department + , e.job_title as employee_job_title + From orders o + , products p + , order_items oi + , employees e + , customers c + where oi.order_id = o.id + and oi.product_id = p.id + and o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW customer_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.customer_id + , c.first_name customer_first_name, c.last_name customer_last_name, c.phone customer_phone, c.email customer_email, c.company + from orders o,customers c + where o.customer_id = c.id; + +CREATE OR REPLACE VIEW employee_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.employee_id + , e.first_name employee_first_name, e.last_name employee_last_name, e.email employee_email, e.department + from orders o,employees e + where o.customer_id = e.id; + + + /* REAL_NET */ + CREATE TABLE RN_INSTRUCTOR ( + ID VARCHAR(20) NOT NULL AUTO_INCREMENT, + FIRST_NAME VARCHAR(20) NOT NULL, + LAST_NAME VARCHAR(20) NOT NULL, + EMAIL VARCHAR(20) NOT NULL, + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + PRIMARY KEY (id) + ); + + /*==== EXTENSION FIELD ===*/ + CREATE TABLE RN_EXT_FIELD_T ( + ID int(11) NOT NULL AUTO_INCREMENT, + TYPE VARCHAR(20), + DATA_TYPE VARCHAR(20), + FIELD_NAME VARCHAR(20), + MAPPING VARCHAR(20), + FORM_CODE VARCHAR(20), + IS_ACTIVE BOOLEAN, + ACCOUNT_ID VARCHAR(20), + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + CREATED_BY VARCHAR(20), + UPDATED_BY VARCHAR(20), + PRIMARY KEY (ID) +); + +/*========= lookup ======== +CREATE TABLE `rn_lookup_values_t` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LOOKUP_CODE` longtext, + `MEANING` longtext, + `DESCRIPTION` longtext, + `LOOKUP_TYPE` longtext, + `ACTIVE_START_DATE` datetime DEFAULT NULL, + `ACTIVE_END_DATE` datetime DEFAULT NULL, + `ENABLED_FLAG` longtext, + `CREATED_BY` int(11) DEFAULT NULL, + `CREATION_DATE` datetime DEFAULT NULL, + `LAST_UPDATED_BY` int(11) DEFAULT NULL, + `LAST_UPDATE_DATE` datetime DEFAULT NULL + PRIMARY KEY (`ID`) +); */ + + + +/*========= LOGGING ======== + +DROP TABLE logging_event_exception IF EXISTS; +DROP TABLE logging_event_property IF EXISTS; +DROP TABLE logging_event IF EXISTS; + +CREATE TABLE logging_event ( + timestmp BIGINT NOT NULL, + formatted_message LONGVARCHAR NOT NULL, + logger_name VARCHAR(256) NOT NULL, + level_string VARCHAR(256) NOT NULL, + thread_name VARCHAR(256), + reference_flag SMALLINT, + arg0 VARCHAR(256), + arg1 VARCHAR(256), + arg2 VARCHAR(256), + arg3 VARCHAR(256), + caller_filename VARCHAR(256), + caller_class VARCHAR(256), + caller_method VARCHAR(256), + caller_line CHAR(4), + event_id IDENTITY NOT NULL); + + +CREATE TABLE logging_event_property ( + event_id BIGINT NOT NULL, + mapped_key VARCHAR(254) NOT NULL, + mapped_value LONGVARCHAR, + PRIMARY KEY(event_id, mapped_key), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); + +CREATE TABLE logging_event_exception ( + event_id BIGINT NOT NULL, + i SMALLINT NOT NULL, + trace_line VARCHAR(256) NOT NULL, + PRIMARY KEY(event_id, i), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); */ \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/MANIFEST.MF b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/MANIFEST.MF new file mode 100644 index 0000000..3281468 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/MANIFEST.MF @@ -0,0 +1,6 @@ +Manifest-Version: 1.0 +Build-Jdk-Spec: 17 +Implementation-Title: REAL IT SOLUTIONS +Implementation-Version: 1.0.0 +Created-By: Maven Integration for Eclipse + diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.properties b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.properties new file mode 100644 index 0000000..793d6b3 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.properties @@ -0,0 +1,7 @@ +#Generated by Maven Integration for Eclipse +#Wed Jan 03 10:37:20 IST 2024 +m2e.projectLocation=/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend +m2e.projectName=app +groupId=com.realnet +artifactId=app +version=1.0.0 diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.xml b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.xml new file mode 100644 index 0000000..3594c2c --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/META-INF/maven/com.realnet/app/pom.xml @@ -0,0 +1,550 @@ + + 4.0.0 + com.realnet + app + jar + 1.0.0 + REAL IT SOLUTIONS + + 2.7.0 + UTF-8 + UTF-8 + 1.8 + + + org.springframework.boot + spring-boot-starter-parent + 2.2.5.RELEASE + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + + + org.springframework.boot + spring-boot-starter-mail + + + org.springframework.boot + spring-boot-starter-web + + + + org.springframework.boot + spring-boot-starter-aop + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-actuator + + + + io.springfox + springfox-swagger2 + 2.9.2 + + + io.swagger + swagger-annotations + + + io.swagger + swagger-models + + + + + org.apache.commons + commons-lang3 + 3.12.0 + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + com.google.code.gson + gson + 2.8.5 + + + io.swagger + swagger-annotations + 1.5.22 + + + io.swagger + swagger-models + 1.5.22 + + + io.springfox + springfox-swagger-ui + 2.9.2 + + + + org.apache.pdfbox + pdfbox + 2.0.29 + + + + + + + + + + + mysql + mysql-connector-java + 8.0.28 + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-starter-validation + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + org.apache.poi + poi-ooxml + 3.8-beta4 + + + org.apache.poi + poi-scratchpad + 3.9 + + + + + + org.apache.poi + poi + 4.1.2 + + + org.apache.poi + poi-ooxml + 4.1.2 + + + + + + org.springframework.boot + spring-boot-starter-jdbc + + + org.postgresql + postgresql + runtime + + + org.xerial + sqlite-jdbc + 3.25.2 + + + com.microsoft.sqlserver + mssql-jdbc + runtime + + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework + spring-messaging + + + + org.springframework.boot + spring-boot-starter-cache + + + com.github.ben-manes.caffeine + caffeine + + + + com.h2database + h2 + runtime + + + org.slf4j + slf4j-api + + + + + org.springframework.security.oauth.boot + spring-security-oauth2-autoconfigure + 2.3.3.RELEASE + + + + org.springframework.security + spring-security-oauth2-client + + + org.springframework.social + spring-social-google + 1.0.0.RELEASE + + + org.springframework.social + spring-social-linkedin + 1.0.2.RELEASE + + + + + io.jsonwebtoken + jjwt + 0.9.0 + + + com.google.guava + guava + 23.5-jre + + + joda-time + joda-time + 2.9.9 + + + + + + + + com.fasterxml.jackson.core + jackson-core + 2.12.1 + + + com.fasterxml.jackson.datatype + jackson-datatype-jsr310 + + + org.modelmapper + modelmapper + 2.3.0 + + + org.codehaus.jackson + jackson-mapper-asl + 1.9.13 + + + commons-io + commons-io + 2.7 + + + + net.lingala.zip4j + zip4j + 2.6.1 + + + org.json + json + 20171018 + + + org.projectlombok + lombok + 1.18.20 + provided + + + javax.xml.bind + jaxb-api + 2.3.0 + + + org.springframework.boot + spring-boot-devtools + + + + org.apache.httpcomponents + httpclient + 4.5.13 + + + + + org.apache.clerezza.ext + org.json.simple + 0.4 + + + commons-codec + commons-codec + 1.10 + + + org.springframework.boot + spring-boot-starter-webflux + + + + + org.apache.poi + poi + 4.1.2 + + + + org.apache.poi + ooxml-schemas + 1.4 + + + + org.json + json + 20201115 + + + com.jcraft + jsch + 0.1.55 + + + org.json + json + 20201115 + + + + org.json + json + 20201115 + + + + com.twilio.sdk + twilio + 8.18.0 + + + + org.xhtmlrenderer + flying-saucer-pdf + 9.1.22 + + + + + com.lowagie + itext + 2.1.7 + + + + + + org.seleniumhq.selenium + selenium-java + 3.141.59 + + + + + com.itextpdf + itextpdf + 5.5.13.2 + + + + + org.postgresql + postgresql + 42.2.24 + + + + + org.mariadb.jdbc + mariadb-java-client + 3.1.2 + + + + + com.ibm.db2 + jcc + 11.5.5.0 + + + + + org.mongodb + mongo-java-driver + 3.12.12 + + + + + redis.clients + jedis + 3.7.0 + + + + + + + + + + org.firebirdsql.jdbc + jaybird + 4.0.0.java11 + + + + + + + com.orientechnologies + orientdb-core + 3.2.19 + + + + + com.orientechnologies + orientdb-jdbc + 3.2.19 + + + + + software.amazon.awssdk + dynamodb + 2.17.102 + + + + + com.couchbase.client + java-client + 3.1.5 + + + io.projectreactor + reactor-core + 3.4.13 + + + + + org.neo4j + neo4j-jdbc-bolt + 5.0.0 + + + + + com.paytm.pg + paytm-checksum + 1.2.1 + + + + com.razorpay + razorpay-java + 1.4.4 + + + + + org.springframework + spring-test + + + + + org.apache.pdfbox + pdfbox + 2.0.28 + + + + + org.apache.xmlgraphics + fop + 2.6 + + + + org.apache.commons + commons-csv + 1.4 + + + + + com.googlecode.json-simple + json-simple + 1.1.1 + + + + com.opencsv + opencsv + 5.5 + + + + diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/MyprojectUI_view.properties b/pro103ab-back-b/authsec_springboot/backend/target/classes/MyprojectUI_view.properties new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/application.properties b/pro103ab-back-b/authsec_springboot/backend/target/classes/application.properties new file mode 100644 index 0000000..622cfdf --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/application.properties @@ -0,0 +1,113 @@ +# File is used by sprigboot +server.contextPath=/* +server.port=9292 +spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/webui/ + +spring.banner.location=classpath:banner_txt.txt + +#Temporary disable security to enable it remove this +#security.ignored=/** + +springfox.documentation.swagger.v2.path=/api-docs +spring.jackson.date-format=yyyy-MM-dd + + + +System.Net.ServicePointManager.Expect100Continue = false; + + #spring.jpa.hibernate.ddl-auto=none +#spring.jpa.hibernate.ddl-auto=update +#spring.datasource.continue-on-error=false + +# **** MY SQL DATABASE CONNECTION **** + +spring.datasource.url=jdbc:mysql://realnet.cdtynkxfiu2h.ap-south-1.rds.amazonaws.com:3306/realnet_CNSBENEW?createDatabaseIfNotExist=true +spring.datasource.username=cnsdev +spring.datasource.password=cnsdev1234 + +spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5InnoDBDialect + + +#spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.properties.hibernate.proc.param_null_passing=true + +# **********paytm dependency ****** +razorpay.api.key=rzp_test_xVnrBUjJWTEH0r +razorpay.api.secret=evTXkIFcgpVtiLa1P7M7CIox + +#***** MAIL SENDER +spring.mail.host=smtp.gmail.com +spring.mail.username=realitmailsender@gmail.com +spring.mail.password=epnmhzsccotnyozf +spring.mail.port=587 +#spring.mail.properties.mail.smtp.auth=true +spring.mail.properties.mail.smtp.starttls.enable=true +spring.mail.properties.mail.smtp.starttls.required=true + +# JACKSON +spring.jackson.serialization.FAIL_ON_EMPTY_BEANS=false + + +spring.mail.properties.mail.smtp.auth = true +spring.mail.properties.mail.smtp.socketFactory.port = 465 +spring.mail.properties.mail.smtp.socketFactory.class = javax.net.ssl.SSLSocketFactory +spring.mail.properties.mail.smtp.socketFactory.fallback = false + +#******* MULTIPART RESOLVER +spring.servlet.multipart.enabled=true +spring.servlet.multipart.max-file-size=100MB +spring.servlet.multipart.max-request-size=100MB + +#***************OAUTH2 SOCIAL LOGIN ********* +# Social login provider props +spring.security.oauth2.client.registration.google.clientId=437023664181-0lm0ipgip3qbhga4nd7o4128jv4g2nv9.apps.googleusercontent.com +spring.security.oauth2.client.registration.google.clientSecret=I1HPyUqdJ9UONu45W1_wwfww +spring.security.oauth2.client.registration.google.scope=profile, email + + +spring.security.oauth2.client.registration.linkedin.clientId= +spring.security.oauth2.client.registration.linkedin.clientSecret= +spring.security.oauth2.client.registration.linkedin.client-authentication-method=post +spring.security.oauth2.client.registration.linkedin.authorization-grant-type=authorization_code +spring.security.oauth2.client.registration.linkedin.scope=r_liteprofile, r_emailaddress +spring.security.oauth2.client.registration.linkedin.redirect-uri={baseUrl}/login/oauth2/code/{registrationId} +spring.security.oauth2.client.registration.linkedin.client-name=Linkedin +spring.security.oauth2.client.registration.linkedin.provider=linkedin +spring.security.oauth2.client.provider.linkedin.authorization-uri=https://www.linkedin.com/oauth/v2/authorization +spring.security.oauth2.client.provider.linkedin.token-uri=https://www.linkedin.com/oauth/v2/accessToken +spring.security.oauth2.client.provider.linkedin.user-info-uri=https://api.linkedin.com/v2/me +spring.security.oauth2.client.provider.linkedin.user-name-attribute=id +linkedin.email-address-uri=https://api.linkedin.com/v2/emailAddress?q=members&projection=(elements*(handle~)) +app.auth.tokenSecret=926D96C90030DD58429D2751AC1BDBBC +app.auth.tokenExpirationMsec=864000000 + # After successfully authenticating with the OAuth2 Provider, + # we'll be generating an auth token for the user and sending the token to the + # redirectUri mentioned by the frontend client in the /oauth2/authorization request. + # We're not using cookies because they won't work well in mobile clients. +app.oauth2.authorizedRedirectUris=http://localhost:8081/oauth2/redirect,myandroidapp://oauth2/redirect,myiosapp://oauth2/redirect + +#projectPath=G:/cnsbetawithcardiant/springboot + + + +#projectPath=D:/Office Project/BACKUP PROJECT/Angular-SpringBoot-REST-JWT-master +#ANGULAR PROJECT PATH +#angularProjectPath=G:/cnsbetawithcardiant/springboot/frontend/angular-ui +# +#spring.cache.cache-names=instruments, directory +#spring.cache.caffeine.spec=maximumSize=500, expireAfterAccess=30s +#projectPath=/data +projectPath=/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend +angularProjectPath=/Users/Gaurav Kumar/Desktop/Workspace 2/app_builder/build_backend/cns-portal/code-extractor/builders/11096/index/demot1/demot1-test2-b/authsec_springboot/backend/webui +#projectPath=G:/foldername/backend +#angularProjectPath=G:/foldername/backend/webui +#imagePath=/frontend/angular-ui/src/assets/images/ +#server.ssl.key-alias=selfsigned +#server.ssl.key-store-type=JKS +#server.ssl.key-store-password=changeit +#server.ssl.key-store=classpath:keystore.jks + diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/banner_txt.txt b/pro103ab-back-b/authsec_springboot/backend/target/classes/banner_txt.txt new file mode 100644 index 0000000..5c9c817 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/banner_txt.txt @@ -0,0 +1,11 @@ +******************************************************************* +******************************************************************* + __ _ ____ __ __ __ + / \ \ | |__****** / ___| **** ****_ \ \ \ \ \ \ + / / \ \ | '_ \ / _ \ \___ \| | | | '__|/ _ \ \ \ \ \ \ \ + \ \ / / | |_) | __/ ___) | |_| | | | __/ / / / / / / + \ /_/ |_.__/ \___| |____/ \__,_|_| \___| /_/ /_/ /_/ + *** *** ***** +******************************************************************* +::SPRING BOOT:: CNS Version::v1.1.0 RELEASE +******************************************************************* \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class new file mode 100644 index 0000000..a20a769 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalHistory_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class new file mode 100644 index 0000000..3657f0a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Controllers/ApprovalQueue_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalNote_SO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalNote_SO.class new file mode 100644 index 0000000..71d99f1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalNote_SO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalQueue_SO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalQueue_SO.class new file mode 100644 index 0000000..306a7a3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ApprovalQueue_SO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/BillingPeriodsResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/BillingPeriodsResponse.class new file mode 100644 index 0000000..d713a11 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/BillingPeriodsResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class new file mode 100644 index 0000000..528f52a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceOrderDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class new file mode 100644 index 0000000..f36dfac Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Dto/ServiceWithDiscount.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/ApprovalHistory_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/ApprovalHistory_t.class new file mode 100644 index 0000000..77d5a23 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/ApprovalHistory_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class new file mode 100644 index 0000000..7d82f5b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/BillingPeriods_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class new file mode 100644 index 0000000..d16bff3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Entitys/CustomerRates_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class new file mode 100644 index 0000000..e865699 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Entity/BillingJobEntity.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class new file mode 100644 index 0000000..1efc545 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Job/Repository/BillingJobRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class new file mode 100644 index 0000000..f8bbec6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalHistory_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.class new file mode 100644 index 0000000..d2eee5c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalQueue_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class new file mode 100644 index 0000000..7ae75f6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Repositorys/ApprovalReturnHistory_Repo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class new file mode 100644 index 0000000..6e0fad4 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalHistory_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalQueueService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalQueueService.class new file mode 100644 index 0000000..91a7ddc Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Billing/Services/ApprovalQueueService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class new file mode 100644 index 0000000..118b86d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Controller/Dashbord1Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class new file mode 100644 index 0000000..d6aa76d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord1_Line.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord_Header.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord_Header.class new file mode 100644 index 0000000..e2412fd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/Dashbord_Header.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class new file mode 100644 index 0000000..f84be9a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Entity/dashbord_Who_collumn.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.class new file mode 100644 index 0000000..5fb7d74 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/Dashboard_lineRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class new file mode 100644 index 0000000..d684f01 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Repository/HeaderRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class new file mode 100644 index 0000000..807c916 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard1/Service/HeaderService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class new file mode 100644 index 0000000..a675b30 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/ChartBuilder.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class new file mode 100644 index 0000000..2673940 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/DashboardSchedule_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class new file mode 100644 index 0000000..fce53b4 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Controllers/Dashboard_builder_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.class new file mode 100644 index 0000000..e1e407e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/DashboardSchedule_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.class new file mode 100644 index 0000000..c2d4873 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Entity/Dashboard_builder_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class new file mode 100644 index 0000000..7270bcb Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/DashboardSchedule_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class new file mode 100644 index 0000000..012a84c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Repository/Dashboard_builder_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class new file mode 100644 index 0000000..54ab5ea Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/DashboardSchedule_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.class new file mode 100644 index 0000000..b8b325d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Dashboard_builder/Services/Dashboard_builder_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class new file mode 100644 index 0000000..9c02a5b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Controllers/UploadeddocsController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class new file mode 100644 index 0000000..35e267b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/Uploadeddocs.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/who_column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/who_column.class new file mode 100644 index 0000000..cd6c65e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Entity/who_column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class new file mode 100644 index 0000000..534652b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Repository/UploadFileRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class new file mode 100644 index 0000000..7c8af71 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/FileuploadService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class new file mode 100644 index 0000000..dcd6c23 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FileUpload/Services/UploadedFileService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class new file mode 100644 index 0000000..15dff1a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Controllers/FromExtensionJson_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class new file mode 100644 index 0000000..7f0e069 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Entity/FromExtensionJson_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.class new file mode 100644 index 0000000..4bf09a5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Repository/FromExtensionJson_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class new file mode 100644 index 0000000..d280180 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/FromExtensionJson/Services/FromExtensionJson_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class new file mode 100644 index 0000000..c5385ae Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Controllers/Gaurav_testing_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.class new file mode 100644 index 0000000..5d028e5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Entity/Gaurav_testing_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.class new file mode 100644 index 0000000..92d4372 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Repository/Gaurav_testing_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.class new file mode 100644 index 0000000..3b6a0a9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Gaurav_testing/Services/Gaurav_testing_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class new file mode 100644 index 0000000..b0dc42a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/AppConfig.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class new file mode 100644 index 0000000..e201751 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Paytm/PaytmPayment.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayController.class new file mode 100644 index 0000000..677e6f2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class new file mode 100644 index 0000000..434b8a7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO$RazorpayDTOBuilder.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class new file mode 100644 index 0000000..34b1d01 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class new file mode 100644 index 0000000..9a808f7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Payment/Razorpay/RazorpayRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class new file mode 100644 index 0000000..316e173 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/RealNetApp.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class new file mode 100644 index 0000000..189a89f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/FileConverterController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class new file mode 100644 index 0000000..7aa2771 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Controllers/Rpt_builder_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Entity/Rpt_builder_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Entity/Rpt_builder_t.class new file mode 100644 index 0000000..8e0fca7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Entity/Rpt_builder_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class new file mode 100644 index 0000000..4898756 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Repository/Rpt_builder_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class new file mode 100644 index 0000000..2bd5b43 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder/Services/Rpt_builder_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class new file mode 100644 index 0000000..3592d38 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/ReportHtmlController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class new file mode 100644 index 0000000..483d34e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Controllers/Rpt_builder2_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class new file mode 100644 index 0000000..09cdfe1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Entity/Rpt_builder2_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class new file mode 100644 index 0000000..63b2340 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Repository/Rpt_builder2_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class new file mode 100644 index 0000000..02a7846 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2/Services/Rpt_builder2_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class new file mode 100644 index 0000000..af3ced6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Controllers/Rpt_builder2_lines_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class new file mode 100644 index 0000000..b5a2aac Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Entity/Rpt_builder2_lines_t.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.class new file mode 100644 index 0000000..284f79d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Repository/Rpt_builder2_lines_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class new file mode 100644 index 0000000..de44f6a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/Rpt_builder2_lines/Services/Rpt_builder2_lines_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Controller/SequenceController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Controller/SequenceController.class new file mode 100644 index 0000000..7550090 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Controller/SequenceController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class new file mode 100644 index 0000000..3bd1f8c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Entity/Sequence.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Service/SequenceService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Service/SequenceService.class new file mode 100644 index 0000000..bc31807 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/Service/SequenceService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/repo/SeqRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/repo/SeqRepo.class new file mode 100644 index 0000000..ee9d1c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/SequenceGenerator/repo/SeqRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/WhoCollumn/Who_collumn.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/WhoCollumn/Who_collumn.class new file mode 100644 index 0000000..23152ca Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/WhoCollumn/Who_collumn.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/AppConfig.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/AppConfig.class new file mode 100644 index 0000000..fa5a211 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/AppConfig.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class new file mode 100644 index 0000000..1abb6bc Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/CorsFilter.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/EmailService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/EmailService.class new file mode 100644 index 0000000..fbc7008 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/EmailService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class new file mode 100644 index 0000000..d4cbe0f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JWTConstant.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationEntryPoint.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationEntryPoint.class new file mode 100644 index 0000000..ce78d8d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationEntryPoint.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationFilter.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationFilter.class new file mode 100644 index 0000000..f5736ac Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/JwtAuthenticationFilter.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class new file mode 100644 index 0000000..312f9a3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/MessageSourceConfig.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SecurityConfig.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SecurityConfig.class new file mode 100644 index 0000000..b1c8b65 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SecurityConfig.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SwaggerConfig.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SwaggerConfig.class new file mode 100644 index 0000000..248486d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/SwaggerConfig.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/TokenProvider.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/TokenProvider.class new file mode 100644 index 0000000..52f41cf Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/config/TokenProvider.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class new file mode 100644 index 0000000..43bcd6b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Controllers/DashboardController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Dashboard.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Dashboard.class new file mode 100644 index 0000000..a42f6ac Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Dashboard.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Extension.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Extension.class new file mode 100644 index 0000000..6dcb072 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/Extension.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/who_column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/who_column.class new file mode 100644 index 0000000..282c87e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Entity/who_column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class new file mode 100644 index 0000000..bdc8c3e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Repository/DashboardRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class new file mode 100644 index 0000000..2eebca1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/dashboard_builder_authsec/Services/DashboardService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class new file mode 100644 index 0000000..d93a02b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/InvalidUserDataException.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/ResourceNotFoundException.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/ResourceNotFoundException.class new file mode 100644 index 0000000..536c221 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/ResourceNotFoundException.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class new file mode 100644 index 0000000..9bd0874 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/exceptions/StorageException.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd.zip b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd.zip new file mode 100644 index 0000000..763a988 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd.zip differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/MainController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/MainController.class new file mode 100644 index 0000000..82354c7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/MainController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class new file mode 100644 index 0000000..da2902d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_DynamicTransactionController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_ExtensionController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_ExtensionController.class new file mode 100644 index 0000000..3baaadd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_ExtensionController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class new file mode 100644 index 0000000..ec67251 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Forms_Setup_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class new file mode 100644 index 0000000..184d39d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Function_Register_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Main_Menu_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Main_Menu_Controller.class new file mode 100644 index 0000000..9968731 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Main_Menu_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class new file mode 100644 index 0000000..92eb836 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class new file mode 100644 index 0000000..c702282 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Group_Line_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class new file mode 100644 index 0000000..f73defd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller/Rn_Menu_Register_Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/LoadMenuController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/LoadMenuController.class new file mode 100644 index 0000000..4866538 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/LoadMenuController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class new file mode 100644 index 0000000..bc58be9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/controller1/MenuController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class new file mode 100644 index 0000000..f772784 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/DropDownDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class new file mode 100644 index 0000000..5d68e8e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Error.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class new file mode 100644 index 0000000..13dab1c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ErrorPojo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class new file mode 100644 index 0000000..3e90af5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ModuleCopyDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Modulemini.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Modulemini.class new file mode 100644 index 0000000..c728307 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Modulemini.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class new file mode 100644 index 0000000..187ff07 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/ProjectMini.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class new file mode 100644 index 0000000..2ad35e1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_AuditEntity.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Dynamic_Transaction.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Dynamic_Transaction.class new file mode 100644 index 0000000..b12f561 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Dynamic_Transaction.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class new file mode 100644 index 0000000..e81024f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Ext_Fields.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class new file mode 100644 index 0000000..05a8895 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_ExtensionEntity.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_FlexEntity.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_FlexEntity.class new file mode 100644 index 0000000..da43d34 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_FlexEntity.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class new file mode 100644 index 0000000..20d815f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Component_Setup.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class new file mode 100644 index 0000000..8d48615 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Forms_Setup.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Function_Register.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Function_Register.class new file mode 100644 index 0000000..23b5a0a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Function_Register.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Instance_Type.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Instance_Type.class new file mode 100644 index 0000000..9e8d1a2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Instance_Type.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Lookup_Values.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Lookup_Values.class new file mode 100644 index 0000000..1ab580b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Lookup_Values.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class new file mode 100644 index 0000000..9409118 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Main_Menu.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Header.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Header.class new file mode 100644 index 0000000..9ce0a52 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Header.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Line.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Line.class new file mode 100644 index 0000000..f9e1a30 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Group_Line.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class new file mode 100644 index 0000000..6125a20 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Menu_Register.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class new file mode 100644 index 0000000..7f24d1e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Sub_Menu.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class new file mode 100644 index 0000000..fb0858b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_AccId_Column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class new file mode 100644 index 0000000..abdfd11 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Rn_Who_Columns.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SingleSerise.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SingleSerise.class new file mode 100644 index 0000000..f16f4f9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SingleSerise.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Success.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Success.class new file mode 100644 index 0000000..80cc292 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Success.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class new file mode 100644 index 0000000..9e77572 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/SuccessPojo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Version.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Version.class new file mode 100644 index 0000000..936601b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/Version.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class new file mode 100644 index 0000000..cf1b3bc Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/WireFrameCopyDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class new file mode 100644 index 0000000..a88bc35 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity/projectCopyDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class new file mode 100644 index 0000000..c4e92b0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/ExtensionModel.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccess.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccess.class new file mode 100644 index 0000000..ae29bbc Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccess.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.class new file mode 100644 index 0000000..8e4a083 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/GrpMenuAccesscompositeKey.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MIXMENUN.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MIXMENUN.class new file mode 100644 index 0000000..d4e46d5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MIXMENUN.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class new file mode 100644 index 0000000..3fef50d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MenuDet.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenu.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenu.class new file mode 100644 index 0000000..bc7cff5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenu.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenuNew.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenuNew.class new file mode 100644 index 0000000..d926680 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/MixMenuNew.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class new file mode 100644 index 0000000..7b7e9db Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/entity1/menudet_who.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/ExtFieldRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/ExtFieldRepository.class new file mode 100644 index 0000000..caa214e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/ExtFieldRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class new file mode 100644 index 0000000..7b5fb63 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/LookUpRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class new file mode 100644 index 0000000..21ea083 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/RnGroupLineRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class new file mode 100644 index 0000000..02ef65e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_DynamicTransactionRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.class new file mode 100644 index 0000000..8994827 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Forms_Setup_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class new file mode 100644 index 0000000..1143d06 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Function_Register_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class new file mode 100644 index 0000000..5c1ae19 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_InstanceTypeRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class new file mode 100644 index 0000000..6bf95af Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_LookUpRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Main_Menu_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Main_Menu_Repository.class new file mode 100644 index 0000000..fcde68d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Main_Menu_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class new file mode 100644 index 0000000..8d979c9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Group_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Register_Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Register_Repository.class new file mode 100644 index 0000000..2bccd39 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository/Rn_Menu_Register_Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class new file mode 100644 index 0000000..dc43e56 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/GrpMenuAccessRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class new file mode 100644 index 0000000..b76418c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/repository1/MenuDetRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/CustomResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/CustomResponse.class new file mode 100644 index 0000000..7d4097d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/CustomResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/EntityResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/EntityResponse.class new file mode 100644 index 0000000..320cc64 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/EntityResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class new file mode 100644 index 0000000..33014ac Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse$ResponseStatusEnum.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse.class new file mode 100644 index 0000000..1d58038 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/OperationResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/PageResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/PageResponse.class new file mode 100644 index 0000000..e1b2926 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/PageResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class new file mode 100644 index 0000000..8cb840d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_DynamicTransactionResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class new file mode 100644 index 0000000..48b9e24 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Forms_SetupResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Function_Register_Response.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Function_Register_Response.class new file mode 100644 index 0000000..4f9c803 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Function_Register_Response.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class new file mode 100644 index 0000000..94ea540 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Main_Menu_Response.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class new file mode 100644 index 0000000..8719ffd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Group_Response.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class new file mode 100644 index 0000000..8959400 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/Rn_Menu_Register_Response.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class new file mode 100644 index 0000000..a98db78 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/response/SingleDataSeriseResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldService.class new file mode 100644 index 0000000..6b39fa3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class new file mode 100644 index 0000000..019f5c8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/ExtFieldServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class new file mode 100644 index 0000000..d94f984 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/FileStorageService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class new file mode 100644 index 0000000..9c2a3f2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiec.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class new file mode 100644 index 0000000..229e6d3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/RnGroupMenuLineServiecImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class new file mode 100644 index 0000000..6e57671 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class new file mode 100644 index 0000000..e5405fe Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_DynamicTransactionServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class new file mode 100644 index 0000000..6073262 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.class new file mode 100644 index 0000000..032358c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Forms_Setup_ServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_Service.class new file mode 100644 index 0000000..8254eb1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.class new file mode 100644 index 0000000..02c5597 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Function_Register_ServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_Service.class new file mode 100644 index 0000000..ab54aa2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.class new file mode 100644 index 0000000..7574cbe Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Main_Menu_ServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_Service.class new file mode 100644 index 0000000..eb60b8b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class new file mode 100644 index 0000000..2f2fc1d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Group_ServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class new file mode 100644 index 0000000..7f75710 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.class new file mode 100644 index 0000000..d5c9408 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service/Rn_Menu_Register_ServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class new file mode 100644 index 0000000..19aca4e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/GrpMenuAccessServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class new file mode 100644 index 0000000..8c53795 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/fnd/service1/MenuDetServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Controllers/Gauravtest1Controller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Controllers/Gauravtest1Controller.class new file mode 100644 index 0000000..51d3d84 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Controllers/Gauravtest1Controller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Extension.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Extension.class new file mode 100644 index 0000000..80ff3b7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Extension.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Gauravtest1.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Gauravtest1.class new file mode 100644 index 0000000..2759273 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/Gauravtest1.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/who_column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/who_column.class new file mode 100644 index 0000000..59ca0df Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Entity/who_column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Repository/Gauravtest1Repository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Repository/Gauravtest1Repository.class new file mode 100644 index 0000000..6470d78 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Repository/Gauravtest1Repository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Services/Gauravtest1Service.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Services/Gauravtest1Service.class new file mode 100644 index 0000000..70591e1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/gauravtesting/Services/Gauravtest1Service.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class new file mode 100644 index 0000000..c5d00bd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogEntity.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class new file mode 100644 index 0000000..ffd8409 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LogExecutionTime.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LoggingAspect.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LoggingAspect.class new file mode 100644 index 0000000..faf2f65 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/LoggingAspect.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class new file mode 100644 index 0000000..e8efc29 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/NoLogging.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/SecurityNoLogging.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/SecurityNoLogging.class new file mode 100644 index 0000000..b3320b2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging/SecurityNoLogging.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/PatternLayoutWithUserContext.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/PatternLayoutWithUserContext.class new file mode 100644 index 0000000..931fcc5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/PatternLayoutWithUserContext.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class new file mode 100644 index 0000000..67d616d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/SessionConverter.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/UserConverter.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/UserConverter.class new file mode 100644 index 0000000..92f692f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/UserConverter.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class new file mode 100644 index 0000000..4ae4176 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$1.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class new file mode 100644 index 0000000..6e827d1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$2.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$3.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$3.class new file mode 100644 index 0000000..170e363 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$3.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$4.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$4.class new file mode 100644 index 0000000..0fab926 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$4.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$5.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$5.class new file mode 100644 index 0000000..ce6f98d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$5.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class new file mode 100644 index 0000000..0a6362c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController$6.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController.class new file mode 100644 index 0000000..5fb89ab Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class new file mode 100644 index 0000000..32df87e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/controller/AppUserLogController2.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class new file mode 100644 index 0000000..3fb936e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/entity/AppUserLog.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/repository/AppUserLogginRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/repository/AppUserLogginRepository.class new file mode 100644 index 0000000..925c22d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/repository/AppUserLogginRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/service/LoggingService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/service/LoggingService.class new file mode 100644 index 0000000..27857c1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/logging1/service/LoggingService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class new file mode 100644 index 0000000..b9395fb Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Controller/Report_buildercontroller.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/ReportQueryDataDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/ReportQueryDataDTO.class new file mode 100644 index 0000000..a936dc8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/ReportQueryDataDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class new file mode 100644 index 0000000..e416d3d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Line.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class new file mode 100644 index 0000000..e87fe49 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_Who_collumn.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class new file mode 100644 index 0000000..5a71959 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Entity/Rp_builder.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class new file mode 100644 index 0000000..613985f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/ReportRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/Rp_lineRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/Rp_lineRepository.class new file mode 100644 index 0000000..20049e1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Repository/Rp_lineRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class new file mode 100644 index 0000000..e28502f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/report_builder/Service/Report_builderService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class new file mode 100644 index 0000000..7d669f0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/controller/SessionController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/AboutWork.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/AboutWork.class new file mode 100644 index 0000000..97edd43 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/AboutWork.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class new file mode 100644 index 0000000..924a457 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/SessionItem.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class new file mode 100644 index 0000000..5156927 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/entity/VersionModel.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class new file mode 100644 index 0000000..ae19e8d Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/session/response/SessionResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/ChildtestController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/ChildtestController.class new file mode 100644 index 0000000..57e5fcb Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/ChildtestController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/StudentestController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/StudentestController.class new file mode 100644 index 0000000..ca5067c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Controllers/StudentestController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Childtest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Childtest.class new file mode 100644 index 0000000..4ac1bd4 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Childtest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Extension.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Extension.class new file mode 100644 index 0000000..6a16d77 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Extension.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Studentest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Studentest.class new file mode 100644 index 0000000..6a60551 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/Studentest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/who_column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/who_column.class new file mode 100644 index 0000000..0bf7da6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Entity/who_column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/ChildtestRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/ChildtestRepository.class new file mode 100644 index 0000000..c99aa3a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/ChildtestRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/StudentestRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/StudentestRepository.class new file mode 100644 index 0000000..18d4469 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Repository/StudentestRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/ChildtestService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/ChildtestService.class new file mode 100644 index 0000000..de0adbf Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/ChildtestService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/StudentestService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/StudentestService.class new file mode 100644 index 0000000..fda57bf Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/studentt/Services/StudentestService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/CompanyDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/CompanyDto.class new file mode 100644 index 0000000..077a9ec Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/CompanyDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class new file mode 100644 index 0000000..be81fde Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Email.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class new file mode 100644 index 0000000..0bf431c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/EmailRequest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class new file mode 100644 index 0000000..6685c65 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Login.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/LoginUser.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/LoginUser.class new file mode 100644 index 0000000..4929091 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/LoginUser.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class new file mode 100644 index 0000000..378a64f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/PasswordResetRequest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class new file mode 100644 index 0000000..80812be Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Provider.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class new file mode 100644 index 0000000..6e6faa5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_AccId_Column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class new file mode 100644 index 0000000..a9f9684 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Rn_Who_Columns.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class new file mode 100644 index 0000000..1c8b7b2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Role.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/RoleUpdateDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/RoleUpdateDto.class new file mode 100644 index 0000000..0a1bcc0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/RoleUpdateDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Sys_Accounts.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Sys_Accounts.class new file mode 100644 index 0000000..4e8d191 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/Sys_Accounts.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class new file mode 100644 index 0000000..9447873 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/User.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserDto.class new file mode 100644 index 0000000..69b8b75 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class new file mode 100644 index 0000000..e99736f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userDTO/UserProfileDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class new file mode 100644 index 0000000..4bd0733 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/controller/UserListController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserImage.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserImage.class new file mode 100644 index 0000000..391f3ec Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserImage.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserList.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserList.class new file mode 100644 index 0000000..c57b067 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/entity/UserList.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class new file mode 100644 index 0000000..7ed9e22 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserImageRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class new file mode 100644 index 0000000..58b74e2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/repository/UserListRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/UserListService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/UserListService.class new file mode 100644 index 0000000..b93fc4a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/UserListService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/impl/UserListServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/impl/UserListServiceImpl.class new file mode 100644 index 0000000..31c7ecf Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/userlist/service/impl/UserListServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/RoleController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/RoleController.class new file mode 100644 index 0000000..2cbb067 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/RoleController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class new file mode 100644 index 0000000..20c81c6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller/UserController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class new file mode 100644 index 0000000..579a79e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserGrpController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserGrpController.class new file mode 100644 index 0000000..dc2d84a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppUserGrpController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class new file mode 100644 index 0000000..e3f6486 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/AppuserSessionController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/PositonAndDepartmentController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/PositonAndDepartmentController.class new file mode 100644 index 0000000..9398fb6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/PositonAndDepartmentController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/SysAccountController.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/SysAccountController.class new file mode 100644 index 0000000..077306c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/controller1/SysAccountController.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class new file mode 100644 index 0000000..769488c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/CompanyDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class new file mode 100644 index 0000000..680ef9e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/ERole.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class new file mode 100644 index 0000000..d581e1f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Email.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class new file mode 100644 index 0000000..97cdf5e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/EmailRequest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class new file mode 100644 index 0000000..676143e Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/GenericResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class new file mode 100644 index 0000000..9c7e16b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Login.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/LoginUser.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/LoginUser.class new file mode 100644 index 0000000..f84f2fd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/LoginUser.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetRequest.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetRequest.class new file mode 100644 index 0000000..449473b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetRequest.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetToken.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetToken.class new file mode 100644 index 0000000..89c4587 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/PasswordResetToken.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class new file mode 100644 index 0000000..e69ca7c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Role.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class new file mode 100644 index 0000000..f3f5953 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/RoleUpdateDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class new file mode 100644 index 0000000..a9f9041 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/Sys_Accounts.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class new file mode 100644 index 0000000..3abe1e9 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class new file mode 100644 index 0000000..f987bd8 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity/UserProfileDTO.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class new file mode 100644 index 0000000..8b169d3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class new file mode 100644 index 0000000..33d1eb4 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDepartment.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class new file mode 100644 index 0000000..479b233 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserDto.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserLoginHist.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserLoginHist.class new file mode 100644 index 0000000..9b9bb07 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserLoginHist.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlog.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlog.class new file mode 100644 index 0000000..3e251f6 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlog.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlogCompositeKey.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlogCompositeKey.class new file mode 100644 index 0000000..304e50c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPasswlogCompositeKey.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class new file mode 100644 index 0000000..947e910 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPosition.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPrinciple.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPrinciple.class new file mode 100644 index 0000000..ae6a1f0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserPrinciple.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserRole.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserRole.class new file mode 100644 index 0000000..e79e74f Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserRole.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessions.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessions.class new file mode 100644 index 0000000..9fa45c5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessions.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessionsCompositeKey.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessionsCompositeKey.class new file mode 100644 index 0000000..8254fa7 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUserSessionsCompositeKey.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class new file mode 100644 index 0000000..eeb28ef Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/AppUser_who_column.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/Registration.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/Registration.class new file mode 100644 index 0000000..baa5101 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/Registration.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class new file mode 100644 index 0000000..5e61b90 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/entity1/SignUp.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class new file mode 100644 index 0000000..fe51f39 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/AboutWorkRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class new file mode 100644 index 0000000..f4fb734 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/CompanyRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class new file mode 100644 index 0000000..7d9e808 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/RoleRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class new file mode 100644 index 0000000..6ae7959 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository/SysAccountRepo.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class new file mode 100644 index 0000000..94b9ba5 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserDepartmentRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class new file mode 100644 index 0000000..efad018 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserPositionRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class new file mode 100644 index 0000000..bcab266 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class new file mode 100644 index 0000000..824d6ee Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserRoleRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class new file mode 100644 index 0000000..4656c31 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/AppUserSessionsRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class new file mode 100644 index 0000000..36cb1bd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/repository1/passwordTokenRepository.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class new file mode 100644 index 0000000..8ac0698 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/MessageResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class new file mode 100644 index 0000000..02b0558 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/ServiceResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class new file mode 100644 index 0000000..7181d83 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserItem.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class new file mode 100644 index 0000000..3af67dd Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/response/UserResponse.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutServiceImple.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutServiceImple.class new file mode 100644 index 0000000..0f663a0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutServiceImple.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutWorkService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutWorkService.class new file mode 100644 index 0000000..f870545 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/AboutWorkService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class new file mode 100644 index 0000000..c82189c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/CompanyService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class new file mode 100644 index 0000000..b15c72c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleServiceImpl.class new file mode 100644 index 0000000..0442c7a Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service/RoleServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserRoleServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserRoleServiceImpl.class new file mode 100644 index 0000000..4e759d1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserRoleServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class new file mode 100644 index 0000000..a9758a3 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserService.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class new file mode 100644 index 0000000..9033c3b Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class new file mode 100644 index 0000000..99dc62c Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/AppUserSessionsServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class new file mode 100644 index 0000000..9534bb2 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/users/service1/PositionAndDepartmentServiceImpl.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Constant.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Constant.class new file mode 100644 index 0000000..0a04ac0 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Constant.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class new file mode 100644 index 0000000..757f363 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/Port_Constant.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant$FormType.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant$FormType.class new file mode 100644 index 0000000..b9a8ad1 Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant$FormType.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class new file mode 100644 index 0000000..3c3cefa Binary files /dev/null and b/pro103ab-back-b/authsec_springboot/backend/target/classes/com/realnet/utils/WireFrameConstant.class differ diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/data.sql b/pro103ab-back-b/authsec_springboot/backend/target/classes/data.sql new file mode 100644 index 0000000..77daec5 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/data.sql @@ -0,0 +1,2023 @@ +/* Instructor */ +insert into RN_INSTRUCTOR (ID, FIRST_NAME, LAST_NAME, EMAIL, CREATED_AT, UPDATED_AT) values + (1, 'rajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (2, 'sandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (3, 'niladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (4, 'abhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (5, 'sayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (6, 'titas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (7, 'dip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (8, 'asif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (9, 'anushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (10, 'trisha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (11, 'avijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (12, 'dona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (13, 'disha', 'maitra', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (14, 'sasa', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (15, 'vvvv', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (16, 'qqqq', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (17, 'saaaaayasndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (18, 'lllll', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (19, 'kkkkk', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (20, 'ffffff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (21, 'rajaaQdesep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (22, 'sandaaQipsan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (23, 'nilaaQadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (24, 'abQhaaishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (25, 'sayanaadeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (26, 'tiaatas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (27, 'dittp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (28, 'attsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (29, 'anutttshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (30, 'trigggsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (31, 'avijgggit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (32, 'dogggna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (33, 'rgggajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (34, 'sangggdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (35, 'nifgfladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (36, 'abhisfgfhek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (37, 'safgfgyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (38, 'titfgfas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (39, 'dfgfip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (40, 'asifgff', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (41, 'fggfrajdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (42, 'fgfgsandipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (43, 'ncxilgbgadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (44, 'adghghbhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (45, 'sayandhyyueep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (46, 'teritas', 'mereaity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (47, 'dipere', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (48, 'asifcc', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (49, 'anushrccee', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (50, 'trishawww', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (51, 'avijiqqt', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (52, 'qqqdona', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (53, 'rajqqqdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (54, 'sandipqqqqan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (55, 'niladriwww', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (56, 'abhishewwwk', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (57, 'sayandeepbbb', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (58, 'tbbbitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (59, 'dbbbip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (60, 'asbbbif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (61, 'rajdeAFep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (62, 'sanSDFipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (63, 'nilaSDFdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (64, 'abhiSDFshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (65, 'sayaSDndeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (66, 'tiAStas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (67, 'diASp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (68, 'aASsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (69, 'anuASshree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (70, 'triASsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (71, 'avASCijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (72, 'donVa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (73, 'rajCVdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (74, 'saVndipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (75, 'nilVadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (76, 'abChishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (77, 'saCyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (78, 'titCas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (79, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (80, 'asCif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (81, 'rajdeCep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (82, 'saSndCipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (83, 'nilCadri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (84, 'abhSCshek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (85, 'saSyCandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (86, 'titSasCE', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (87, 'diCp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (88, 'asEif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (89, 'anEushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (90, 'triEsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (91, 'avEijit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (92, 'donEa', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (93, 'raEjdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (94, 'sanEdipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (95, 'niladEri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (96, 'abhEishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (97, 'sayEandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (98, 'tEitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (99, 'dEip', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (100, 'aEsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (101, 'rajSSdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (102, 'sandSSipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (103, 'nilaLSSdri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (104, 'abLhishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (105, 'saLyandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (106, 'tLitas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (107, 'diLp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (108, 'aLsif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'), + (109, 'anLushree', 'sanyal', 'anus@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (110, 'triLsha', 'das', 'trisha@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (111, 'aviLjit', 'chakraborty', 'avijit@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (112, 'doLna', 'sen', 'dona@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (113, 'rajLdeep', 'rajbanshi', 'rjraj@gmail.com', '2020-07-24 17:17:36', '2020-07-24 20:12:30'), + (114, 'sandLipan', 'saha', 'sandy@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (115, 'niULladri', 'sen', 'sen@gmail.com', '2020-04-25 17:17:36', '2020-07-26 18:10:59'), + (116, 'aLbhUishek', 'banerjee', 'abhi@gmail.com', '2020-05-24 17:17:36', '2020-07-24 20:12:30'), + (117, 'sLLUayandeep', 'bhowmick', 'sayndeep@gmail.com', '2020-06-24 17:17:36', '2020-07-24 20:12:30'), + (118, 'tiLUtas', 'maity', 'titi@gmail.com', '2020-10-22 17:17:36', '2020-10-24 20:12:30'), + (119, 'diUp', 'chakraborty', 'dipc@gmail.com', '2020-09-04 17:17:36', '2020-10-24 20:12:30'), + (120, 'asUif', 'baidya', 'asif@gmail.com', '2020-08-24 18:17:36', '2020-07-24 20:12:30'); + + +/* User */ +insert into user (user_id, password, first_name, last_name, email, company, phone, address1, address2, country, postal, role, is_active, is_blocked, security_provider_id, default_customer_id, secret_question, secret_answer, enable_beta_testing, enable_renewal) values +('demo' , 'demo' , 'Mrinmoy' , 'Majumdar', 'arivera2@joomla.org' , 'Abshire Inc', '7-(740)701-4547', '80429 Garrison Crossing', '4967' , 'USA' , '64890', 'USER' , 1, 0, 10001, 20000, 'Diverse' , 'Yellow' , 0, 0), +('admin' , '$2b$10$AkngMoFbJhllHomzUFdwAehsPzbHxY31XXtWTr0Cnpo9OYs7enn0q' , 'Theresa' , 'Russell' , 'trussell1@about.me' , 'Glover, Adams and Bins', '383-(779)851-3208', '30874 Graceland Terrace', '99152' , 'USA' , '51065', 'ADMIN', 1, 0, 10001, 20000, 'knowledge base', 'Mauv' , 1, 0), +('user' , '$2b$10$AK/siGGl4ITIq0dZHDck0uAyLJHkGPOeLBSAyUL8j5OU5vlf79wjq' , 'Virginia' , 'Reynolds', 'vreynolds0@slashdot.org', 'Rippin, Osinski and Beatty', '84-(228)809-9998', '0118 Burrows Plaza', '496' , 'USA' , '94086', 'USER' , 1, 0, 10001, 20000, 'Innovative' , 'Turquoise', 1, 1), +('jowens3' , 'jowens3' , 'Judy' , 'Owens' , 'jowens3@hp.com' , 'Altenwerth, Fisher and Heidenreich', '30-(772)268-8227', '98 Loeprich Way', '447', 'Greece' , null , 'USER' , 0, 0, 10001, 20001, 'capacity' , 'Fuscia' , 1, 1), +('kburns4' , 'kburns4' , 'Kelly' , 'Burns' , 'kburns4@icio.us' , 'McCullough-Morar', '86-(857)185-5740', '1638 Basil Alley', '56297' , 'China' , null , 'ADMIN', 1, 0, 10000, 20002, 'user-facing' , 'Crimson', 1, 1), +('jshaw5' , 'jshaw5' , 'Julie' , 'Shaw' , 'jshaw5@opera.com' , 'Steuber-Okuneva', '1-(871)375-6188', '389 Myrtle Pass', '41444' , 'Canada' , null , 'ADMIN', 1, 1, 10000, 20000, 'software' , 'Green' , 0, 1), +('pgilbert6' , 'pgilbert6', 'Peter' , 'Gilbert' , 'pgilbert6@eepurl.com' , 'Robel Inc', '52-(372)555-4687', '11522 Fuller Avenue', '5' , 'Mexico' , '39230', 'ADMIN', 1, 1, 10000, 20000, 'multi-state' , 'Puce' , 1, 1), +('jjacobs7' , 'jjacobs7' , 'Justin' , 'Jacobs' , 'jjacobs7@google.co.uk' , 'Harris-Bashirian', '963-(199)359-2552', '95012 Hanover Street', '2377' , 'India' , null , 'USER' , 1, 0, 10000, 20002, 'motivating' , 'Crimson', 1, 0), +('kbennett8' , 'kbennett8', 'Kevin' , 'Bennett' , 'kbennett8@hostgator.com', 'Leannon Inc', '62-(892)710-5713', '459 Coleman Drive', '397' , 'Indonesia' , null , 'ADMIN', 0, 0, 10001, 20000, 'Exclusive' , 'Purple' , 1, 1), +('cmurphy9' , 'cmurphy9' , 'Chris' , 'Murphy' , 'cmurphy9@over-blog.com' , 'Mosciski LLC', '64-(272)961-0086', '2 Ludington Point', '7' , 'New Zealand', null , 'ADMIN', 0, 1, 10000, 20000, 'empowering' , 'Maroon' , 0, 1); + +/* Employees */ +insert into employees (id, last_name, first_name, email, phone, address1, address2, city, state, postal_code, country, avatar, job_title, department, manager_id) values + (201, 'Harris' , 'George' , 'gharris0@pagesperso-orange.fr', '1-(210)270-8536', '2 Bayside Drive', null, 'San Antonio', 'Texas', '78240', 'United States', 'https://robohash.org/modilaboriosammolestiae.bmp?size=50x50&set=set1', 'Administrative Assistant I', 'Toys', null) +,(202, 'Hayes' , 'Rachel' , 'rhayes1@si.edu', '1-(971)797-2729', '30 Anhalt Street', null, 'Portland', 'Oregon', '97232', 'United States', 'https://robohash.org/seddistinctiodolorem.jpg?size=50x50&set=set1', 'Design Engineer', 'Books', null) +,(203, 'Palmer' , 'Anthony', 'apalmer2@posterous.com', '1-(702)984-2108', '02809 4th Pass', null, 'North Las Vegas', 'Nevada', '89036', 'United States', 'https://robohash.org/vitaererumdolore.png?size=50x50&set=set1', 'Health Coach II', 'Toys', null) +,(204, 'Alvarez' , 'Laura' , 'lalvarez3@time.com', '1-(518)328-2658', '647 Lakeland Road', null, 'Albany', 'New York', '12210', 'United States', 'https://robohash.org/nobisplaceatquisquam.jpg?size=50x50&set=set1', 'Computer Systems Analyst II', 'Health', null) +,(205, 'Reynolds', 'Annie' , 'areynolds4@nasa.gov', '1-(775)838-2203', '163 Carey Street', null, 'Reno', 'Nevada', '89550', 'United States', 'https://robohash.org/praesentiumdoloremrerum.png?size=50x50&set=set1', 'Senior Quality Engineer', 'Kids', null) +,(206, 'Henry' , 'Joe' , 'jhenry5@bbb.org', '1-(682)563-2229', '1 Harper Circle', null, 'Fort Worth', 'Texas', '76178', 'United States', 'https://robohash.org/earumiurevoluptas.jpg?size=50x50&set=set1', 'Chief Design Engineer', 'Electronics', null) +,(207, 'Willis' , 'Willie' , 'wwillis6@berkeley.edu', '1-(317)654-6888', '641 Kropf Parkway', null, 'Indianapolis', 'Indiana', '46216', 'United States', 'https://robohash.org/suntsitnecessitatibus.png?size=50x50&set=set1', 'Structural Analysis Engineer', 'Shoes', null) +,(208, 'Lawrence', 'Keith' , 'klawrence7@discovery.com', '1-(501)583-8851', '2184 Melby Crossing', null, 'Little Rock', 'Arkansas', '72222', 'United States', 'https://robohash.org/delenitiomnisconsequatur.jpg?size=50x50&set=set1', 'VP Quality Control', 'Outdoors', null) +,(209, 'Johnston', 'Tina' , 'tjohnston8@alexa.com', '1-(901)128-9976', '72 Hauk Road', null, 'Memphis', 'Tennessee', '38114', 'United States', 'https://robohash.org/voluptasautmaiores.png?size=50x50&set=set1', 'Assistant Media Planner', 'Electronics', null) +,(210, 'Burns' , 'Lisa' , 'lburns9@taobao.com', '1-(585)113-8402', '99 Manufacturers Drive', null, 'Rochester', 'New York', '14624', 'United States', 'https://robohash.org/illumsinttempore.jpg?size=50x50&set=set1', 'Operator', 'Industrial', null) +,(211, 'Stone' , 'Howard' , 'hstonea@ucsd.edu', '1-(202)958-2516', '03 Anthes Center', null, 'Washington', 'District of Columbia', '20425', 'United States', 'https://robohash.org/eautet.bmp?size=50x50&set=set1', 'Account Executive', 'Electronics', null) +,(212, 'Brown' , 'Julie' , 'jbrownb@squidoo.com', '1-(217)741-6449', '37574 4th Drive', null, 'Springfield', 'Illinois', '62705', 'United States', 'https://robohash.org/laborumtotameveniet.png?size=50x50&set=set1', 'Analog Circuit Design manager', 'Electronics', null) +,(213, 'Turner' , 'Edward' , 'eturnerc@theatlantic.com', '1-(701)353-1996', '3 Bultman Circle', null, 'Fargo', 'North Dakota', '58122', 'United States', 'https://robohash.org/sedutporro.png?size=50x50&set=set1', 'Structural Engineer', 'Computers', null) +,(214, 'Nichols' , 'Douglas', 'dnicholsd@fda.gov', '1-(302)771-6486', '5150 Holmberg Way', null, 'Wilmington', 'Delaware', '19805', 'United States', 'https://robohash.org/blanditiiscommodiet.png?size=50x50&set=set1', 'Editor', 'Outdoors', null) +,(215, 'Gilbert' , 'Jessica', 'jgilberte@infoseek.co.jp', '1-(320)607-0289', '32 Summit Park', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/providentaccusamussed.bmp?size=50x50&set=set1', 'Account Executive', 'Baby', null) +,(216, 'Hernandez', 'Kathy' , 'khernandezf@shinystat.com', '1-(210)733-3380', '24 Merrick Way', null, 'San Antonio', 'Texas', '78225', 'United States', 'https://robohash.org/utfaciliset.png?size=50x50&set=set1', 'Junior Executive', 'Movies', null) +,(217, 'Sullivan', 'Lillian', 'lsullivang@flavors.me', '1-(904)885-2053', '42 Manufacturers Pass', null, 'Jacksonville', 'Florida', '32215', 'United States', 'https://robohash.org/quiaetaut.jpg?size=50x50&set=set1', 'Engineer I', 'Sports', null) +,(218, 'Jenkins' , 'Frances', 'fjenkinsh@huffingtonpost.com', '1-(512)764-3809', '69255 Dakota Plaza', null, 'Austin', 'Texas', '78769', 'United States', 'https://robohash.org/voluptatemnamaliquam.bmp?size=50x50&set=set1', 'Developer IV', 'Baby', null) +,(219, 'Myers' , 'Roger' , 'rmyersi@alexa.com', '1-(480)583-9583', '3 Eagle Crest Place', null, 'Gilbert', 'Arizona', '85297', 'United States', 'https://robohash.org/consequaturutquo.png?size=50x50&set=set1', 'Account Executive', 'Beauty', null) +,(220, 'Hunter' , 'Bonnie' , 'bhunterj@ucsd.edu', '1-(320)933-5140', '99 Arapahoe Terrace', null, 'Saint Cloud', 'Minnesota', '56372', 'United States', 'https://robohash.org/etfacilisquo.bmp?size=50x50&set=set1', 'Analog Circuit Design manager', 'Baby', null); + +/* Products */ +insert into products (id, product_code, product_name, description, standard_cost, list_price, target_level, reorder_level, minimum_reorder_quantity, quantity_per_unit, discontinued, category) values + (601, 'P1' , 'Nikon D810' , null, 1167.09, 1123.39, 75 , 10, 10, 50, 1, 'Camera') +,(602, 'P2' , 'Canon EOS 5D Mark IV' , null, 1382.83, 1293.84, 90 , 15, 15, 56, 0, 'Camera') +,(603, 'P3' , 'Dell XPS 13' , null, 1482.83, 1393.84, 95 , 20, 30, 56, 0, 'Laptop') +,(604, 'P4' , 'iPad Air' , null, 382.83 , 293.84 , 180, 75, 50, 56, 0, 'Tablet') +,(605, 'P5' , 'Acer Aspire S 13' , null, 882.83 , 793.84 , 40 , 15, 15, 56, 0, 'Laptop') +,(606, 'P6' , 'Nexus 6' , null, 633.88 , 511.7 , 75 , 10, 20, 79, 1, 'Phone' ) +,(607, 'P7' , 'ThinkPad T365' , null, 1441.02, 1308.98, 100, 30, 10, 92, 1, 'Laptop') +,(608, 'P8' , 'Moto Z' , null, 538.44 , 462.34 , 75 , 20, 20, 54, 1, 'Phone' ) +,(609, 'P9' , 'HTC 10' , null, 547.58 , 481.83 , 50 , 5 , 15, 58, 1, 'Tablet') +,(610, 'P10', 'MacBook Pro 13.3' , null, 1625.81, 1576.61, 120, 40, 30, 11, 1, 'Laptop') +,(611, 'P11', 'Nikon D500' , null, 867.09 , 723.39 , 75 , 25, 15, 50, 1, 'Camera') +,(612, 'P12', 'Pentax K-1' , null, 882.83 , 793.84 , 50 , 10, 5 , 56, 0, 'Camera') +,(613, 'P13', 'Asus Zenbook Ux305' , null, 1182.83, 1093.84, 55 , 10, 5 , 56, 0, 'Laptop') +,(614, 'P14', 'HP Envy m7-n109dx 17.3', null, 1382.83, 1293.84, 50 , 10, 10, 56, 0, 'Laptop') +,(615, 'P15', 'Microsft Surface Book' , null, 1682.83, 1593.84, 200, 80, 50, 56, 0, 'Tablet') +,(616, 'P16', 'Apple iPhone 7' , null, 833.88 , 711.76 , 250, 100,50, 79, 1, 'Phone' ) +,(617, 'P17', 'Google Pixel' , null, 641.02 , 608.98 , 100, 30 ,20, 92, 1, 'Phone' ) +,(618, 'P18', 'Samsung Galaxy S7' , null, 538.44 , 562.34 , 75 , 15, 10, 54, 1, 'Phone' ) +,(619, 'P19', 'Samasung Note' , null, 547.58 , 481.83 , 75 , 15, 15, 58, 1, 'Tablet') +,(620, 'P20', 'Chromebook 11.6' , null, 1078.81, 1008.61, 80 , 14, 10, 11, 1, 'Laptop'); + +/* Customers */ +insert into customers (id, last_name, first_name, email, company, phone, address1, address2, city, state, postal_code, country) values + (1 , 'Gray' , 'Clarence' , 'cgray0@rambler.ru' , 'Jetpulse' , '1-(260)615-5114', '02937 Merrick Avenue' , null, 'Fort Wayne', 'Indiana', '46805', 'United States') +,(2 , 'Cooper' , 'Emily' , 'ecooper1@macromedia.com' , 'Skippad' , '1-(251)614-5034', '60 Forster Crossing' , null, 'Mobile', 'Alabama', '36605', 'United States') +,(3 , 'Wilson' , 'George' , 'gwilson2@xinhuanet.com' , 'Riffpath' , '1-(901)445-9881', '52 Browning Center' , null, 'Memphis', 'Tennessee', '38181', 'United States') +,(4 , 'Mcdonald', 'Michael' , 'mmcdonald3@twitter.com' , 'Feedfire' , '1-(419)743-7314', '85093 Jackson Park' , null, 'Toledo', 'Ohio', '43610', 'United States') +,(5 , 'Tucker' , 'Lori' , 'ltucker4@etsy.com' , 'Oyondu' , '1-(202)381-2663', '0706 Heffernan Pass' , null, 'Washington', 'District of Columbia', '20380', 'United States') +,(6 , 'Hansen' , 'Lois' , 'lhansen5@stumbleupon.com', 'Yozio' , '1-(315)385-6866', '2 Ruskin Pass' , null, 'Syracuse', 'New York', '13251', 'United States') +,(7 , 'Grant' , 'Frances' , 'fgrant6@yale.edu' , 'Eire' , '1-(863)799-9068', '61402 Morning Court' , null, 'Lakeland', 'Florida', '33811', 'United States') +,(8 , 'Lewis' , 'Catherine', 'clewis7@unesco.org' , 'Realpoint', '1-(915)208-4997', '775 Messerschmidt Junction', null, 'El Paso', 'Texas', '88563', 'United States') +,(9 , 'Rogers' , 'Edward' , 'erogers8@guardian.co.uk' , 'Quinu' , '1-(971)934-2404', '7074 Montana Place' , null, 'Portland', 'Oregon', '97271', 'United States') +,(10, 'Owens' , 'Tina' , 'towens9@earthlink.net' , 'Blogtag' , '1-(712)989-9002', '59039 Sachtjen Street', null, 'Sioux City', 'Iowa', '51105', 'United States') +,(11, 'Peterson', 'Fred' , 'fpetersona@home.pl' , 'Meedoo' , '1-(202)228-9380', '55 Knutson Street', null, 'Washington', 'District of Columbia', '20099', 'United States') +,(12, 'Cox' , 'Jason' , 'jcoxb@slashdot.org' , 'Tagcat' , '1-(651)991-0172', '19 Hoffman Avenue', null, 'Saint Paul', 'Minnesota', '55114', 'United States') +,(13, 'Perez' , 'Paul' , 'pperezc@ask.com' , 'Kazu' , '1-(405)290-7944', '6336 Continental Circle', null, 'Oklahoma City', 'Oklahoma', '73167', 'United States') +,(14, 'Duncan' , 'Anthony' , 'aduncand@disqus.com' , 'Aibox' , '1-(727)705-8400', '17794 Northport Point', null, 'Clearwater', 'Florida', '33763', 'United States') +,(15, 'Graham' , 'Sean' , 'sgrahame@google.com.br' , 'Tekfly' , '1-(901)443-0731', '47493 Reinke Drive', null, 'Memphis', 'Tennessee', '38131', 'United States') +,(16, 'Simpson' , 'Jose' , 'jsimpsonf@youtube.com' , 'Youspan' , '1-(518)381-4659', '498 Carey Lane', null, 'Albany', 'New York', '12262', 'United States') +,(17, 'Simmons' , 'Frances' , 'fsimmonsg@webster.com' ,'Feednation', '1-(251)473-1327', '44102 Montana Crossing', null, 'Mobile', 'Alabama', '36641', 'United States') +,(18, 'Schmidt' , 'John' , 'jschmidth@vinaora.com' , 'Topicblab', '1-(202)945-2079', '384 Goodland Pass', null, 'Washington', 'District of Columbia', '20210', 'United States') +,(19, 'West' , 'Roger' , 'rwesti@cornell.edu' , 'Skilith' , '1-(716)707-3907', '74 Nancy Pass', null, 'Buffalo', 'New York', '14215', 'United States') +,(20, 'Fields' , 'Jesse' , 'jfieldsj@shop-pro.jp' , 'Vinte' , '1-(617)810-9493', '602 Laurel Park', null, 'Boston', 'Massachusetts', '02203', 'United States') +,(21, 'Patterson', 'Kathy' , 'kpattersonk@machines.org', 'Brainverse', '1-(806)803-9725', '67063 Spenser Junction', null, 'Amarillo', 'Texas', '79188', 'United States') +,(22, 'Bell' , 'Stephanie', 'sbelll@gravatar.com' , 'DabZ' , '1-(801)924-1975', '05 Gina Crossing', null, 'Salt Lake City', 'Utah', '84145', 'United States') +,(23, 'Turner' , 'Martha' , 'mturnerm@hp.com' , 'Yadel' , '1-(225)880-9134', '97789 Scofield Point', null, 'Baton Rouge', 'Louisiana', '70894', 'United States') +,(24, 'Ross' , 'Richard' , 'rrossn@weebly.com' , 'Voolith' , '1-(415)690-1916', '19 Briar Crest Alley', null, 'San Francisco', 'California', '94164', 'United States') +,(25, 'Stephens', 'Stephanie', 'sstephenso@times.co.uk' , 'BlogXS' , '1-(501)827-1408', '63291 Huxley Drive', null, 'North Little Rock', 'Arkansas', '72118', 'United States') +,(26, 'Sanchez' , 'Diane' , 'dsanchezp@sun.com' , 'Tagtune' , '1-(315)979-6793', '13 Oneill Junction', null, 'Syracuse', 'New York', '13224', 'United States') +,(27, 'Lawrence', 'Douglas' , 'dlawrenceq@flickr.com' , 'Browsetype', '1-(610)622-4045', '83224 Mallard Center', null, 'Philadelphia', 'Pennsylvania', '19109', 'United States') +,(28, 'Hansen' , 'Lori' , 'lhansenr@patch.com' , 'Einti' , '1-(915)266-1989', '48410 Westport Circle', null, 'El Paso', 'Texas', '88546', 'United States') +,(29, 'Medina' , 'Robert' , 'rmedinas@uiuc.edu' , 'Tambee' , '1-(216)752-7216', '0562 Muir Trail', null, 'Cleveland', 'Ohio', '44197', 'United States') +,(30, 'Harrison', 'Shawn' , 'sharrisont@webnode.com' , 'Youopia' , '1-(205)595-8085', '20 Mayer Center', null, 'Birmingham', 'Alabama', '35205', 'United States') +,(31, 'Alexander', 'Julia' , 'jalexanderu@netsol.com' , 'Oodoo' , '1-(864)349-2185', '61859 West Point', null, 'Greenville', 'South Carolina', '29610', 'United States') +,(32, 'Stanley', 'Victor' , 'vstanleyv@wikipedia.org' , 'Centimia' , '1-(561)507-7317', '08229 Glacier Hill Avenue', null, 'Boynton Beach', 'Florida', '33436', 'United States') +,(33, 'Wheeler', 'Dennis' , 'dwheelerw@indiatimes.com', 'Dynabox' , '1-(419)889-2883', '409 American Ash Plaza', null, 'Lima', 'Ohio', '45807', 'United States') +,(34, 'Frazier', 'Rachel' , 'rfrazierx@sfgate.com' , 'Skivee' , '1-(314)249-1796', '7 Waxwing Court', null, 'Saint Louis', 'Missouri', '63131', 'United States') +,(35, 'Brooks' , 'Shawn' , 'sbrooksy@mediafire.com' , 'Omba' , '1-(971)854-8478', '614 Monica Terrace', null, 'Portland', 'Oregon', '97240', 'United States') +,(36, 'Coleman', 'Frank' , 'fcolemanz@un.org' , 'Agimba' , '1-(318)446-4337', '4 Browning Park', null, 'Shreveport', 'Louisiana', '71151', 'United States') +,(37, 'Wright' , 'Frank' , 'fwright10@flickr.com' , 'Meedoo' , '1-(504)852-2553', '03446 Sheridan Trail', null, 'New Orleans', 'Louisiana', '70183', 'United States') +,(38, 'Perkins', 'Tina' , 'tperkins11@va.gov' , 'Rhybox' , '1-(571)497-0755', '62 Grayhawk Lane', null, 'Fairfax', 'Virginia', '22036', 'United States') +,(39, 'Griffin', 'Ruth' , 'rgriffin12@pcworld.com' , 'Trudoo' , '1-(504)312-7448', '29701 Jenifer Junction', null, 'Metairie', 'Louisiana', '70033', 'United States') +,(40, 'Sanchez', 'Sean' , 'ssanchez13@bandcamp.com' , 'Chatterpoint', '1-(316)535-7647', '10 Stuart Road', null, 'Wichita', 'Kansas', '67260', 'United States') +,(41, 'Harris' , 'Linda' , 'lharris14@ask.com' , 'Blogpad' , '1-(913)258-6547', '17635 Elka Alley', null, 'Shawnee Mission', 'Kansas', '66205', 'United States') +,(42, 'Wood' , 'George' , 'gwood15@imdb.com' , 'Feednation' , '1-(865)482-7169', '210 Anhalt Drive', null, 'Knoxville', 'Tennessee', '37924', 'United States') +,(43, 'Bennett', 'Nancy' , 'nbennett16@netsol.com' , 'Yodo' , '1-(210)749-3167', '97861 Harper Pass', null, 'San Antonio', 'Texas', '78260', 'United States') +,(44, 'Pierce' , 'Jesse' , 'jpierce17@cyberchimps.com', 'Divanoodle' , '1-(501)518-2300', '0 Columbus Terrace', null, 'Little Rock', 'Arkansas', '72231', 'United States') +,(45, 'Larson' , 'Jerry' , 'jlarson18@ustream.tv' , 'Kazu' , '1-(916)702-0977', '0422 Merry Court', null, 'Sacramento', 'California', '95852', 'United States') +,(46, 'Williams', 'Norma' , 'nwilliams19@spiegel.de' , 'Yacero' , '1-(562)631-4036', '5779 Burning Wood Crossing', null, 'Long Beach', 'California', '90847', 'United States') +,(47, 'Kelley' , 'Louis' , 'lkelley1a@wsj.com' , 'Linkbuzz' , '1-(432)286-2200', '04321 Northport Pass', null, 'Odessa', 'Texas', '79764', 'United States') +,(48, 'Mason' , 'Ruby' , 'rmason1b@census.gov' , 'Trudeo' , '1-(763)835-7627', '99219 5th Place', null, 'Monticello', 'Minnesota', '55565', 'United States') +,(49, 'Carr' , 'Nicole' , 'ncarr1c@yellowbook.com' , 'Plajo' , '1-(330)154-9245', '41 Monica Parkway', null, 'Youngstown', 'Ohio', '44511', 'United States') +,(50, 'Franklin', 'Michelle' , 'mfranklin1d@ucoz.com' , 'Wikivu' , '1-(405)751-8906', '62 Rutledge Alley', null, 'Oklahoma City', 'Oklahoma', '73147', 'United States') +,(51, 'Hawkins', 'Larry' , 'lhawkins1e@typepad.com' , 'Tagpad' , '1-(240)796-9270', '48 Columbus Road', null, 'Hagerstown', 'Maryland', '21747', 'United States') +,(52, 'Adams' , 'Lillian' , 'ladams1f@smugmug.com' , 'Avamm' , '1-(419)394-2363', '69708 West Avenue', null, 'Toledo', 'Ohio', '43605', 'United States') +,(53, 'Williamson', 'Janice' , 'jwilliamson1g@sbwire.com', 'Wordware' , '1-(212)576-0309', '311 Clemons Crossing', null, 'New York City', 'New York', '10090', 'United States') +,(54, 'Mitchell', 'Lisa' , 'lmitchell1h@live.com' , 'Trudoo' , '1-(225)794-6979', '17242 Eagan Terrace', null, 'Baton Rouge', 'Louisiana', '70820', 'United States') +,(55, 'Lawrence', 'Anna' , 'alawrence1i@manage.com' , 'Pixope' , '1-(818)505-8262', '51241 Tennessee Point', null, 'Santa Monica', 'California', '90405', 'United States') +,(56, 'Scott' , 'Margaret' , 'mscott1j@arizona.edu' , 'Mynte' , '1-(202)265-0994', '117 Arapahoe Crossing', null, 'Washington', 'District of Columbia', '20051', 'United States') +,(57, 'Harper' , 'Timothy' , 'tharper1k@loc.gov' , 'Trudoo' , '1-(212)348-5025', '137 Commercial Court', null, 'New York City', 'New York', '10175', 'United States') +,(58, 'Frazier' , 'Mary' , 'mfrazier1l@mapy.cz' , 'Photobug' , '1-(214)939-0299', '281 Briar Crest Way', null, 'Garland', 'Texas', '75049', 'United States') +,(59, 'Young' , 'Margaret' , 'myoung1m@ehow.com' , 'Realmix' , '1-(318)144-2666', '537 Memorial Way', null, 'Shreveport', 'Louisiana', '71105', 'United States') +,(60, 'Sullivan', 'Phyllis' , 'psullivan1n@jiathis.com' , 'Demivee' , '1-(518)361-7505', '117 Onsgard Crossing', null, 'Albany', 'New York', '12227', 'United States') +,(61, 'Knight' , 'Roy' , 'rknight1o@qq.com' , 'Meezzy' , '1-(478)438-2599', '60 Kinsman Drive', null, 'Macon', 'United Kingdom', '31210', 'United States') +,(62, 'Ruiz' , 'Andrea' , 'aruiz1p@domainmarket.com', 'Fivespan' , '1-(415)374-7204', '55455 Heffernan Plaza', null, 'San Francisco', 'California', '94142', 'United States') +,(63, 'Hayes' , 'Heather' , 'hhayes1q@odnoklasniki.ru', 'Twitternation', '1-(615)919-6350', '31 Banding Plaza', null, 'Jackson', 'Mississippi', '39296', 'United States') +,(64, 'Chapman' , 'Roy' , 'rchapman1r@theguardian.com', 'BlogXS' , '1-(941)329-4488', '27487 Fair Oaks Crossing', null, 'Sarasota', 'Florida', '34233', 'United States') +,(65, 'Moore' , 'Daniel' , 'dmoore1s@google.co.uk' , 'Twitterbridge', '1-(408)838-8747', '52377 Everett Court', null, 'San Jose', 'California', '95194', 'United States') +,(66, 'Day' , 'Amy' , 'aday1t@indiegogo.com' , 'Brainverse' , '1-(336)903-6679', '50107 Northport Circle', null, 'Winston Salem', 'North Carolina', '27157', 'United States') +,(67, 'Kelley' , 'Jesse' , 'jkelley1u@who.int' , 'Zoomzone' , '1-(304)183-6041', '31740 Bayside Trail', null, 'Huntington', 'West Virginia', '25711', 'United States') +,(68, 'Andrews' , 'Andrea' , 'aandrews1v@patch.com' , 'Fanoodle' , '1-(206)996-3516', '544 Lakewood Gardens Alley', null, 'Seattle', 'Washington', '98148', 'United States') +,(69, 'Willis' , 'Robert' , 'rwillis1w@si.edu' , 'Tazz' , '1-(678)738-3382', '0998 Bellgrove Circle', null, 'Duluth', 'United Kingdom', '30195', 'United States') +,(70, 'Reid' , 'Daniel' , 'dreid1x@miitbeian.gov.cn', 'Babbleblab', '1-(786)539-0220', '2 New Castle Avenue', null, 'Miami', 'Florida', '33111', 'United States') +,(71, 'Roberts' , 'Louise' , 'lroberts1y@cpanel.net' , 'Skippad' , '1-(316)418-5043', '598 Mayfield Road', null, 'Wichita', 'Kansas', '67210', 'United States') +,(72, 'Harrison', 'Margaret' , 'mharrison1z@globe.ne.jp' , 'Zoovu' , '1-(775)625-5357', '636 Maple Point', null, 'Reno', 'Nevada', '89550', 'United States') +,(73, 'Chapman' , 'Peter' , 'pchapman20@eventbrite.com', 'Linkbuzz' , '1-(574)707-4449', '1 Vermont Plaza', null, 'South Bend', 'Indiana', '46620', 'United States') +,(74, 'Tucker' , 'Willie' , 'wtucker21@hubpages.com' , 'Eazzy' , '1-(814)593-2963', '3 Dryden Trail', null, 'Erie', 'Pennsylvania', '16505', 'United States') +,(75, 'Bradley' , 'Adam' , 'abradley22@cnet.com' , 'Yabox' , '1-(903)334-0845', '15 Veith Center', null, 'Tyler', 'Texas', '75705', 'United States') +,(76, 'Armstrong', 'Juan' , 'jarmstrong23@archive.org', 'Gevee' , '1-(916)285-8157', '95 Claremont Crossing', null, 'Sacramento', 'California', '95865', 'United States') +,(77, 'Payne' , 'Kenneth' , 'kpayne24@com.com' , 'Skinte' , '1-(770)150-8423', '75 Beilfuss Court', null, 'Alpharetta', 'United Kingdom', '30022', 'United States') +,(78, 'Jacobs' , 'Louis' , 'ljacobs25@intel.com' , 'Photolist' , '1-(404)386-3449', '542 Browning Park', null, 'Atlanta', 'United Kingdom', '30343', 'United States') +,(79, 'Cooper' , 'Marilyn' , 'mcooper26@whitehouse.gov', 'Yotz' , '1-(520)875-3539', '03 Transport Point', null, 'Tucson', 'Arizona', '85710', 'United States') +,(80, 'Watkins' , 'William' , 'wwatkins27@pbs.org' , 'Brightbean', '1-(719)568-3678', '0316 La Follette Drive', null, 'Colorado Springs', 'Colorado', '80920', 'United States') +,(81, 'Baker' , 'Douglas' , 'dbaker28@exblog.jp' , 'Voonix' , '1-(619)121-6070', '99 Kedzie Terrace', null, 'Chula Vista', 'California', '91913', 'United States') +,(82, 'Cunningham','Daniel' , 'dcunningham29@oakley.com', 'Leexo' , '1-(619)609-6206', '53540 Hallows Place', null, 'San Diego', 'California', '92137', 'United States') +,(83, 'Mitchell', 'Edward' , 'emitchell2a@amazon.com' , 'Jatri' , '1-(502)427-5275', '3 Jana Junction', null, 'Louisville', 'Kentucky', '40280', 'United States') +,(84, 'Matthews', 'Adam' , 'amatthews2b@live.com' , 'Muxo' , '1-(316)764-9074', '5 Arapahoe Plaza', null, 'Wichita', 'Kansas', '67220', 'United States') +,(85, 'Jacobs' , 'Diane' , 'djacobs2c@jimdo.com' , 'Youspan' , '1-(804)398-4775', '6 Moose Street', null, 'Richmond', 'Virginia', '23285', 'United States') +,(86, 'Frazier' , 'Mary' , 'mfrazier2d@forbes.com' , 'Zoomdog' , '1-(716)502-4243', '713 Continental Trail', null, 'Buffalo', 'New York', '14210', 'United States') +,(87, 'Howard' , 'Anthony' , 'ahoward2e@disqus.com' , 'Katz' , '1-(805)800-7968', '006 Elka Center', null, 'Bakersfield', 'California', '93311', 'United States') +,(88, 'Kelly' , 'Anna' , 'akelly2f@unc.edu' , 'Trilia' , '1-(804)117-9707', '292 Browning Circle', null, 'Richmond', 'Virginia', '23228', 'United States') +,(89, 'Clark' , 'Kathy' , 'kclark2g@businesswire.com' , 'Gigabox' , '1-(831)755-4869', '45 Walton Parkway', null, 'Salinas', 'California', '93907', 'United States') +,(90, 'Carpenter', 'Gerald' , 'gcarpenter2h@foxnews.com' , 'Yakidoo' , '1-(213)344-9608', '84560 Stephen Parkway', null, 'Los Angeles', 'California', '90055', 'United States') +,(91, 'Hart' , 'Albert' , 'ahart2i@scribd.com' , 'Jaloo' , '1-(415)201-5281', '0 Washington Place', null, 'Oakland', 'California', '94611', 'United States') +,(92, 'Young' , 'Julia' , 'jyoung2j@craigslist.org' , 'Oloo' , '1-(615)660-1203', '0623 Gale Drive', null, 'Jackson', 'Mississippi', '39210', 'United States') +,(93, 'Pierce' , 'Tammy' , 'tpierce2k@psu.edu' , 'Ntags' , '1-(703)772-3155', '501 Leroy Parkway', null, 'Washington', 'District of Columbia', '20041', 'United States') +,(94, 'Washington', 'Ronald' , 'rwashington2l@drupal.org' , 'Livetube' , '1-(202)828-6093', '6220 Del Sol Alley', null, 'Washington', 'District of Columbia', '20551', 'United States') +,(95, 'Carter' , 'Alan' , 'acarter2m@simplemachines.org', 'Centizu' , '1-(952)234-1678', '043 Sunnyside Center', null, 'Young America', 'Minnesota', '55551', 'United States') +,(96, 'Freeman' , 'Stephanie', 'sfreeman2n@redcross.org' , 'Feednation' , '1-(504)126-8245', '1120 Veith Parkway', null, 'New Orleans', 'Louisiana', '70165', 'United States') +,(97, 'Price' , 'Sara' , 'sprice2o@irs.gov' , 'Izio' , '1-(415)668-5714', '96394 Bonner Hill', null, 'San Francisco', 'California', '94116', 'United States') +,(98, 'Parker' , 'Emily' , 'eparker2p@4shared.com' , 'Skalith' , '1-(330)637-4894', '0 Old Shore Center', null, 'Akron', 'Ohio', '44310', 'United States') +,(99, 'Chavez' , 'Jeremy' , 'jchavez2q@businessweek.com' , 'Topicware' , '1-(515)769-2045', '8584 Jay Street', null, 'Des Moines', 'Iowa', '50335', 'United States') +,(100, 'Kim' , 'Pamela' , 'pkim2r@stumbleupon.com' , 'Photolist' , '1-(510)144-4318', '3688 Gerald Trail', null, 'Sacramento', 'California', '95823', 'United States'); + +/* LOOK UP VALUES */ + + +/* orders */ +insert into orders (id, employee_id, customer_id, order_date, shipped_date, ship_name, ship_address1, ship_address2, ship_city, ship_state, ship_postal_code, ship_country, shipping_fee, payment_type, paid_date, order_status) values + (4001, 204, 40, '2016-04-05', '2016-11-06', 'Jean Fuller', '93 Spohn Place', null, 'Manggekompo', null, null, 'Indonesia', 8.14, 'Card', '2016-10-12', 'On Hold') +,(4002, 204, 95, '2017-01-29', '2016-05-28', 'Diane Holmes', '46 Eliot Trail', null, 'Virginia Beach', 'Virginia', '23459', 'United States', 1.55, 'Check', '2016-06-27', 'Shipped') +,(4003, 218, 54, '2016-08-19', '2016-12-08', 'Jerry Frazier', '23 Sundown Junction', null, 'Obodivka', null, null, 'Ukraine', 2.29, 'Cash', '2016-09-27', 'On Hold') +,(4004, 204, 69, '2016-09-25', '2016-12-24', 'Denise Freeman', '4909 Beilfuss Hill', null, 'Nova Venécia', null, '29830-000', 'Brazil', 4.77, 'Check', '2016-07-04', 'New') +,(4005, 215, 10, '2017-03-14', '2016-03-19', 'Jonathan Gordon', '7 Ludington Court', null, 'Sukamaju', null, null, 'Indonesia', 8.78, 'Check', '2016-03-22', 'On Hold') +,(4006, 211, 23, '2016-08-14', '2016-12-05', 'Sean Carter', '859 Dahle Plaza', null, 'Dayou', null, null, 'China', 9.43, 'Cash', '2016-08-21', 'New') +,(4007, 204, 92, '2017-01-02', '2016-07-09', 'Alice Warren', '5 Fuller Center', null, 'Log pri Brezovici', null, '1358', 'India', 3.25, 'Cash', '2016-03-24', 'Shipped') +,(4008, 205, 20, '2016-05-15', '2016-09-12', 'Andrea Hamilton', '99 Blue Bill Park Junction', null, 'Liangshui', null, null, 'China', 7.04, 'Check', '2016-09-02', 'On Hold') +,(4009, 219, 58, '2016-11-27', '2017-03-02', 'Wanda Hill', '907 Sundown Court', null, 'Pedra Azul', null, '39970-000', 'Brazil', 4.35, 'Cash', '2016-09-27', 'On Hold') +,(4010, 218, 57, '2016-09-11', '2017-02-26', 'Carolyn Foster', '0 Charing Cross Court', null, 'Chicago', 'Illinois', '60609', 'United States', 1.23, 'Cash', '2016-08-09', 'Complete') +,(4011, 207, 3 , '2017-03-01', '2016-08-04', 'Timothy Warren', '19 John Wall Parkway', null, 'Lyon', 'Rhône-Alpes', '69362 CEDEX 07', 'France', 9.57, 'Card', '2016-05-08', 'Complete') +,(4012, 210, 59, '2016-12-31', '2016-08-08', 'Kathleen Marshall', '2 Swallow Circle', null, 'Cunliji', null, null, 'China', 9.03, 'Cash', '2016-04-23', 'On Hold') +,(4013, 204, 57, '2017-01-11', '2017-02-13', 'Jane Ortiz', '1136 Kedzie Alley', null, 'Eirado', 'Viana do Castelo', '4990-540', 'Portugal', 8.9, 'Check', '2016-10-26', 'Shipped') +,(4014, 212, 26, '2016-09-23', '2016-05-13', 'Carolyn Martinez', '954 Kropf Court', null, 'Ibitinga', null, '14940-000', 'Brazil', 4.57, 'Card', '2016-09-11', 'New') +,(4015, 201, 86, '2016-11-04', '2016-10-03', 'Debra Willis', '89 Grasskamp Road', null, 'San Francisco', null, '8501', 'Philippines', 3.53, 'Card', '2016-10-05', 'New') +,(4016, 208, 17, '2016-04-17', '2016-03-22', 'Sharon Little', '27501 Sommers Junction', null, 'San Juan Opico', null, null, 'India', 6.87, 'Card', '2017-01-08', 'Complete') +,(4017, 205, 73, '2016-07-03', '2016-09-26', 'Nancy Hughes', '1 John Wall Avenue', null, 'La Libertad', null, null, 'Argentina', 4.67, 'Check', '2017-02-01', 'New') +,(4018, 213, 16, '2016-12-01', '2016-06-08', 'Sara Knight', '98248 Tony Pass', null, 'Val-d''Or', 'Québec', 'J9P', 'Canada', 9.52, 'Card', '2016-08-06', 'New') +,(4019, 209, 10, '2016-04-18', '2016-04-25', 'Russell Wood', '3 Commercial Point', null, 'Rokietnica', null, '62-090', 'Poland', 6.8, 'Card', '2017-01-20', 'On Hold') +,(4020, 216, 1 , '2016-07-23', '2017-02-23', 'Aaron Grant', '15477 Farwell Circle', null, 'Yongyang', null, null, 'China', 3.17, 'Cash', '2016-08-11', 'Complete') +,(4021, 209, 38, '2016-12-16', '2017-02-14', 'Ryan Foster', '9218 Leroy Avenue', null, 'Mogapinyana', null, null, 'India', 3.34, 'Cash', '2016-06-21', 'On Hold') +,(4022, 207, 91, '2016-07-18', '2016-04-06', 'Peter Montgomery', '570 Londonderry Pass', null, 'Mathakola', null, null, 'India', 8.11, 'Card', '2016-10-27', 'New') +,(4023, 209, 39, '2016-07-15', '2017-02-02', 'Lawrence Schmidt', '371 Acker Drive', null, 'Mesa', 'Arizona', '85205', 'United States', 1.39, 'Cash', '2016-10-27', 'Complete') +,(4024, 219, 51, '2016-12-08', '2017-01-03', 'Eric Gray', '4608 Farmco Point', null, 'Gemblengmulyo', null, null, 'Indonesia', 8.76, 'Card', '2016-05-13', 'Complete') +,(4025, 204, 77, '2016-09-24', '2017-01-20', 'Gloria Green', '62 Sunnyside Park', null, 'Itararé', null, '18460-000', 'Brazil', 7.75, 'Cash', '2017-02-06', 'On Hold') +,(4026, 215, 73, '2016-09-15', '2016-12-24', 'Nicholas Price', '5672 Ruskin Hill', null, 'Maimará', null, '4624', 'Argentina', 9.11, 'Card', '2016-07-22', 'On Hold') +,(4027, 208, 98, '2016-05-31', '2016-07-14', 'Doris Watson', '133 Gina Street', null, 'Bantiran', null, null, 'Indonesia', 3.0, 'Cash', '2016-10-08', 'Complete') +,(4028, 217, 39, '2016-05-10', '2016-04-07', 'Linda Foster', '40382 4th Terrace', null, 'Agrelo', 'Braga', '4730-300', 'Portugal', 2.39, 'Cash', '2016-09-11', 'Complete') +,(4029, 212, 52, '2016-09-14', '2016-12-21', 'Anthony Spencer', '02 Esker Junction', null, 'El Ocotón', null, null, 'Canada', 7.72, 'Check', '2016-09-23', 'Shipped') +,(4030, 218, 74, '2016-05-08', '2016-07-21', 'James Kennedy', '7460 Westport Hill', null, 'Köln', 'Nordrhein-Westfalen', '51107', 'Germany', 6.16, 'Cash', '2016-11-27', 'Shipped') +,(4031, 214, 4 , '2016-05-31', '2017-03-03', 'Theresa Robinson', '44 Havey Way', null, 'Qingtong', null, null, 'China', 5.02, 'Check', '2017-03-15', 'New') +,(4032, 201, 81, '2016-07-05', '2016-11-18', 'Jesse Ray', '68 Derek Hill', null, 'Azogues', null, null, 'Argentina', 5.41, 'Check', '2016-10-16', 'New') +,(4033, 203, 15, '2016-09-07', '2016-06-09', 'Harold Fields', '2 Vermont Terrace', null, 'Mogocha', null, '673732', 'Russia', 2.38, 'Check', '2016-03-30', 'Complete') +,(4034, 217, 11, '2016-08-19', '2016-12-08', 'Larry Watkins', '629 Waxwing Avenue', null, 'Krasnyy Oktyabr’', null, '398526', 'Russia', 5.23, 'Cash', '2016-07-01', 'On Hold') +,(4035, 205, 51, '2016-11-29', '2016-09-02', 'Debra Marshall', '23578 Arizona Junction', null, 'Juhut', null, null, 'Indonesia', 1.59, 'Card', '2016-06-17', 'Shipped') +,(4036, 217, 56, '2016-10-21', '2017-02-13', 'Todd Stephens', '63633 Columbus Avenue', null, 'Paccho', null, null, 'Peru', 5.09, 'Cash', '2016-04-25', 'New') +,(4037, 219, 60, '2016-09-22', '2016-11-08', 'Jean Webb', '0916 Grover Way', null, 'Kuršėnai', null, '81001', 'Denmark', 8.66, 'Cash', '2016-09-30', 'Shipped') +,(4038, 213, 3 , '2016-06-01', '2016-10-07', 'Heather Snyder', '44 Grayhawk Court', null, 'Haenam', null, null, 'Finland', 5.33, 'Cash', '2016-06-30', 'Complete') +,(4039, 201, 28, '2017-02-19', '2016-11-25', 'Janet Howard', '5351 Barby Trail', null, 'Shanghu', null, null, 'China', 9.18, 'Check', '2017-03-16', 'On Hold') +,(4040, 215, 74, '2016-09-14', '2016-06-23', 'Aaron Wheeler', '08 Burrows Avenue', null, 'Tân Sơn', null, null, 'Vietnam', 3.36, 'Card', '2017-03-05', 'New') +,(4041, 204, 79, '2016-09-27', '2017-02-15', 'Lori Watkins', '3 Pennsylvania Court', null, 'Victoria', null, 'VCT', 'India', 9.41, 'Card', '2016-08-12', 'New') +,(4042, 205, 92, '2016-11-03', '2016-05-11', 'Alice Miller', '7895 Amoth Avenue', null, 'Mae Lao', null, '57250', 'Thailand', 2.11, 'Cash', '2016-08-06', 'Shipped') +,(4043, 212, 82, '2016-11-17', '2016-04-19', 'Marilyn Nguyen', '25203 Meadow Ridge Plaza', null, 'Nine', 'Braga', '4775-446', 'Portugal', 6.03, 'Cash', '2016-05-07', 'On Hold') +,(4044, 218, 55, '2016-06-26', '2016-08-15', 'Ashley West', '08621 Porter Lane', null, 'Kingsport', 'Tennessee', '37665', 'United States', 8.23, 'Cash', '2016-12-17', 'New') +,(4045, 217, 53, '2016-05-07', '2017-02-25', 'Julia Fernandez', '91519 Harbort Way', null, 'Issoire', 'Auvergne', '63504 CEDEX', 'France', 1.14, 'Check', '2016-10-27', 'Complete') +,(4046, 211, 78, '2016-12-11', '2017-02-15', 'Willie Sims', '683 Caliangt Parkway', null, 'Balazar', 'Braga', '4805-005', 'Portugal', 6.57, 'Card', '2017-02-13', 'On Hold') +,(4047, 201, 77, '2016-05-20', '2017-02-19', 'Samuel Burke', '25 Grover Lane', null, 'Housuo', null, null, 'China', 6.99, 'Cash', '2016-08-12', 'New') +,(4048, 217, 72, '2016-11-06', '2016-09-29', 'Patricia Green', '29791 Thierer Street', null, 'Campamento', null, '052027', 'Argentina', 3.33, 'Check', '2016-03-24', 'Complete') +,(4049, 210, 98, '2016-08-24', '2016-04-16', 'Nicole Washington', '68 Monica Point', null, 'Cikaung', null, null, 'Indonesia', 5.78, 'Check', '2016-04-30', 'Complete') +,(4050, 215, 26, '2016-10-07', '2016-11-03', 'Marie Bryant', '36611 Schlimgen Place', null, 'Villa Francisca', null, '10215', 'Canada', 4.11, 'Check', '2016-07-29', 'Complete') +,(4051, 212, 51, '2016-05-19', '2017-03-16', 'Brandon Lane', '5 Duke Center', null, 'Soutinho', 'Porto', '4650-530', 'Portugal', 9.62, 'Check', '2016-11-28', 'Shipped') +,(4052, 205, 9 , '2016-07-19', '2016-09-05', 'Pamela Ferguson', '0 Mockingbird Crossing', null, 'Jefferson City', 'Missouri', '65105', 'United States', 9.98, 'Card', '2016-12-08', 'Shipped') +,(4053, 210, 42, '2016-04-09', '2017-02-05', 'Gloria Edwards', '8275 Sage Plaza', null, 'Yilkiqi', null, null, 'China', 5.21, 'Cash', '2016-11-10', 'On Hold') +,(4054, 211, 70, '2017-02-28', '2017-02-11', 'John Cole', '4679 Trailsway Circle', null, 'Sanlanbahai', null, null, 'China', 4.42, 'Card', '2017-01-06', 'Complete') +,(4055, 208, 65, '2017-01-11', '2017-02-14', 'Bobby Butler', '314 Jenna Crossing', null, 'Malusac', null, '2005', 'Philippines', 7.37, 'Cash', '2017-03-15', 'Shipped') +,(4056, 220, 15, '2016-07-12', '2016-09-06', 'Anthony Lane', '1 Packers Avenue', null, 'Batambak', null, null, 'Indonesia', 5.41, 'Card', '2016-11-21', 'On Hold') +,(4057, 220, 76, '2016-05-05', '2016-04-19', 'Karen Ray', '891 Raven Street', null, 'Chinju', null, null, 'Finland', 4.71, 'Cash', '2017-02-11', 'On Hold') +,(4058, 216, 90, '2017-01-26', '2016-12-19', 'Martha Gonzalez', '8695 Mandrake Place', null, 'Maythalūn', null, null, 'India', 1.75, 'Card', '2017-03-16', 'On Hold') +,(4059, 212, 43, '2016-09-20', '2017-02-11', 'Judy Daniels', '154 Lukken Court', null, 'Luoqiao', null, null, 'China', 4.63, 'Check', '2016-11-09', 'On Hold') +,(4060, 207, 80, '2016-04-29', '2016-07-01', 'Jane Stevens', '43 Kingsford Pass', null, 'Dobruševo', null, '7514', 'Denmark', 1.96, 'Cash', '2016-09-02', 'On Hold') +,(4061, 214, 89, '2016-10-09', '2016-09-09', 'Emily Miller', '5 Pearson Lane', null, 'East London', null, '5688', 'South Africa', 2.14, 'Card', '2016-06-10', 'Complete') +,(4062, 220, 8 , '2016-12-01', '2017-03-09', 'Sarah Johnson', '30 Chinook Lane', null, 'Selishche', null, '180536', 'Russia', 3.76, 'Card', '2016-11-18', 'On Hold') +,(4063, 220, 48, '2017-03-05', '2016-11-30', 'Carolyn Reyes', '72 Michigan Pass', null, 'Sukasenang', null, null, 'Indonesia', 6.52, 'Cash', '2016-05-20', 'Shipped') +,(4064, 214, 31, '2016-07-19', '2016-08-16', 'Kathryn Coleman', '43358 Packers Court', null, 'Przystajń', null, '42-141', 'Poland', 1.68, 'Card', '2016-12-13', 'Complete') +,(4065, 205, 41, '2016-12-09', '2016-03-20', 'Clarence Graham', '1675 Starling Point', null, 'Zangbawa', null, null, 'China', 5.82, 'Cash', '2016-07-08', 'Complete') +,(4066, 205, 41, '2016-05-25', '2016-11-15', 'David Harris', '00 Warner Court', null, 'Kabba', null, null, 'Netherlands', 7.24, 'Cash', '2016-09-24', 'New') +,(4067, 218, 13, '2016-07-24', '2016-12-06', 'Ruth Fields', '88567 Golf Course Plaza', null, 'Mauá', null, '09300-000', 'Brazil', 6.82, 'Cash', '2017-01-26', 'New') +,(4068, 206, 11, '2016-05-04', '2016-07-10', 'Todd Butler', '88 Graedel Point', null, 'Jablah', null, null, 'India', 3.83, 'Cash', '2016-06-17', 'On Hold') +,(4069, 215, 55, '2016-12-22', '2016-03-28', 'Catherine Perkins', '95 Troy Parkway', null, 'Frampol', null, '23-440', 'Poland', 7.6, 'Check', '2016-08-24', 'Shipped') +,(4070, 220, 40, '2016-10-17', '2016-12-01', 'Jeffrey Rodriguez', '3393 Weeping Birch Court', null, 'Burunday', null, null, 'Denmark', 2.52, 'Cash', '2016-09-06', 'Shipped') +,(4071, 218, 70, '2017-03-16', '2016-12-09', 'Rachel Butler', '79327 Ridgeway Circle', null, 'Dupnitsa', null, '2680', 'Denmark', 6.25, 'Check', '2016-04-02', 'Complete') +,(4072, 205, 45, '2017-01-22', '2016-05-15', 'Robin Fisher', '0 Susan Court', null, 'Morohongō', null, '357-0211', 'Japan', 4.42, 'Card', '2017-03-06', 'Complete') +,(4073, 217, 94, '2017-01-25', '2016-04-11', 'Ruth Carpenter', '4 Glacier Hill Road', null, 'Ngrejo', null, null, 'Indonesia', 4.9, 'Cash', '2016-08-13', 'On Hold') +,(4074, 219, 27, '2017-01-06', '2017-01-03', 'Irene Kelly', '0 Comanche Junction', null, 'Chao', null, null, 'Peru', 5.32, 'Check', '2016-11-20', 'On Hold') +,(4075, 214, 44, '2016-06-24', '2016-12-20', 'Douglas Sims', '81709 Helena Park', null, 'Dongmaku', null, null, 'China', 3.35, 'Card', '2017-02-27', 'Complete') +,(4076, 216, 27, '2016-09-23', '2016-10-05', 'Kenneth Rose', '5316 Dottie Way', null, 'Olszówka', null, '62-641', 'Poland', 2.63, 'Cash', '2016-05-27', 'Shipped') +,(4077, 211, 84, '2016-11-24', '2016-08-04', 'Jimmy Morgan', '42187 Shoshone Center', null, 'Saltsjöbaden', 'Stockholm', '133 41', 'Sweden', 1.11, 'Cash', '2016-09-09', 'On Hold') +,(4078, 202, 57, '2016-05-28', '2016-06-02', 'Annie Vasquez', '5 Lien Junction', null, 'Al Qaţn', null, null, 'South Africa', 2.73, 'Check', '2016-11-14', 'On Hold') +,(4079, 202, 64, '2016-07-05', '2016-05-20', 'Henry Mccoy', '58 Nelson Circle', null, 'Tsaghkahovit', null, null, 'India', 3.29, 'Card', '2016-08-18', 'Shipped') +,(4080, 216, 44, '2017-02-20', '2016-10-08', 'Norma Graham', '27 Heffernan Pass', null, 'Cairima', null, null, 'China', 7.02, 'Check', '2017-03-06', 'Complete') +,(4081, 218, 60, '2017-03-16', '2016-08-06', 'Albert Wright', '572 Vahlen Place', null, 'Drahovo', null, null, 'Ukraine', 4.92, 'Check', '2017-01-29', 'New') +,(4082, 219, 15, '2016-12-26', '2017-02-17', 'Jane Wells', '21 Merchant Way', null, 'Acacías', null, '507009', 'Argentina', 6.53, 'Card', '2016-06-04', 'Complete') +,(4083, 212, 61, '2016-06-24', '2016-03-23', 'Jesse Mitchell', '4060 Carioca Drive', null, 'Ntoroko', null, null, 'South Africa', 9.41, 'Cash', '2016-10-19', 'On Hold') +,(4084, 216, 3 , '2016-08-20', '2017-02-15', 'Carlos Brooks', '868 Pankratz Trail', null, 'Bat Khela', null, '18351', 'Iran', 1.0, 'Check', '2016-12-22', 'On Hold') +,(4085, 209, 25, '2016-12-03', '2016-06-01', 'Christopher Williamson', '8874 Starling Plaza', null, 'Tarbes', 'Midi-Pyrénées', '65951 CEDEX 9', 'France', 4.15, 'Card', '2017-02-04', 'New') +,(4086, 205, 2 , '2016-06-19', '2016-08-26', 'Joseph Wells', '7223 Carpenter Road', null, 'Chitral', null, '17200', 'Iran', 5.31, 'Card', '2016-07-22', 'Shipped') +,(4087, 216, 96, '2016-06-04', '2016-12-31', 'Teresa Thomas', '908 Ramsey Junction', null, 'Dzerzhinskiy', null, '140083', 'Russia', 4.29, 'Cash', '2017-03-03', 'Shipped') +,(4088, 203, 35, '2016-09-21', '2017-01-08', 'Scott Gomez', '70537 Tennessee Crossing', null, 'Bồng Sơn', null, null, 'Vietnam', 6.93, 'Cash', '2017-01-01', 'New') +,(4089, 210, 18, '2017-02-17', '2016-10-28', 'Nicole Miller', '0 Jackson Place', null, 'Šilheřovice', null, '747 15', 'Czech Republic', 5.64, 'Card', '2016-11-17', 'On Hold') +,(4090, 201, 8 , '2016-11-12', '2016-06-02', 'Donald Nguyen', '7320 Bunting Pass', null, 'Namioka', null, '953-0062', 'Japan', 7.07, 'Cash', '2016-09-29', 'Complete') +,(4091, 212, 67, '2016-04-08', '2016-11-21', 'Shawn Myers', '1844 Esch Plaza', null, 'Gračec', null, '10370', 'Canada', 4.84, 'Card', '2016-03-17', 'New') +,(4092, 220, 16, '2017-01-12', '2016-08-04', 'Daniel Armstrong', '2 Donald Alley', null, 'La Colorada', null, null, 'Denmark', 2.98, 'Check', '2016-12-08', 'Shipped') +,(4093, 203, 60, '2016-04-17', '2016-05-10', 'Henry Gonzales', '23848 6th Center', null, 'Guayatá', null, '153047', 'Argentina', 1.54, 'Check', '2016-04-18', 'New') +,(4094, 209, 37, '2016-08-07', '2016-04-26', 'Stephanie Snyder', '1152 Morning Park', null, 'Zhitan', null, null, 'China', 9.76, 'Card', '2016-05-23', 'New') +,(4095, 205, 46, '2016-09-01', '2017-02-25', 'Joan Butler', '98050 Mitchell Point', null, 'Bun Barat', null, null, 'Indonesia', 9.57, 'Card', '2017-01-25', 'Shipped') +,(4096, 211, 92, '2017-01-02', '2016-12-06', 'Gloria Murray', '8 Vidon Terrace', null, 'Rumenka', null, null, 'India', 5.33, 'Card', '2016-12-28', 'Shipped') +,(4097, 210, 66, '2016-07-04', '2016-05-30', 'Dorothy Simpson', '0 Pearson Point', null, 'Yevpatoriya', null, null, 'Ukraine', 3.52, 'Check', '2016-04-28', 'Complete') +,(4098, 219, 59, '2016-09-27', '2016-12-17', 'Katherine Brooks', '921 Anhalt Place', null, 'Rietavas', null, '90018', 'Denmark', 5.29, 'Check', '2016-12-19', 'Complete') +,(4099, 207, 65, '2016-07-06', '2016-10-11', 'Linda Reid', '89712 Dryden Point', null, 'Bronnitsy', null, '142451', 'Russia', 5.68, 'Card', '2016-07-08', 'New') +,(4100, 212, 61, '2016-04-14', '2016-05-02', 'Richard Carpenter', '17032 Melrose Crossing', null, 'White River', null, '1256', 'South Africa', 7.22, 'Card', '2016-08-03', 'Shipped') +,(4101, 206, 23, '2016-03-28', '2016-12-01', 'Clarence Coleman', '9167 Valley Edge Point', null, 'Guocun', null, null, 'China', 5.86, 'Check', '2016-08-19', 'Shipped') +,(4102, 202, 16, '2016-07-26', '2017-01-18', 'Kevin Dunn', '178 Park Meadow Avenue', null, 'Mlonggo', null, null, 'Indonesia', 4.15, 'Check', '2016-08-03', 'Complete') +,(4103, 211, 65, '2017-01-17', '2016-11-09', 'Keith Lopez', '689 Anthes Pass', null, 'Cibanten', null, null, 'Indonesia', 8.25, 'Check', '2016-10-15', 'Shipped') +,(4104, 218, 86, '2017-03-12', '2016-05-25', 'Chris Wright', '57974 Riverside Junction', null, 'Ban Mai', null, '80000', 'Thailand', 4.85, 'Cash', '2016-05-08', 'New') +,(4105, 215, 57, '2016-07-03', '2016-05-03', 'Michael Snyder', '93 Ohio Hill', null, 'Bryan', 'Texas', '77806', 'United States', 3.54, 'Card', '2016-08-10', 'Shipped') +,(4106, 210, 2 , '2017-03-07', '2016-09-18', 'David Day', '5024 Summerview Circle', null, 'Itapira', null, '13970-000', 'Brazil', 3.6, 'Cash', '2017-01-20', 'On Hold') +,(4107, 218, 4 , '2016-10-10', '2016-09-02', 'Lisa Kim', '4892 Huxley Center', null, 'Tanjungagung', null, null, 'Indonesia', 6.23, 'Cash', '2016-06-11', 'On Hold') +,(4108, 214, 26, '2016-06-02', '2016-10-05', 'Teresa Ellis', '1569 Mariners Cove Terrace', null, 'Maszkienice', null, '32-854', 'Poland', 7.65, 'Check', '2016-04-14', 'On Hold') +,(4109, 201, 51, '2016-10-07', '2017-02-02', 'Jimmy Lawson', '2165 Bluestem Center', null, 'Kampungbaru', null, null, 'Indonesia', 1.73, 'Check', '2016-09-30', 'Shipped') +,(4110, 215, 4 , '2016-08-21', '2017-02-05', 'Jerry Murray', '40070 Anderson Court', null, 'Vicente Guerrero', 'Veracruz Llave', '92440', 'Mexico', 1.57, 'Card', '2016-06-26', 'New') +,(4111, 210, 56, '2016-07-06', '2016-09-19', 'Joan Adams', '5322 Goodland Avenue', null, 'Paris 17', 'Île-de-France', '75853 CEDEX 17', 'France', 7.52, 'Cash', '2016-05-07', 'New') +,(4112, 214, 77, '2016-09-04', '2016-10-19', 'Chris Young', '7 Clove Center', null, 'Gongjiahe', null, null, 'China', 3.31, 'Card', '2016-11-06', 'New') +,(4113, 217, 62, '2016-07-18', '2016-09-30', 'Norma Oliver', '6002 Rieder Road', null, 'Lingbei', null, null, 'China', 8.85, 'Check', '2016-09-25', 'Complete') +,(4114, 213, 72, '2016-08-01', '2016-09-12', 'Douglas Day', '88 Helena Drive', null, 'Alcoutim', 'Faro', '8970-055', 'Portugal', 5.52, 'Card', '2016-12-19', 'New') +,(4115, 220, 6 , '2016-11-13', '2017-02-22', 'Janet James', '820 Westend Place', null, 'Springfield', 'Massachusetts', '01129', 'United States', 4.72, 'Cash', '2016-03-21', 'On Hold') +,(4116, 201, 72, '2016-09-01', '2016-09-07', 'Martha Lee', '2 Donald Hill', null, 'Majiang', null, null, 'China', 4.39, 'Cash', '2016-12-10', 'Shipped') +,(4117, 202, 40, '2017-02-04', '2016-12-09', 'Benjamin Cruz', '02989 Morningstar Avenue', null, 'Gīvī', null, null, 'Iran', 1.77, 'Check', '2017-01-29', 'Complete') +,(4118, 213, 48, '2016-12-24', '2017-01-06', 'Diane Porter', '7 Kensington Center', null, 'Pingyi', null, null, 'China', 4.69, 'Check', '2016-05-31', 'On Hold') +,(4119, 205, 69, '2016-06-30', '2016-05-01', 'Brandon Myers', '80411 Victoria Center', null, 'Punsu', null, null, 'Indonesia', 7.8, 'Cash', '2016-12-28', 'New') +,(4120, 220, 63, '2016-11-11', '2016-10-30', 'Beverly Garza', '2750 Sullivan Place', null, 'San Jose', null, '8427', 'Philippines', 8.15, 'Check', '2016-09-23', 'Shipped') +,(4121, 220, 32, '2016-05-05', '2016-09-05', 'Cynthia Simpson', '0731 Clarendon Point', null, 'Pomichna', null, null, 'Ukraine', 5.56, 'Card', '2017-02-23', 'On Hold') +,(4122, 201, 38, '2016-04-24', '2016-07-30', 'Janet West', '4800 Dottie Parkway', null, 'Tân Kỳ', null, null, 'Vietnam', 2.63, 'Cash', '2016-06-17', 'On Hold') +,(4123, 214, 24, '2016-04-04', '2016-06-11', 'Kevin Stone', '85 Duke Avenue', null, 'Shemonaīkha', null, null, 'Denmark', 9.99, 'Card', '2016-09-24', 'On Hold') +,(4124, 210, 9 , '2016-09-01', '2016-06-18', 'Amy Austin', '80663 Almo Park', null, 'Zaječov', null, '267 63', 'Czech Republic', 3.58, 'Card', '2016-08-29', 'Complete') +,(4125, 206, 78, '2017-02-09', '2016-07-07', 'Gregory Greene', '6 Commercial Junction', null, 'Hudong', null, null, 'China', 7.34, 'Cash', '2016-12-26', 'New') +,(4126, 215, 48, '2016-07-30', '2016-12-25', 'Laura Woods', '115 Ramsey Plaza', null, 'Allentown', 'Pennsylvania', '18105', 'United States', 4.92, 'Check', '2016-09-28', 'On Hold') +,(4127, 220, 19, '2016-03-29', '2016-05-27', 'Stephanie Reed', '452 Grayhawk Way', null, 'Sicheng', null, null, 'China', 1.1, 'Card', '2017-03-14', 'Shipped') +,(4128, 208, 64, '2016-06-03', '2016-08-13', 'Craig Gonzalez', '6028 West Street', null, 'Kliteh', null, null, 'Indonesia', 1.73, 'Cash', '2016-06-23', 'Complete') +,(4129, 201, 28, '2016-09-05', '2016-04-03', 'Raymond Gomez', '4 Stone Corner Place', null, 'Chechenglu', null, null, 'China', 4.32, 'Card', '2016-06-29', 'Complete') +,(4130, 215, 83, '2016-11-14', '2016-09-13', 'Kenneth Taylor', '7 Nevada Way', null, 'Alīpur', null, '34451', 'Iran', 5.07, 'Card', '2016-11-28', 'Complete') +,(4131, 203, 76, '2017-02-01', '2017-01-04', 'Jose Peters', '2493 Saint Paul Crossing', null, 'Bofuer', null, null, 'Indonesia', 9.85, 'Card', '2016-11-18', 'New') +,(4132, 207, 67, '2016-09-02', '2017-03-10', 'Martin West', '7251 Prairieview Place', null, 'Espinillo', null, '3460', 'Argentina', 7.9, 'Card', '2017-02-05', 'New') +,(4133, 208, 78, '2016-08-27', '2016-12-26', 'Louise Dunn', '4076 East Trail', null, 'Caramanta', null, '056047', 'Argentina', 1.28, 'Cash', '2016-12-22', 'Shipped') +,(4134, 209, 93, '2016-06-27', '2016-04-10', 'Gregory Stanley', '67 Namekagon Crossing', null, 'Pasarkayu', null, null, 'Indonesia', 2.83, 'Check', '2016-09-17', 'Complete') +,(4135, 206, 60, '2016-03-23', '2016-06-19', 'Ronald Palmer', '21 Old Shore Place', null, 'Tujing', null, null, 'China', 9.01, 'Check', '2016-12-22', 'New') +,(4136, 209, 10, '2016-11-07', '2016-11-21', 'Harry Robinson', '740 Toban Court', null, 'Liujiage', null, null, 'China', 7.13, 'Card', '2016-09-20', 'New') +,(4137, 214, 83, '2016-05-20', '2016-04-08', 'Joan Torres', '5167 Laurel Drive', null, 'Nirji', null, null, 'China', 9.81, 'Card', '2016-09-13', 'Complete') +,(4138, 207, 47, '2016-07-17', '2016-10-03', 'Carlos Jones', '4 Fuller Lane', null, 'Detroit', 'Michigan', '48258', 'United States', 8.02, 'Card', '2016-11-16', 'On Hold') +,(4139, 214, 92, '2016-07-17', '2017-01-23', 'Terry Freeman', '738 Vernon Road', null, 'Veverská Bítýška', null, '664 71', 'Czech Republic', 1.93, 'Check', '2016-04-04', 'Complete') +,(4140, 204, 92, '2016-06-09', '2016-05-06', 'Rose Hunt', '3242 Bunting Trail', null, 'Schaumburg', 'Illinois', '60193', 'United States', 7.65, 'Check', '2016-07-03', 'On Hold') +,(4141, 214, 12, '2016-11-19', '2017-03-16', 'Harry Reid', '395 Hauk Road', null, 'Rudky', null, null, 'Ukraine', 5.23, 'Card', '2017-01-18', 'On Hold') +,(4142, 212, 88, '2016-12-25', '2016-12-14', 'Fred Olson', '9311 Old Gate Park', null, 'Hejiabao', null, null, 'China', 4.02, 'Check', '2016-05-16', 'New') +,(4143, 217, 79, '2016-06-14', '2016-08-25', 'Paul Arnold', '08347 Comanche Pass', null, 'Bukovec', null, '739 84', 'Czech Republic', 6.02, 'Card', '2016-05-08', 'New') +,(4144, 216, 56, '2016-06-03', '2016-07-22', 'Carolyn Woods', '55 Stoughton Pass', null, 'Shengmi', null, null, 'China', 7.32, 'Card', '2016-07-27', 'New') +,(4145, 218, 84, '2016-07-02', '2016-11-05', 'Craig Schmidt', '2 Stephen Plaza', null, 'Arhust', null, null, 'Japan', 3.31, 'Check', '2016-06-17', 'New') +,(4146, 219, 13, '2016-09-02', '2017-01-29', 'Antonio Jordan', '452 Clemons Court', null, 'København', 'Region Hovedstaden', '1787', 'Denmark', 4.84, 'Card', '2016-11-10', 'Complete') +,(4147, 212, 51, '2016-10-19', '2017-01-20', 'Carol Evans', '1649 Crescent Oaks Road', null, 'Roubaix', 'Nord-Pas-de-Calais', '59100', 'France', 7.71, 'Card', '2017-03-08', 'On Hold') +,(4148, 217, 26, '2016-04-16', '2016-11-28', 'Steven Torres', '73679 Morning Drive', null, 'Ayotupas', null, null, 'Japan', 7.0, 'Card', '2016-06-12', 'On Hold') +,(4149, 215, 1 , '2017-02-06', '2016-10-27', 'Louis Watson', '03 Golf View Way', null, 'Madaoua', null, null, 'United Kingdom', 4.45, 'Check', '2016-07-22', 'Complete') +,(4150, 210, 100,'2017-01-14', '2016-11-12', 'Robin Reynolds', '5 Hagan Hill', null, 'Huacaschuque', null, null, 'Peru', 7.37, 'Check', '2017-02-09', 'New') +,(4151, 217, 24, '2016-09-06', '2016-10-11', 'Julia Gilbert', '3 Manitowish Avenue', null, 'Passos', 'Viana do Castelo', '4990-770', 'Portugal', 1.76, 'Card', '2016-07-16', 'New') +,(4152, 210, 90, '2016-05-26', '2016-07-14', 'Chris Chavez', '0 Birchwood Plaza', null, 'Odivelas', 'Lisboa', '2675-080', 'Portugal', 8.35, 'Cash', '2017-02-05', 'On Hold') +,(4153, 220, 79, '2016-10-27', '2016-08-14', 'Adam Morrison', '04510 West Circle', null, 'Weda', null, null, 'Japan', 8.84, 'Check', '2016-10-05', 'On Hold') +,(4154, 210, 57, '2017-02-21', '2016-09-28', 'Doris Snyder', '37027 Hintze Parkway', null, 'Vakhrushi', null, '613110', 'Russia', 2.75, 'Cash', '2016-12-02', 'Complete') +,(4155, 202, 24, '2017-02-03', '2016-08-03', 'Lisa Fisher', '919 Warner Circle', null, 'Kanbe', null, null, 'India', 2.48, 'Check', '2016-12-23', 'New') +,(4156, 213, 89, '2017-01-26', '2016-06-25', 'Gloria Murphy', '6750 Hansons Center', null, 'Saint Petersburg', null, '190990', 'Russia', 2.88, 'Cash', '2017-01-31', 'On Hold') +,(4157, 219, 83, '2016-08-03', '2016-06-15', 'Sara Mcdonald', '88365 Namekagon Park', null, 'Maofan', null, null, 'China', 4.69, 'Cash', '2016-09-22', 'New') +,(4158, 202, 79, '2016-08-13', '2016-10-08', 'John Barnes', '41 Springs Plaza', null, 'Carangola', null, '36800-000', 'Brazil', 4.84, 'Check', '2016-11-25', 'New') +,(4159, 215, 84, '2016-11-30', '2017-02-27', 'Bobby Matthews', '39153 Kipling Trail', null, 'Now Zād', null, null, 'Germany', 7.56, 'Cash', '2016-09-25', 'Shipped') +,(4160, 216, 40, '2016-07-27', '2016-12-05', 'Robin Greene', '899 Waubesa Alley', null, 'Vellinge', 'Skåne', '235 93', 'Sweden', 4.17, 'Card', '2016-12-22', 'New') +,(4161, 211, 91, '2017-03-12', '2016-09-11', 'Joseph Long', '3 Nobel Terrace', null, 'Bukabu', null, null, 'Japan', 2.26, 'Card', '2016-10-26', 'On Hold') +,(4162, 204, 94, '2016-10-08', '2016-09-26', 'Lisa Rodriguez', '880 Arizona Terrace', null, 'Elena', null, '5815', 'Argentina', 3.13, 'Cash', '2016-06-15', 'Shipped') +,(4163, 208, 49, '2017-02-23', '2016-06-05', 'Douglas Parker', '79 Mariners Cove Plaza', null, 'Şafāshahr', null, null, 'Iran', 1.83, 'Cash', '2016-10-26', 'On Hold') +,(4164, 201, 23, '2016-10-31', '2017-01-07', 'Laura Stewart', '97911 Meadow Ridge Road', null, 'Hexi', null, null, 'China', 1.24, 'Check', '2017-03-08', 'Shipped') +,(4165, 202, 27, '2017-01-07', '2016-10-05', 'Matthew Jordan', '29 Lakewood Trail', null, 'Kalkal Barat', null, null, 'Japan', 9.19, 'Card', '2016-09-03', 'Shipped') +,(4166, 218, 61, '2016-03-31', '2017-03-03', 'Denise Mason', '79 Carberry Alley', null, 'Vạn Giã', null, null, 'Vietnam', 7.78, 'Card', '2016-03-23', 'New') +,(4167, 220, 56, '2016-11-12', '2016-06-18', 'Phillip Castillo', '9910 Reindahl Parkway', null, 'Shangyanzhuang', null, null, 'China', 2.48, 'Card', '2016-07-14', 'Complete') +,(4168, 201, 41, '2016-07-10', '2016-07-29', 'Dorothy Nelson', '8 Hermina Terrace', null, 'Petrolina', null, '56300-000', 'Brazil', 1.52, 'Check', '2016-11-11', 'Shipped') +,(4169, 218, 100,'2016-12-18', '2016-12-02', 'Lawrence Willis', '21 Northland Trail', null, 'Bukor', null, null, 'India', 2.28, 'Card', '2017-01-06', 'New') +,(4170, 218, 6 , '2016-10-31', '2016-10-20', 'Jonathan Banks', '5748 Kings Hill', null, 'Tianning', null, null, 'China', 5.71, 'Check', '2016-06-02', 'Shipped') +,(4171, 211, 93, '2016-11-16', '2017-01-20', 'Gary Green', '001 Straubel Point', null, 'Huangshapu', null, null, 'China', 3.6, 'Cash', '2016-12-12', 'Complete') +,(4172, 203, 46, '2016-10-16', '2016-09-08', 'Nancy Bryant', '367 Gateway Park', null, 'Zhutang', null, null, 'China', 2.19, 'Cash', '2017-02-15', 'Shipped') +,(4173, 208, 72, '2016-08-27', '2016-04-09', 'Jeremy Rose', '8 Service Lane', null, 'Jinshandian', null, null, 'China', 8.09, 'Check', '2017-01-18', 'On Hold') +,(4174, 212, 88, '2016-06-25', '2016-08-21', 'Rebecca Gibson', '74 American Crossing', null, 'Canmang', null, null, 'China', 1.31, 'Card', '2017-02-08', 'New') +,(4175, 208, 75, '2017-02-28', '2017-01-03', 'Marilyn Hanson', '676 Service Crossing', null, 'Racławice', null, '32-222', 'Poland', 2.88, 'Check', '2017-02-18', 'New') +,(4176, 204, 1 , '2016-09-23', '2016-08-16', 'Denise Hanson', '8 Lakewood Crossing', null, 'Huaizhong', null, null, 'China', 9.48, 'Card', '2016-12-30', 'On Hold') +,(4177, 204, 20, '2017-03-02', '2016-12-27', 'John Shaw', '4752 Meadow Ridge Lane', null, 'Sosnovo-Ozerskoye', null, '612955', 'Russia', 7.17, 'Check', '2016-06-21', 'On Hold') +,(4178, 202, 30, '2016-03-20', '2016-10-17', 'Russell Fernandez', '5941 Esch Lane', null, 'Shuiyang', null, null, 'China', 1.04, 'Check', '2017-01-05', 'On Hold') +,(4179, 202, 27, '2017-01-14', '2016-07-31', 'Annie Ruiz', '67778 Butterfield Trail', null, 'Qalyūb', null, null, 'Germany', 5.51, 'Card', '2016-05-12', 'Shipped') +,(4180, 208, 1 , '2017-03-16', '2016-04-04', 'Ashley Gonzales', '88504 Johnson Street', null, 'Salingogan', null, '6417', 'Philippines', 7.56, 'Check', '2016-07-26', 'Shipped') +,(4181, 203, 70, '2016-03-25', '2016-11-06', 'Richard George', '54 3rd Circle', null, 'Haibeitou', null, null, 'China', 1.99, 'Cash', '2016-09-05', 'New') +,(4182, 219, 69, '2016-04-11', '2017-02-03', 'David Harris', '2 Menomonie Pass', null, 'Oslo', 'Oslo', '0188', 'Greece', 1.93, 'Check', '2016-11-30', 'Shipped') +,(4183, 211, 25, '2016-12-08', '2016-11-16', 'Catherine Reynolds', '302 Autumn Leaf Parkway', null, 'Lameiras', 'Lisboa', '2715-145', 'Portugal', 6.68, 'Cash', '2016-04-02', 'Shipped') +,(4184, 217, 73, '2016-06-19', '2016-11-29', 'Donald Moreno', '690 Laurel Park', null, 'Sinisian', null, '4212', 'Philippines', 3.1, 'Check', '2017-01-06', 'New') +,(4185, 210, 34, '2016-07-03', '2016-05-23', 'Ryan Thomas', '45044 Harper Place', null, 'Madīnat Lab‘ūs', null, null, 'South Africa', 6.31, 'Cash', '2016-06-27', 'Complete') +,(4186, 206, 91, '2016-05-26', '2016-09-09', 'Ruby Lynch', '8350 Karstens Parkway', null, 'Puyo', null, null, 'Argentina', 6.07, 'Check', '2016-05-10', 'Shipped') +,(4187, 208, 64, '2016-05-31', '2016-10-16', 'Linda Robinson', '6069 Chive Plaza', null, 'Joutseno', null, '54101', 'Finland', 3.11, 'Card', '2016-05-15', 'Shipped') +,(4188, 216, 41, '2017-02-07', '2016-03-28', 'Bonnie Morris', '2611 Comanche Junction', null, 'Lacombe', 'Alberta', 'T4L', 'Canada', 2.53, 'Check', '2016-08-31', 'New') +,(4189, 206, 51, '2016-12-20', '2016-12-08', 'Dennis Gardner', '2348 Blue Bill Park Crossing', null, 'Ngkiong', null, null, 'Japan', 5.1, 'Check', '2016-11-28', 'New') +,(4190, 220, 54, '2016-08-06', '2016-08-27', 'Carolyn Matthews', '817 Ohio Point', null, 'Orekhovo-Zuyevo', null, '142609', 'Russia', 7.52, 'Card', '2016-03-22', 'On Hold') +,(4191, 207, 96, '2016-07-03', '2016-06-18', 'Jesse Parker', '3 Eastwood Terrace', null, 'Berezovo', null, null, 'Ukraine', 6.64, 'Check', '2016-05-07', 'New') +,(4192, 216, 18, '2016-06-05', '2017-01-11', 'Ann Gilbert', '6 Oak Valley Lane', null, 'Caijiang', null, null, 'China', 3.72, 'Cash', '2016-11-17', 'On Hold') +,(4193, 208, 22, '2016-06-26', '2017-02-22', 'Martha Hawkins', '57581 Union Road', null, 'Ilinden', null, '1041', 'Denmark', 5.64, 'Cash', '2016-05-23', 'On Hold') +,(4194, 207, 42, '2017-02-03', '2017-01-08', 'Jeffrey Hart', '83 Green Ridge Point', null, 'Wangcheng', null, null, 'China', 1.15, 'Check', '2016-12-07', 'Shipped') +,(4195, 217, 28, '2016-10-18', '2016-05-01', 'Joseph Riley', '54373 Coleman Street', null, 'Karangbungur', null, null, 'Japan', 5.9, 'Cash', '2016-04-23', 'Complete') +,(4196, 207, 78, '2016-07-09', '2016-07-15', 'Brian Dean', '9 Stone Corner Hill', null, 'Dambulla', null, '21100', 'United Kingdom', 5.15, 'Check', '2016-07-09', 'On Hold') +,(4197, 204, 38, '2016-07-19', '2016-04-13', 'Christine Campbell', '47302 Porter Junction', null, 'Dananshan', null, null, 'China', 6.74, 'Card', '2016-11-07', 'Complete') +,(4198, 201, 7 , '2017-03-02', '2016-08-16', 'Ruth Mcdonald', '401 Erie Avenue', null, 'Borkowice', null, '26-422', 'Poland', 3.24, 'Cash', '2016-04-17', 'New') +,(4199, 216, 87, '2016-12-14', '2017-03-05', 'Jean Armstrong', '450 Sullivan Avenue', null, 'Carpenter', null, '2009', 'Philippines', 4.25, 'Cash', '2016-07-11', 'Complete') +,(4200, 218, 8 , '2017-02-01', '2016-04-17', 'Gary Price', '775 Butterfield Lane', null, 'Vaasa', null, '66999', 'Finland', 5.36, 'Card', '2016-07-09', 'Shipped') +,(4201, 217, 77, '2016-11-10', '2016-11-13', 'Carolyn Scott', '5878 Badeau Lane', null, 'Kazanskaya', null, '396614', 'Russia', 7.94, 'Card', '2016-12-09', 'New') +,(4202, 204, 10, '2016-08-12', '2016-03-21', 'Earl Anderson', '9 Roth Court', null, 'Governor’s Harbour', null, null, 'Canada', 2.47, 'Card', '2016-08-06', 'Complete') +,(4203, 204, 54, '2016-05-26', '2016-04-18', 'Elizabeth Kelley', '70 Burrows Street', null, 'Fucheng', null, null, 'China', 9.94, 'Cash', '2016-08-24', 'Shipped') +,(4204, 208, 58, '2017-03-09', '2016-04-17', 'Julia Wilson', '46476 Burning Wood Crossing', null, 'Koper', null, '6600', 'India', 3.82, 'Card', '2016-08-26', 'New') +,(4205, 208, 85, '2016-05-04', '2016-03-18', 'Jeffrey Oliver', '39 Tennessee Avenue', null, 'Jejkowice', null, '44-290', 'Poland', 7.22, 'Card', '2016-09-23', 'Shipped') +,(4206, 220, 8 , '2016-06-16', '2017-01-03', 'Angela Walker', '579 Miller Street', null, 'Hà Tĩnh', null, null, 'Vietnam', 1.04, 'Check', '2016-05-18', 'Complete') +,(4207, 212, 55, '2016-07-04', '2016-11-09', 'Karen Hansen', '953 Manufacturers Pass', null, 'Lysekil', 'Västra Götaland', '453 35', 'Sweden', 8.81, 'Check', '2016-03-18', 'New') +,(4208, 217, 96, '2016-10-26', '2016-07-11', 'Patricia West', '1 Browning Alley', null, 'Huayang', null, null, 'China', 7.54, 'Card', '2016-09-15', 'New') +,(4209, 203, 71, '2016-08-04', '2017-01-01', 'Phillip Gardner', '30438 Mariners Cove Way', null, 'Phu Khiao', null, '36110', 'Thailand', 3.03, 'Check', '2016-03-31', 'Shipped') +,(4210, 207, 30, '2017-03-08', '2016-07-21', 'Fred Howard', '45981 Hovde Trail', null, 'Suncheon', null, null, 'Finland', 1.13, 'Check', '2016-07-14', 'On Hold') +,(4211, 217, 57, '2016-05-28', '2017-03-11', 'George Wagner', '24863 Messerschmidt Road', null, 'Ningzhong', null, null, 'China', 6.5, 'Check', '2016-07-26', 'New') +,(4212, 213, 19, '2016-11-28', '2016-06-09', 'Clarence Russell', '85 Kropf Circle', null, 'Ouro Branco', null, '59347-000', 'Brazil', 6.88, 'Check', '2016-04-02', 'On Hold') +,(4213, 217, 51, '2016-06-25', '2016-05-25', 'Jane Johnston', '1708 Corscot Pass', null, 'Şafāshahr', null, null, 'Iran', 9.16, 'Cash', '2016-10-12', 'Complete') +,(4214, 203, 88, '2017-02-19', '2016-03-25', 'John Adams', '100 Hollow Ridge Way', null, 'Satita', null, null, 'India', 3.01, 'Cash', '2016-11-19', 'Shipped') +,(4215, 202, 12, '2017-01-26', '2016-10-07', 'Diana Graham', '12 Esch Park', null, 'Krasnokamensk', null, '662955', 'Russia', 9.29, 'Check', '2016-06-10', 'Shipped') +,(4216, 211, 66, '2016-07-19', '2016-11-30', 'John Henry', '448 Hanover Trail', null, 'Phitsanulok', null, '65000', 'Thailand', 7.23, 'Card', '2016-09-22', 'Shipped') +,(4217, 218, 98, '2016-11-20', '2016-11-12', 'Donna Bradley', '92136 Arkansas Avenue', null, 'Balong Wetan', null, null, 'Japan', 7.79, 'Card', '2016-12-18', 'New') +,(4218, 206, 5 , '2016-05-04', '2016-08-19', 'Kevin Harper', '2911 Laurel Point', null, 'Patapan', null, null, 'Japan', 1.52, 'Card', '2016-03-20', 'On Hold') +,(4219, 205, 76, '2016-11-15', '2016-12-12', 'Margaret Hanson', '9603 Northridge Junction', null, 'Mwembe', null, null, 'India', 4.76, 'Cash', '2017-03-14', 'Shipped') +,(4220, 206, 62, '2016-12-30', '2016-10-23', 'Henry Bradley', '84 Lake View Plaza', null, 'Zheleznovodsk', null, '357408', 'Russia', 8.08, 'Cash', '2017-02-23', 'Complete') +,(4221, 218, 91, '2016-08-07', '2016-08-31', 'Jane Fowler', '2484 Hoepker Hill', null, 'Huangcun', null, null, 'China', 9.34, 'Card', '2017-01-10', 'Complete') +,(4222, 207, 19, '2016-05-22', '2016-06-25', 'Kimberly Peterson', '5851 Carey Crossing', null, 'Pochuta', null, '04008', 'Japan', 9.16, 'Card', '2016-04-25', 'Shipped') +,(4223, 203, 69, '2017-02-13', '2016-09-18', 'Nicholas Simpson', '9 Hudson Way', null, 'Chashan', null, null, 'China', 5.37, 'Check', '2017-01-01', 'On Hold') +,(4224, 214, 71, '2017-02-28', '2016-06-18', 'Carol Rodriguez', '78 Grayhawk Place', null, 'Luntas', null, null, 'Indonesia', 1.76, 'Card', '2016-10-06', 'Shipped') +,(4225, 207, 34, '2017-03-06', '2016-07-20', 'Jessica Mason', '65 Merrick Lane', null, 'Křižanov', null, '789 01', 'Czech Republic', 9.75, 'Card', '2016-12-28', 'New') +,(4226, 209, 74, '2016-06-04', '2017-01-15', 'Jeffrey Sims', '05441 Wayridge Pass', null, 'Rennes', 'Bretagne', '35047 CEDEX 9', 'France', 9.09, 'Check', '2016-05-19', 'Shipped') +,(4227, 205, 74, '2016-09-09', '2017-01-06', 'Arthur Simmons', '733 Logan Circle', null, 'Dzhankoy', null, null, 'Ukraine', 2.51, 'Check', '2017-01-25', 'New') +,(4228, 207, 52, '2017-01-30', '2017-01-08', 'Kevin Williams', '3561 6th Trail', null, 'Narganá', null, null, 'Denmark', 7.32, 'Cash', '2016-06-24', 'On Hold') +,(4229, 209, 76, '2016-05-05', '2016-07-11', 'Joe Stewart', '0314 Ryan Parkway', null, 'San Jose', 'Oaxaca', '69570', 'Mexico', 9.28, 'Check', '2016-05-06', 'Shipped') +,(4230, 214, 2 , '2016-09-19', '2016-09-08', 'Walter Barnes', '80695 Stone Corner Road', null, 'Busdi', null, '6210', 'Philippines', 5.97, 'Check', '2016-07-19', 'Shipped') +,(4231, 211, 55, '2016-08-27', '2016-10-04', 'Sean Holmes', '91 Becker Drive', null, 'Gezan', null, null, 'China', 3.81, 'Check', '2016-06-14', 'Shipped') +,(4232, 209, 14, '2016-04-01', '2017-03-06', 'Sandra Perez', '45373 Buhler Park', null, 'Ust’-Kut', null, '162176', 'Russia', 4.25, 'Cash', '2017-01-22', 'Shipped') +,(4233, 205, 96, '2016-09-27', '2016-07-03', 'Sara Kelly', '73457 Buhler Court', null, 'Sima', null, null, 'Canada', 7.2, 'Card', '2016-12-14', 'Complete') +,(4234, 217, 74, '2016-11-22', '2017-01-18', 'Edward Reid', '02 Westport Trail', null, 'Tchaourou', null, null, 'India', 3.5, 'Cash', '2016-12-25', 'New') +,(4235, 206, 69, '2016-03-17', '2016-10-29', 'Betty Cook', '83578 Ohio Avenue', null, 'Stockholm', 'Stockholm', '101 22', 'Sweden', 6.17, 'Check', '2016-09-02', 'On Hold') +,(4236, 217, 97, '2017-02-06', '2016-07-01', 'Diana Ellis', '49 Jenna Circle', null, 'Yanshan', null, null, 'China', 6.06, 'Check', '2016-07-16', 'Complete') +,(4237, 216, 17, '2016-11-30', '2016-10-02', 'Donald Miller', '8581 Farragut Junction', null, 'Yosowilangun', null, null, 'Indonesia', 8.9, 'Check', '2016-11-01', 'Complete') +,(4238, 203, 21, '2017-02-09', '2016-12-14', 'Eric Coleman', '9242 Badeau Street', null, 'Caiyuan', null, null, 'China', 4.1, 'Check', '2016-06-07', 'Shipped') +,(4239, 213, 23, '2016-09-15', '2016-11-04', 'Heather Vasquez', '454 Gale Hill', null, 'Susoh', null, null, 'Indonesia', 1.59, 'Check', '2016-10-25', 'New') +,(4240, 208, 2 , '2016-05-28', '2016-05-21', 'Martin Sims', '30 Bunting Center', null, 'Efeng', null, null, 'China', 1.92, 'Cash', '2016-12-15', 'Complete') +,(4241, 202, 85, '2017-02-05', '2016-08-13', 'Catherine Washington', '637 Hermina Court', null, 'San Francisco', 'Jalisco', '46175', 'Mexico', 6.49, 'Card', '2016-12-20', 'On Hold') +,(4242, 204, 17, '2016-10-04', '2016-05-13', 'Gary Kennedy', '2 Grasskamp Point', null, 'Famaillá', null, '4132', 'Argentina', 9.78, 'Card', '2016-12-03', 'Complete') +,(4243, 205, 86, '2016-04-15', '2016-05-25', 'Pamela Parker', '43642 Utah Point', null, 'Santa Rosa', 'Nuevo Leon', '67803', 'Mexico', 1.78, 'Card', '2017-02-16', 'Shipped') +,(4244, 208, 3 , '2016-08-02', '2017-03-13', 'Michelle Russell', '947 Jenna Place', null, 'Kinshasa', null, null, 'Canada', 8.43, 'Cash', '2016-04-13', 'New') +,(4245, 210, 32, '2016-06-16', '2016-07-14', 'Lois Jenkins', '1 Pepper Wood Road', null, 'Kallinge', 'Blekinge', '372 53', 'Sweden', 4.77, 'Cash', '2016-03-17', 'On Hold') +,(4246, 203, 39, '2017-02-04', '2016-08-08', 'Kelly Ramirez', '20490 Eagle Crest Circle', null, 'Baraba', null, '623509', 'Russia', 8.65, 'Cash', '2016-10-04', 'Complete') +,(4247, 202, 24, '2016-05-05', '2016-11-26', 'Harold Gray', '9033 Elmside Plaza', null, 'N’dalatando', null, null, 'Netherlands', 2.78, 'Cash', '2016-07-24', 'New') +,(4248, 210, 16, '2017-01-27', '2017-03-14', 'Dennis Fisher', '4 Sage Road', null, 'Niederanven', null, 'L-6948', 'United Kingdom', 1.26, 'Check', '2016-05-12', 'On Hold') +,(4249, 203, 20, '2016-07-21', '2016-12-08', 'Antonio Wells', '99743 Algoma Hill', null, 'Mūdīyah', null, null, 'South Africa', 4.36, 'Card', '2016-05-28', 'Complete') +,(4250, 217, 88, '2016-05-31', '2016-10-17', 'William Gonzales', '3258 Holy Cross Way', null, 'Yangdun', null, null, 'China', 7.06, 'Check', '2016-04-13', 'New') +,(4251, 211, 1 , '2017-03-04', '2016-10-27', 'Ronald Ward', '5 Logan Terrace', null, 'Tanahmerah', null, null, 'Indonesia', 4.38, 'Card', '2016-09-22', 'On Hold') +,(4252, 217, 87, '2016-12-29', '2016-09-18', 'Gloria Boyd', '10 Grayhawk Hill', null, 'Boromlya', null, null, 'Ukraine', 4.84, 'Cash', '2016-08-01', 'On Hold') +,(4253, 212, 99, '2017-02-02', '2016-04-28', 'Raymond Scott', '3 Donald Trail', null, 'Lakshmīpur', null, '1553', 'Canada', 8.37, 'Cash', '2016-12-06', 'On Hold') +,(4254, 201, 7 , '2016-11-28', '2016-04-11', 'Arthur Hamilton', '95 Doe Crossing Avenue', null, 'Purwosari', null, null, 'Indonesia', 6.84, 'Card', '2016-06-14', 'Shipped') +,(4255, 220, 100,'2016-09-30', '2016-10-08', 'Jean Wagner', '5690 Meadow Valley Alley', null, 'Svedala', 'Skåne', '233 94', 'Sweden', 8.57, 'Check', '2017-01-06', 'Shipped') +,(4256, 218, 78, '2016-04-28', '2016-04-03', 'Kimberly Rose', '6067 Twin Pines Hill', null, 'Capinzal', null, '89665-000', 'Brazil', 6.07, 'Check', '2016-05-18', 'New') +,(4257, 213, 44, '2016-11-04', '2016-03-28', 'Doris Foster', '170 Chive Court', null, 'Lang', null, null, 'China', 1.72, 'Card', '2016-10-20', 'Shipped') +,(4258, 208, 46, '2017-01-11', '2016-09-25', 'Teresa Reynolds', '3 Prairie Rose Alley', null, 'Tashang', null, null, 'China', 4.84, 'Card', '2016-10-16', 'On Hold') +,(4259, 215, 89, '2016-07-07', '2016-12-29', 'Christine Turner', '0746 Heffernan Center', null, 'Henggang', null, null, 'China', 6.81, 'Cash', '2016-08-21', 'New') +,(4260, 210, 23, '2016-10-26', '2017-02-10', 'Jimmy Jordan', '903 Anniversary Trail', null, 'Elaiochóri', null, null, 'Greece', 9.66, 'Cash', '2017-01-10', 'Complete') +,(4261, 207, 20, '2016-11-07', '2017-02-17', 'Andrew Baker', '3 Pennsylvania Park', null, 'Kansas City', 'Missouri', '64130', 'United States', 5.46, 'Cash', '2016-11-20', 'Complete') +,(4262, 203, 32, '2017-02-21', '2016-11-17', 'Diana Dixon', '18520 Maryland Drive', null, 'Santa Catalina', null, '2701', 'Philippines', 4.66, 'Card', '2017-01-09', 'On Hold') +,(4263, 210, 10, '2017-02-28', '2017-02-26', 'Karen Miller', '5608 Moose Court', null, 'Torres Vedras', 'Lisboa', '2560-234', 'Portugal', 5.71, 'Card', '2016-11-30', 'New') +,(4264, 214, 39, '2017-01-09', '2016-10-24', 'Angela Austin', '9659 Vera Point', null, 'Santiaoshi', null, null, 'China', 6.59, 'Check', '2016-05-07', 'Shipped') +,(4265, 203, 3 , '2016-11-11', '2016-11-22', 'Steve Snyder', '7626 Hoepker Junction', null, 'Wulan Hada', null, null, 'China', 5.67, 'Cash', '2017-01-01', 'New') +,(4266, 218, 94, '2016-04-06', '2016-10-02', 'Kevin Daniels', '24 Chinook Point', null, 'Bhairāhawā', null, null, 'United Kingdom', 8.21, 'Card', '2016-05-12', 'Shipped') +,(4267, 203, 58, '2016-11-14', '2016-03-28', 'Patricia Welch', '60375 Corry Street', null, 'Solidaridad', 'Veracruz Llave', '94330', 'Mexico', 2.77, 'Card', '2017-02-02', 'On Hold') +,(4268, 218, 2 , '2016-07-02', '2016-08-14', 'Wanda Reynolds', '965 Calypso Circle', null, 'Dera Bugti', null, '80100', 'Iran', 8.86, 'Check', '2017-01-30', 'On Hold') +,(4269, 216, 47, '2017-03-11', '2016-07-16', 'Harold Williamson', '14332 Texas Junction', null, 'Mzimba', null, null, 'India', 2.47, 'Cash', '2016-06-01', 'Shipped') +,(4270, 213, 62, '2016-11-09', '2017-02-07', 'Juan Fox', '17 Eagan Crossing', null, 'Xiayang', null, null, 'China', 7.63, 'Card', '2017-02-17', 'Shipped') +,(4271, 211, 70, '2016-04-16', '2016-04-26', 'Ryan Long', '0 Harper Circle', null, 'Blagoveshchenka', null, '658670', 'Russia', 3.2, 'Card', '2016-09-10', 'Complete') +,(4272, 206, 29, '2016-03-25', '2016-10-07', 'Frank Cole', '07 Westend Place', null, 'Laixi', null, null, 'China', 1.93, 'Cash', '2016-05-01', 'New') +,(4273, 209, 25, '2016-05-06', '2016-04-13', 'Tammy Wilson', '74278 Grim Pass', null, 'Åkersberga', 'Stockholm', '184 70', 'Sweden', 2.83, 'Card', '2016-10-29', 'Complete') +,(4274, 206, 82, '2017-02-07', '2017-03-06', 'Joan Gonzales', '40 Stephen Street', null, 'Tlogoagung', null, null, 'Indonesia', 3.44, 'Check', '2016-10-14', 'Complete') +,(4275, 203, 91, '2016-10-10', '2016-11-04', 'Jeffrey Hughes', '38 Toban Plaza', null, 'Privas', 'Rhône-Alpes', '07004 CEDEX', 'France', 8.33, 'Card', '2016-04-23', 'On Hold') +,(4276, 210, 89, '2016-05-14', '2016-09-03', 'Rachel Martin', '08 Lake View Hill', null, 'Sandgerði', null, '245', 'India', 2.07, 'Cash', '2016-06-07', 'Complete') +,(4277, 208, 97, '2016-04-06', '2016-07-02', 'Laura Harper', '1 Dexter Street', null, 'Xintaimen', null, null, 'China', 8.08, 'Check', '2016-05-11', 'Shipped') +,(4278, 215, 3 , '2017-03-04', '2017-03-08', 'Annie Rivera', '5975 Debra Park', null, 'Canchaque', null, null, 'Peru', 5.65, 'Check', '2016-04-09', 'Complete') +,(4279, 201, 6 , '2017-03-01', '2016-08-06', 'Pamela Graham', '2 Monument Avenue', null, 'Danxi', null, null, 'China', 2.05, 'Check', '2016-05-23', 'New') +,(4280, 202, 35, '2017-02-04', '2016-06-09', 'Joseph Jenkins', '00001 Fairfield Center', null, 'Mashtūl as Sūq', null, null, 'Germany', 5.32, 'Card', '2016-12-28', 'New') +,(4281, 203, 76, '2016-05-19', '2016-07-29', 'Eugene Garcia', '8308 Onsgard Lane', null, 'Limoncito', null, null, 'India', 4.07, 'Card', '2016-10-20', 'Shipped') +,(4282, 204, 27, '2016-07-20', '2016-09-26', 'Kevin Anderson', '8 Thierer Center', null, 'Saint-Étienne', 'Rhône-Alpes', '42963 CEDEX 9', 'France', 4.88, 'Card', '2016-07-21', 'Complete') +,(4283, 214, 50, '2016-11-27', '2016-06-14', 'Robin Parker', '51949 Forster Parkway', null, 'Laval', 'Pays de la Loire', '53009 CEDEX', 'France', 1.04, 'Check', '2016-04-20', 'Complete') +,(4284, 214, 74, '2016-11-29', '2016-12-08', 'Kelly Palmer', '2 Hauk Hill', null, 'Östersund', 'Jämtland', '831 17', 'Sweden', 4.26, 'Card', '2016-10-08', 'Complete') +,(4285, 214, 76, '2016-10-22', '2016-05-05', 'Diane Freeman', '5441 Petterle Way', null, 'El Tambo', null, null, 'Peru', 7.17, 'Check', '2016-09-27', 'New') +,(4286, 209, 96, '2016-11-08', '2016-08-26', 'Kathleen Adams', '423 Talisman Point', null, 'Kurume', null, '963-8846', 'Japan', 1.99, 'Cash', '2016-05-19', 'On Hold') +,(4287, 204, 76, '2016-10-18', '2017-01-15', 'Teresa Mendoza', '818 Atwood Lane', null, 'Mosteiro', 'Viana do Castelo', '4980-125', 'Portugal', 3.29, 'Cash', '2016-10-03', 'On Hold') +,(4288, 210, 45, '2016-10-15', '2016-12-14', 'Irene Anderson', '4 Rutledge Alley', null, 'Saparua', null, null, 'Indonesia', 4.35, 'Card', '2016-10-13', 'On Hold') +,(4289, 209, 61, '2017-02-12', '2016-07-15', 'Terry Bennett', '351 Johnson Circle', null, 'Quiling', null, '2902', 'Philippines', 6.77, 'Card', '2016-07-20', 'New') +,(4290, 203, 1 , '2017-03-02', '2016-08-25', 'Ronald Mccoy', '73609 Waywood Center', null, 'Zheleznodorozhnyy', null, '238411', 'Russia', 1.05, 'Cash', '2016-06-10', 'New') +,(4291, 211, 73, '2016-09-13', '2016-04-17', 'Andrew Matthews', '820 Lawn Crossing', null, 'Japeri', null, '26400-000', 'Brazil', 1.22, 'Cash', '2016-09-08', 'New') +,(4292, 215, 15, '2016-12-26', '2016-10-04', 'Melissa Chapman', '88384 Ohio Park', null, 'Dayr al Ghuşūn', null, null, 'India', 9.89, 'Check', '2016-08-14', 'Shipped') +,(4293, 210, 18, '2016-11-23', '2016-12-12', 'Russell Griffin', '6 Eliot Lane', null, 'Changshu City', null, null, 'China', 9.37, 'Check', '2016-05-10', 'On Hold') +,(4294, 206, 95, '2016-06-24', '2017-01-21', 'Jeffrey Gray', '04078 Hudson Drive', null, 'Luangwa', null, null, 'India', 2.58, 'Cash', '2016-06-15', 'Shipped') +,(4295, 215, 85, '2016-10-23', '2017-01-29', 'Lori Frazier', '724 Logan Drive', null, 'Gent', 'Vlaanderen', '9052', 'Denmark', 8.59, 'Cash', '2017-01-01', 'New') +,(4296, 217, 83, '2016-04-08', '2017-02-07', 'Joan Ortiz', '90 Merchant Avenue', null, 'Irasan', null, '3120', 'Philippines', 4.64, 'Card', '2016-09-01', 'Complete') +,(4297, 211, 29, '2016-07-13', '2017-02-06', 'John Stanley', '680 Artisan Pass', null, 'Borås', 'Västra Götaland', '504 75', 'Sweden', 1.77, 'Cash', '2016-07-12', 'On Hold') +,(4298, 208, 65, '2016-12-28', '2016-04-19', 'Dorothy Bell', '397 Kim Place', null, 'Zhongxin', null, null, 'China', 1.2, 'Check', '2017-01-28', 'On Hold') +,(4299, 201, 43, '2017-01-12', '2016-08-07', 'Doris Ramirez', '181 Prentice Terrace', null, 'Severnyy', null, '141707', 'Russia', 2.65, 'Card', '2016-08-13', 'Shipped') +,(4300, 207, 27, '2016-11-10', '2016-11-01', 'Elizabeth Harrison', '067 Talisman Trail', null, 'Guangang', null, null, 'China', 4.78, 'Check', '2016-04-30', 'On Hold') +,(4301, 206, 64, '2016-08-14', '2017-01-13', 'Judith Howard', '55095 Sloan Alley', null, 'Longhua', null, null, 'China', 1.93, 'Card', '2016-10-29', 'New') +,(4302, 213, 33, '2017-01-19', '2016-05-23', 'Julia Simpson', '87375 Londonderry Parkway', null, 'Fufang', null, null, 'China', 9.23, 'Card', '2016-11-15', 'Shipped') +,(4303, 220, 49, '2016-08-01', '2016-04-23', 'Elizabeth Bell', '60 Ridgeview Trail', null, 'Infantas', 'Braga', '4810-578', 'Portugal', 3.22, 'Check', '2017-02-01', 'Complete') +,(4304, 217, 56, '2016-09-07', '2016-08-13', 'Ernest Andrews', '231 Graceland Terrace', null, 'Pindamonhangaba', null, '12400-000', 'Brazil', 2.77, 'Card', '2016-04-04', 'On Hold') +,(4305, 219, 44, '2016-06-11', '2016-03-27', 'Jeffrey Lopez', '76434 Havey Court', null, 'Khvalovo', null, '187435', 'Russia', 8.84, 'Cash', '2016-04-14', 'Shipped') +,(4306, 212, 16, '2016-05-29', '2016-12-31', 'Ralph Weaver', '15 Armistice Alley', null, 'Odienné', null, null, 'Canada', 7.1, 'Card', '2017-01-09', 'Shipped') +,(4307, 210, 16, '2016-10-19', '2017-01-10', 'Mary Stevens', '1928 Aberg Park', null, 'Dzwola', null, '23-304', 'Poland', 4.04, 'Card', '2016-08-24', 'Complete') +,(4308, 220, 50, '2016-09-23', '2016-09-16', 'Douglas Welch', '9 Ryan Circle', null, 'Babakanloa', null, null, 'Indonesia', 1.11, 'Card', '2016-10-13', 'Shipped') +,(4309, 217, 99, '2016-10-17', '2017-01-01', 'Raymond Cruz', '0402 Burning Wood Alley', null, 'Bucay', null, '2805', 'Philippines', 9.27, 'Cash', '2016-06-02', 'Complete') +,(4310, 219, 65, '2016-04-14', '2016-05-14', 'Sara Frazier', '43 Truax Terrace', null, 'Halton', 'England', 'LS9', 'United Kingdom', 5.56, 'Check', '2016-12-04', 'New') +,(4311, 220, 17, '2017-02-03', '2016-07-09', 'Sarah Lane', '414 Gina Point', null, 'Fulong', null, null, 'China', 3.35, 'Cash', '2016-12-27', 'New') +,(4312, 205, 77, '2017-02-27', '2016-04-10', 'Michelle Bradley', '16664 Towne Point', null, 'Yangchun', null, null, 'China', 8.64, 'Cash', '2017-01-28', 'Complete') +,(4313, 210, 68, '2016-08-29', '2016-10-27', 'Marie Porter', '7802 Hovde Plaza', null, 'Redakodi', null, null, 'Indonesia', 1.97, 'Cash', '2016-11-08', 'Complete') +,(4314, 207, 41, '2016-08-08', '2016-08-31', 'Melissa Moore', '438 Mendota Way', null, 'Bensonville', null, null, 'United Kingdom', 7.97, 'Cash', '2017-01-17', 'New') +,(4315, 212, 96, '2016-08-08', '2016-07-27', 'Katherine Bell', '76 Manley Park', null, 'Xagmakajor', null, null, 'China', 7.49, 'Cash', '2016-03-29', 'New') +,(4316, 209, 67, '2016-09-26', '2017-02-03', 'Katherine Elliott', '86 Nelson Point', null, 'Boavista', 'Aveiro', '4520-104', 'Portugal', 1.92, 'Card', '2016-04-28', 'Complete') +,(4317, 219, 40, '2016-10-09', '2016-12-21', 'Dorothy Rose', '75962 Basil Drive', null, 'Pécs', 'Baranya', '7610', 'Denmark', 3.23, 'Card', '2017-02-21', 'Shipped') +,(4318, 209, 68, '2017-01-15', '2017-01-03', 'Larry Hicks', '5985 Crest Line Road', null, 'Lingqiao', null, null, 'China', 2.77, 'Check', '2017-01-20', 'Complete') +,(4319, 214, 55, '2016-07-14', '2017-03-05', 'Paula Rodriguez', '6 Lawn Court', null, 'Simajia', null, null, 'China', 6.33, 'Check', '2016-04-08', 'Shipped') +,(4320, 203, 83, '2016-12-26', '2016-10-07', 'Sharon Richards', '43297 Rigney Avenue', null, 'Salto', null, null, 'India', 7.32, 'Check', '2016-09-14', 'Complete') +,(4321, 215, 29, '2016-12-27', '2016-07-21', 'Craig Day', '22 Thierer Center', null, 'Alberton', 'Prince Edward Island', 'P7K', 'Canada', 5.32, 'Check', '2016-04-02', 'On Hold') +,(4322, 207, 80, '2016-12-06', '2016-05-21', 'Donna Butler', '4149 Bartelt Point', null, 'Carbonear', 'Newfoundland and Labrador', 'A1Y', 'Canada', 3.1, 'Check', '2016-10-03', 'New') +,(4323, 216, 31, '2016-06-27', '2017-03-13', 'Carolyn Ferguson', '97225 Bartelt Avenue', null, 'Tinalmud', null, '1531', 'Philippines', 7.11, 'Cash', '2016-05-22', 'Complete') +,(4324, 212, 78, '2016-05-19', '2016-11-14', 'Peter Romero', '22977 Westridge Terrace', null, 'Toulouse', 'Midi-Pyrénées', '31029 CEDEX 4', 'France', 2.97, 'Check', '2016-09-09', 'Shipped') +,(4325, 213, 73, '2017-02-18', '2016-09-22', 'Jose Greene', '40351 Rusk Place', null, 'Vila Nova de Gaia', 'Porto', '4400-005', 'Portugal', 5.76, 'Cash', '2016-12-12', 'Shipped') +,(4326, 208, 62, '2017-02-14', '2016-11-13', 'Betty Anderson', '8403 Melody Center', null, 'Būsh', null, null, 'Germany', 9.56, 'Check', '2016-10-08', 'Shipped') +,(4327, 220, 56, '2016-09-06', '2016-08-17', 'Amanda Frazier', '47 Dapin Center', null, 'Pasirmanggu', null, null, 'Indonesia', 2.25, 'Card', '2016-07-11', 'On Hold') +,(4328, 201, 24, '2016-10-29', '2017-01-25', 'Douglas Foster', '6953 Stoughton Avenue', null, 'Bokhan', null, '669310', 'Russia', 1.26, 'Card', '2016-07-06', 'Complete') +,(4329, 206, 33, '2017-03-09', '2017-03-12', 'Louis Brown', '76 Little Fleur Park', null, 'Shazhenxi', null, null, 'China', 3.4, 'Check', '2016-08-09', 'Complete') +,(4330, 205, 61, '2016-04-14', '2016-09-26', 'Elizabeth Butler', '82 Springview Road', null, 'Kimito', null, '11710', 'Finland', 1.92, 'Card', '2016-10-18', 'Shipped') +,(4331, 220, 39, '2016-06-10', '2016-04-07', 'Albert Flores', '19 Talmadge Hill', null, 'Almelo', 'Provincie Overijssel', '7604', 'Netherlands', 4.23, 'Check', '2016-12-15', 'Shipped') +,(4332, 217, 47, '2016-10-25', '2016-09-28', 'Kimberly Fowler', '0 Trailsway Crossing', null, 'Iwata', null, '925-0145', 'Japan', 8.14, 'Check', '2016-06-06', 'On Hold') +,(4333, 209, 12, '2016-12-25', '2016-10-31', 'Joe Powell', '5 Everett Drive', null, 'Bergen', 'Hordaland', '5895', 'Greece', 8.02, 'Cash', '2016-09-05', 'Shipped') +,(4334, 219, 1 , '2016-08-12', '2017-02-18', 'Virginia Collins', '78693 Cordelia Point', null, 'San Benito', null, '8423', 'Philippines', 8.4, 'Cash', '2017-01-06', 'Complete') +,(4335, 220, 59, '2017-02-26', '2016-11-05', 'Mary Howard', '5 Golf View Street', null, 'Gjinkar', null, null, 'Canada', 3.54, 'Card', '2016-06-09', 'Complete') +,(4336, 220, 19, '2017-02-09', '2017-01-26', 'Ronald Stevens', '57 Old Shore Crossing', null, 'Bureng', null, null, 'United Kingdom', 8.21, 'Card', '2016-12-21', 'On Hold') +,(4337, 204, 59, '2016-05-14', '2016-07-08', 'James Evans', '44078 Warner Drive', null, 'Amurzet', null, '679230', 'Russia', 9.35, 'Card', '2016-07-22', 'Complete') +,(4338, 213, 96, '2016-09-02', '2016-11-10', 'Willie Snyder', '361 Stone Corner Pass', null, 'Sindangsari', null, null, 'Indonesia', 9.32, 'Check', '2016-04-10', 'Complete') +,(4339, 220, 30, '2017-03-04', '2016-08-16', 'Julie Black', '2922 Grasskamp Alley', null, 'Cotonou', null, null, 'India', 9.14, 'Cash', '2017-03-07', 'Shipped') +,(4340, 206, 17, '2016-11-18', '2016-11-24', 'Roy Olson', '4 Shopko Hill', null, 'Binagadi', null, null, 'India', 5.22, 'Check', '2016-10-14', 'Shipped') +,(4341, 202, 28, '2016-11-18', '2017-02-18', 'Evelyn Lawrence', '90 Crownhardt Center', null, 'Bayshint', null, null, 'Japan', 7.25, 'Check', '2016-12-16', 'On Hold') +,(4342, 209, 37, '2016-10-30', '2016-06-07', 'John Rodriguez', '69 Golf View Avenue', null, 'Hezuoqiao', null, null, 'China', 8.23, 'Cash', '2016-11-05', 'On Hold') +,(4343, 203, 51, '2016-04-09', '2016-12-17', 'Ruth Kim', '0027 Dunning Pass', null, 'Kuteynykove', null, null, 'Ukraine', 2.46, 'Cash', '2016-03-28', 'New') +,(4344, 217, 34, '2016-12-16', '2016-10-11', 'Shawn Patterson', '36 Little Fleur Circle', null, 'Xiekou', null, null, 'China', 6.43, 'Cash', '2016-03-27', 'New') +,(4345, 213, 59, '2016-10-30', '2016-07-10', 'Nancy Jones', '47088 Crowley Junction', null, 'Promna', null, '26-803', 'Poland', 5.67, 'Cash', '2016-12-02', 'Complete') +,(4346, 217, 70, '2016-12-27', '2016-10-06', 'Deborah Bishop', '1 Summer Ridge Circle', null, 'Bunobogu', null, null, 'Indonesia', 7.57, 'Cash', '2016-09-19', 'New') +,(4347, 203, 30, '2016-05-26', '2016-08-14', 'Steve Hunt', '4393 Summer Ridge Crossing', null, 'Hošťka', null, '348 06', 'Czech Republic', 5.78, 'Cash', '2016-12-30', 'Shipped') +,(4348, 203, 9 , '2016-04-14', '2016-10-19', 'Betty Black', '23 Nova Junction', null, 'Sępólno Krajeńskie', null, '89-400', 'Poland', 8.55, 'Cash', '2016-09-23', 'New') +,(4349, 211, 95, '2017-01-28', '2016-04-13', 'Gregory Wood', '96 Grasskamp Point', null, 'Psará', null, null, 'Greece', 8.47, 'Cash', '2016-12-18', 'Shipped') +,(4350, 218, 97, '2016-03-22', '2016-04-13', 'Martin Martinez', '5 Towne Crossing', null, 'Kista', 'Stockholm', '164 45', 'Sweden', 8.07, 'Check', '2016-05-15', 'On Hold') +,(4351, 215, 80, '2016-06-20', '2016-11-05', 'Margaret Cook', '82 Eggendart Junction', null, 'Omuthiya', null, null, 'India', 9.71, 'Cash', '2016-09-18', 'Shipped') +,(4352, 211, 15, '2016-09-02', '2017-01-23', 'Justin Myers', '6734 Continental Drive', null, 'Tadabliro', null, null, 'Indonesia', 2.23, 'Cash', '2016-05-12', 'New') +,(4353, 216, 77, '2016-10-09', '2016-07-31', 'Jane Ruiz', '2743 Harbort Center', null, 'Pasar', null, null, 'Indonesia', 4.88, 'Cash', '2016-06-04', 'New') +,(4354, 202, 53, '2017-03-15', '2016-06-21', 'Philip Bradley', '6 Bartillon Park', null, 'Aimorés', null, '35200-000', 'Brazil', 5.01, 'Cash', '2016-05-16', 'New') +,(4355, 220, 14, '2017-01-03', '2016-05-07', 'Phillip White', '1 Schurz Crossing', null, 'Tuzhai', null, null, 'China', 7.06, 'Check', '2016-10-18', 'New') +,(4356, 208, 85, '2016-12-26', '2016-07-28', 'George Ryan', '92 Morrow Road', null, 'Nijmegen', 'Provincie Gelderland', '6519', 'Netherlands', 5.76, 'Cash', '2016-12-14', 'New') +,(4357, 208, 73, '2016-04-06', '2016-04-01', 'Evelyn Rose', '134 Milwaukee Lane', null, 'Tiechang', null, null, 'China', 5.37, 'Cash', '2016-12-19', 'Shipped') +,(4358, 202, 77, '2016-04-14', '2016-10-21', 'Janet Robertson', '09309 Dottie Park', null, 'Ljubešćica', null, '42222', 'Canada', 5.27, 'Cash', '2016-06-07', 'On Hold') +,(4359, 202, 35, '2016-05-08', '2017-01-27', 'Diana Perry', '95535 Lotheville Center', null, 'Kvasice', null, '768 21', 'Czech Republic', 7.1, 'Card', '2016-07-27', 'New') +,(4360, 210, 86, '2016-11-23', '2016-10-12', 'Todd Elliott', '6737 Melrose Road', null, 'Catumbela', null, null, 'Netherlands', 2.19, 'Check', '2016-04-05', 'Shipped') +,(4361, 209, 45, '2016-04-07', '2016-06-30', 'Emily Dean', '143 Ridge Oak Alley', null, 'Diriá', null, null, 'United Kingdom', 1.33, 'Cash', '2016-12-31', 'Complete') +,(4362, 208, 88, '2016-05-08', '2016-04-14', 'Eric Simpson', '8113 Graceland Junction', null, 'Borovoy', null, '309135', 'Russia', 3.81, 'Card', '2016-06-21', 'Shipped') +,(4363, 211, 84, '2016-12-31', '2016-06-05', 'Alan Chapman', '461 Westport Center', null, 'Inayauan', null, '3336', 'Philippines', 8.62, 'Card', '2017-03-03', 'Complete') +,(4364, 205, 100,'2016-09-10', '2017-02-19', 'Denise Dixon', '066 Gerald Avenue', null, 'Venëv', null, '301320', 'Russia', 4.82, 'Check', '2016-04-22', 'Shipped') +,(4365, 211, 7 , '2017-03-09', '2017-03-16', 'Douglas Nelson', '03051 Grasskamp Way', null, 'Póvoa', 'Vila Real', '4870-130', 'Portugal', 1.67, 'Check', '2016-08-30', 'Complete') +,(4366, 213, 24, '2016-04-25', '2016-06-06', 'Louis Frazier', '65 Buhler Circle', null, 'Bīleh Savār', null, null, 'Iran', 9.53, 'Check', '2016-12-20', 'Complete') +,(4367, 207, 8 , '2016-09-24', '2016-04-06', 'Theresa Stanley', '487 Birchwood Point', null, 'T’et’ri Tsqaro', null, null, 'United Kingdom', 5.06, 'Cash', '2016-04-08', 'New') +,(4368, 207, 76, '2016-12-21', '2016-05-03', 'Sean Chapman', '3917 Miller Pass', null, 'Andaray', null, null, 'Peru', 4.36, 'Check', '2016-07-25', 'New') +,(4369, 215, 90, '2016-03-30', '2017-01-03', 'Eugene Brooks', '137 1st Hill', null, 'Independencia', 'Tamaulipas', '89888', 'Mexico', 9.56, 'Check', '2017-01-23', 'Shipped') +,(4370, 204, 33, '2016-12-17', '2016-10-22', 'Joan Martin', '24 Hayes Point', null, 'Dobrzeń Wielki', null, '46-081', 'Poland', 8.87, 'Cash', '2016-07-09', 'Shipped') +,(4371, 204, 13, '2016-12-11', '2016-05-07', 'Martha Mendoza', '0 Sommers Point', null, 'Jiamachi', null, null, 'China', 1.53, 'Check', '2016-08-05', 'On Hold') +,(4372, 211, 90, '2016-10-27', '2017-02-14', 'Joan Allen', '64 Bluestem Drive', null, 'Conde', 'Braga', '4815-019', 'Portugal', 2.66, 'Card', '2016-09-25', 'Shipped') +,(4373, 208, 81, '2016-08-20', '2017-03-16', 'Tammy Richards', '15541 Ramsey Alley', null, 'Gunungkendeng', null, null, 'Indonesia', 5.66, 'Cash', '2016-05-03', 'Shipped') +,(4374, 216, 19, '2017-01-22', '2016-09-10', 'Andrea Medina', '3 Goodland Pass', null, 'Ḩarīb', null, null, 'South Africa', 1.03, 'Card', '2016-10-12', 'Shipped') +,(4375, 213, 8 , '2016-09-13', '2016-12-21', 'Antonio Carpenter', '453 Duke Point', null, 'Rouen', 'Haute-Normandie', '76029 CEDEX', 'France', 5.11, 'Cash', '2017-01-26', 'Complete') +,(4376, 207, 83, '2016-11-29', '2016-04-13', 'Jeffrey Smith', '7 Old Shore Center', null, 'Licuan', null, '2500', 'Philippines', 8.55, 'Cash', '2016-11-08', 'New') +,(4377, 216, 13, '2016-11-06', '2016-10-08', 'Mark Perkins', '57 Troy Court', null, 'Mojimán', null, null, 'Canada', 2.03, 'Card', '2017-01-06', 'Shipped') +,(4378, 219, 4 , '2016-08-05', '2017-03-04', 'Louis Jordan', '5 Armistice Street', null, 'Labège', 'Midi-Pyrénées', '31673 CEDEX', 'France', 3.61, 'Cash', '2016-12-07', 'New') +,(4379, 218, 66, '2017-02-26', '2016-11-18', 'Fred Johnson', '4 Dovetail Crossing', null, 'Santa Cruz', null, null, 'India', 1.08, 'Cash', '2016-04-02', 'Complete') +,(4380, 201, 27, '2016-09-01', '2016-05-08', 'Rose Harvey', '8 Canary Plaza', null, 'Pingtan', null, null, 'China', 6.9, 'Check', '2016-12-09', 'Complete') +,(4381, 209, 89, '2017-02-04', '2016-08-30', 'Christine Thomas', '008 Carberry Alley', null, 'Logung', null, null, 'Indonesia', 6.13, 'Card', '2016-05-09', 'On Hold') +,(4382, 204, 47, '2016-08-11', '2016-12-27', 'Juan Reed', '4337 Del Sol Hill', null, 'Dayeuhluhur', null, null, 'Indonesia', 7.76, 'Card', '2016-06-15', 'New') +,(4383, 215, 30, '2016-08-07', '2016-07-22', 'Diane Gray', '899 Oneill Pass', null, 'Alegrete', null, '97540-000', 'Brazil', 5.62, 'Cash', '2016-12-26', 'Complete') +,(4384, 212, 88, '2016-07-23', '2016-05-07', 'Louise Baker', '46092 Kedzie Court', null, 'Ban Mo', null, '18130', 'Thailand', 4.0, 'Card', '2016-07-11', 'Complete') +,(4385, 203, 62, '2017-02-20', '2016-10-01', 'Paul Thompson', '77444 Northwestern Pass', null, 'Francisco I Madero', 'Coahuila De Zaragoza', '26010', 'Mexico', 3.99, 'Check', '2016-12-23', 'Shipped') +,(4386, 218, 26, '2016-09-02', '2016-06-10', 'Anne Kim', '67814 Buena Vista Court', null, 'Sanjie', null, null, 'China', 9.61, 'Card', '2016-04-05', 'New') +,(4387, 219, 20, '2017-03-05', '2016-12-19', 'Matthew Gutierrez', '33055 Evergreen Crossing', null, 'Cusco', null, null, 'Peru', 6.52, 'Check', '2017-02-17', 'Shipped') +,(4388, 219, 71, '2016-09-06', '2016-05-24', 'Janet Hernandez', '9243 Forest Run Parkway', null, 'Ulanov', null, null, 'Ukraine', 3.04, 'Cash', '2016-09-20', 'New') +,(4389, 207, 2 , '2016-04-25', '2017-02-16', 'Louis Chapman', '878 Roth Alley', null, 'Kusak', null, '423430', 'Russia', 5.78, 'Cash', '2017-02-18', 'On Hold') +,(4390, 218, 64, '2016-09-25', '2016-09-22', 'Joe Carpenter', '56 Artisan Park', null, 'Xinjiang', null, null, 'China', 8.2, 'Card', '2016-12-01', 'On Hold') +,(4391, 218, 64, '2016-07-30', '2016-07-23', 'Charles Harper', '7 Sutherland Road', null, 'Tatarbunary', null, null, 'Ukraine', 4.62, 'Cash', '2016-06-29', 'Shipped') +,(4392, 206, 92, '2016-05-05', '2016-07-17', 'Craig Reynolds', '3 Erie Park', null, 'East End', null, null, 'Canada', 2.03, 'Check', '2017-02-03', 'New') +,(4393, 212, 45, '2016-06-29', '2016-06-17', 'Raymond Mcdonald', '792 Brown Trail', null, 'Yangfang', null, null, 'China', 4.44, 'Card', '2017-02-27', 'Complete') +,(4394, 211, 87, '2016-09-28', '2016-04-03', 'Sandra Medina', '7 Eagan Circle', null, 'Baratleke', null, null, 'Indonesia', 4.34, 'Cash', '2017-01-05', 'Complete') +,(4395, 203, 57, '2016-08-18', '2017-03-05', 'Sean Carpenter', '33 Dottie Park', null, 'Sokal’', null, null, 'Ukraine', 5.39, 'Cash', '2017-02-22', 'On Hold') +,(4396, 203, 87, '2016-06-19', '2016-07-10', 'Alice Ferguson', '0399 Dixon Hill', null, 'Privolzhskiy', null, '413138', 'Russia', 8.74, 'Cash', '2016-12-23', 'New') +,(4397, 216, 61, '2016-08-01', '2016-12-25', 'Diana Nguyen', '5052 Rigney Junction', null, 'Guaynabo', 'Pr', '00971', 'Germany', 5.36, 'Check', '2016-07-12', 'On Hold') +,(4398, 211, 52, '2016-12-04', '2016-05-11', 'Earl Gutierrez', '32 Summit Avenue', null, 'Maqbanah', null, null, 'South Africa', 5.82, 'Cash', '2016-07-21', 'New') +,(4399, 208, 71, '2016-05-16', '2017-02-25', 'Gloria Gordon', '5 Prentice Trail', null, 'Xichang', null, null, 'China', 3.2, 'Card', '2016-05-24', 'Complete') +,(4400, 218, 7 , '2016-09-06', '2016-03-21', 'Robert Wheeler', '83 Logan Circle', null, 'Zhongshan', null, null, 'China', 9.15, 'Cash', '2016-08-16', 'Shipped') +,(4401, 210, 53, '2016-09-05', '2016-05-01', 'Walter Williamson', '8459 American Plaza', null, 'Santo Rosario', null, '3114', 'Philippines', 7.71, 'Check', '2017-01-25', 'New') +,(4402, 216, 92, '2016-10-10', '2016-03-28', 'Jonathan James', '164 Bonner Hill', null, 'Vale de Mendiz', 'Vila Real', '5085-105', 'Portugal', 2.96, 'Card', '2016-07-15', 'Shipped') +,(4403, 212, 12, '2016-09-15', '2016-11-11', 'Judy Williams', '207 Scofield Place', null, 'Lawa-an', null, '5706', 'Philippines', 9.68, 'Check', '2016-04-30', 'On Hold') +,(4404, 213, 83, '2016-04-25', '2016-05-14', 'Amy Olson', '84189 Schurz Circle', null, 'Ogoja', null, null, 'Netherlands', 5.18, 'Card', '2016-11-02', 'Complete') +,(4405, 209, 7 , '2016-12-01', '2016-08-30', 'Donna Vasquez', '82460 Ridgeway Hill', null, 'La Guacamaya', null, null, 'Canada', 5.32, 'Card', '2017-02-11', 'Complete') +,(4406, 209, 66, '2016-09-14', '2016-05-13', 'Susan Jacobs', '17 Morningstar Lane', null, 'Chedao', null, null, 'China', 4.12, 'Cash', '2016-11-11', 'New') +,(4407, 214, 57, '2016-05-04', '2016-06-03', 'Kathryn Burns', '116 Hollow Ridge Park', null, 'Comagascas', null, '1950', 'Philippines', 1.05, 'Cash', '2017-01-28', 'New') +,(4408, 201, 64, '2017-02-11', '2016-06-08', 'Doris Bennett', '090 Lien Place', null, 'Luotang', null, null, 'China', 1.35, 'Cash', '2016-12-16', 'Complete') +,(4409, 209, 41, '2017-02-28', '2016-09-05', 'Cynthia Robertson', '6 Eliot Center', null, 'Abu Dhabi', null, null, 'Denmark', 4.21, 'Check', '2017-01-01', 'New') +,(4410, 215, 24, '2016-08-28', '2016-10-30', 'Jonathan Parker', '0 Weeping Birch Hill', null, 'Cienfuegos', null, null, 'Denmark', 1.69, 'Card', '2017-01-21', 'Shipped') +,(4411, 206, 10, '2016-08-30', '2016-12-06', 'Bobby Foster', '8279 Ridgeview Place', null, 'Cruz Alta', null, '98000-000', 'Brazil', 7.5, 'Cash', '2016-09-09', 'On Hold') +,(4412, 205, 65, '2016-12-13', '2017-02-27', 'Phyllis Moore', '806 Acker Drive', null, 'Paoay', null, '2902', 'Philippines', 4.63, 'Cash', '2017-01-11', 'Shipped') +,(4413, 211, 2 , '2016-12-05', '2016-12-07', 'Kevin Gordon', '00875 Sherman Lane', null, 'Wansheng', null, null, 'China', 2.7, 'Card', '2016-07-31', 'New') +,(4414, 219, 25, '2017-02-08', '2016-06-22', 'Jack Mccoy', '2 Killdeer Center', null, 'Gresik', null, null, 'Indonesia', 4.1, 'Check', '2017-03-05', 'On Hold') +,(4415, 220, 9 , '2017-01-02', '2016-08-28', 'Margaret Fuller', '1960 Parkside Hill', null, 'Kafr Zaytā', null, null, 'India', 1.09, 'Cash', '2016-08-07', 'New') +,(4416, 214, 100,'2017-01-07', '2017-02-07', 'Melissa Nichols', '6 Lakewood Gardens Avenue', null, 'Stockholm', 'Stockholm', '113 90', 'Sweden', 4.1, 'Cash', '2016-03-31', 'On Hold') +,(4417, 210, 87, '2017-01-23', '2016-12-14', 'William Webb', '84 Mifflin Junction', null, 'Kanungu', null, null, 'South Africa', 4.38, 'Card', '2016-05-05', 'Complete') +,(4418, 213, 29, '2017-01-05', '2017-02-07', 'Anne Gonzales', '7 Myrtle Plaza', null, 'Davila', null, '2012', 'Philippines', 5.45, 'Cash', '2016-05-23', 'Shipped') +,(4419, 212, 94, '2016-10-19', '2016-12-20', 'Kathleen Graham', '22 Forest Run Hill', null, 'Mollepampa', null, null, 'Peru', 5.86, 'Check', '2016-07-31', 'Shipped') +,(4420, 201, 32, '2016-11-29', '2016-09-24', 'Diana Sanders', '8925 Kennedy Parkway', null, 'San Miguel de Tucumán', null, '4137', 'Argentina', 3.71, 'Cash', '2016-08-10', 'Complete') +,(4421, 208, 58, '2017-03-02', '2016-04-03', 'Willie Wright', '60 Old Shore Alley', null, 'Jinjiang', null, null, 'China', 6.72, 'Card', '2016-10-09', 'Shipped') +,(4422, 206, 59, '2016-04-19', '2016-12-29', 'Frank Evans', '785 Little Fleur Center', null, 'El Triunfo', null, null, 'Argentina', 9.43, 'Check', '2016-05-13', 'New') +,(4423, 209, 68, '2016-08-22', '2016-11-20', 'Phillip Carter', '6398 John Wall Center', null, 'Shouxihu', null, null, 'China', 4.22, 'Check', '2016-10-18', 'New') +,(4424, 205, 31, '2016-10-05', '2016-10-09', 'Lillian Gomez', '17560 Melrose Point', null, 'Milwaukee', 'Wisconsin', '53205', 'United States', 1.16, 'Check', '2016-04-17', 'On Hold') +,(4425, 202, 7 , '2016-07-24', '2017-02-22', 'John Ortiz', '45 Vera Place', null, 'Kiel', 'Schleswig-Holstein', '24109', 'Germany', 5.86, 'Cash', '2016-10-13', 'On Hold') +,(4426, 214, 80, '2016-10-04', '2016-09-01', 'Brandon Fields', '94792 Jackson Hill', null, 'San Juan', 'Pr', '00918', 'Germany', 2.54, 'Check', '2016-12-19', 'On Hold') +,(4427, 209, 23, '2016-06-23', '2016-04-29', 'Willie Hart', '20 Sloan Terrace', null, 'Mount Darwin', null, null, 'India', 3.71, 'Cash', '2016-09-22', 'Complete') +,(4428, 211, 7 , '2016-09-07', '2016-10-28', 'Walter Montgomery', '67285 Crowley Road', null, 'Wailolong', null, null, 'Indonesia', 9.79, 'Check', '2016-04-05', 'Complete') +,(4429, 217, 10, '2017-03-02', '2016-11-27', 'Sara Williamson', '72 Monterey Circle', null, 'Salvacion', null, '1114', 'Philippines', 3.33, 'Card', '2016-05-18', 'On Hold') +,(4430, 210, 12, '2017-02-18', '2016-03-17', 'Wayne Sanders', '21302 Valley Edge Pass', null, 'Balakasap', null, null, 'Indonesia', 2.18, 'Card', '2016-06-02', 'New') +,(4431, 220, 80, '2016-10-01', '2016-09-28', 'Cynthia Allen', '1 Karstens Avenue', null, 'Santo António das Areias', 'Portalegre', '7330-254', 'Portugal', 3.4, 'Cash', '2016-08-21', 'New') +,(4432, 211, 95, '2017-02-04', '2016-03-17', 'Jonathan Hughes', '93993 Fairview Junction', null, 'Buje', null, '52460', 'Canada', 5.19, 'Cash', '2016-10-01', 'New') +,(4433, 208, 67, '2017-02-11', '2016-06-01', 'Gerald Wright', '77811 Dennis Point', null, 'Hohoe', null, null, 'United Kingdom', 3.25, 'Card', '2016-07-15', 'New') +,(4434, 201, 53, '2016-12-25', '2017-01-07', 'Roy Anderson', '182 High Crossing Terrace', null, 'Bajiazi', null, null, 'China', 8.8, 'Card', '2017-02-11', 'Shipped') +,(4435, 207, 3 , '2016-05-30', '2016-04-07', 'Brenda Wright', '98 Kim Drive', null, 'Lillehammer', 'Oppland', '2605', 'Greece', 5.76, 'Cash', '2017-02-02', 'On Hold') +,(4436, 204, 29, '2016-07-19', '2016-07-05', 'Philip Price', '16 Brown Plaza', null, 'Čapljina', null, null, 'India', 9.62, 'Cash', '2016-11-05', 'On Hold') +,(4437, 210, 80, '2016-10-13', '2016-04-24', 'Michelle Webb', '4160 Everett Point', null, 'Waepana', null, null, 'Indonesia', 9.54, 'Cash', '2016-07-11', 'Complete') +,(4438, 209, 6 , '2016-12-31', '2017-01-27', 'Heather Fields', '10 Fairview Center', null, 'Złotniki Kujawskie', null, '88-180', 'Poland', 1.81, 'Cash', '2017-03-15', 'Shipped') +,(4439, 216, 53, '2017-02-01', '2016-09-12', 'Ryan Long', '0 Gateway Avenue', null, 'Pizhanka', null, '613380', 'Russia', 9.34, 'Cash', '2016-07-02', 'New') +,(4440, 211, 25, '2017-02-03', '2016-10-13', 'Joyce Stewart', '61 Burrows Street', null, 'Kushelevka', null, '658381', 'Russia', 6.4, 'Cash', '2017-01-29', 'On Hold') +,(4441, 215, 93, '2016-03-21', '2016-11-17', 'Walter Arnold', '97613 Pond Avenue', null, 'Looc', null, '5507', 'Philippines', 1.09, 'Cash', '2016-10-05', 'Shipped') +,(4442, 214, 10, '2016-05-10', '2016-05-31', 'Irene Simmons', '36 Larry Court', null, 'Rozhdestveno', null, '399768', 'Russia', 4.82, 'Check', '2017-01-13', 'Complete') +,(4443, 208, 19, '2017-02-09', '2017-02-05', 'Christina Mccoy', '1482 Rockefeller Point', null, 'Rybatskoye', null, '196851', 'Russia', 1.62, 'Cash', '2016-09-14', 'Shipped') +,(4444, 210, 98, '2017-02-15', '2016-05-17', 'Marie Fowler', '04 Prairie Rose Junction', null, 'Chicago', 'Illinois', '60604', 'United States', 7.47, 'Card', '2017-02-22', 'Complete') +,(4445, 218, 32, '2017-02-12', '2016-05-20', 'Louise Bell', '3 Charing Cross Pass', null, 'Selce', null, '1219', 'Denmark', 4.47, 'Cash', '2016-04-01', 'New') +,(4446, 209, 25, '2016-09-22', '2016-12-03', 'Barbara Black', '697 Oneill Drive', null, 'Shanghang', null, null, 'China', 4.66, 'Check', '2016-11-09', 'On Hold') +,(4447, 209, 100,'2016-08-26', '2017-01-16', 'James Holmes', '77 Marcy Court', null, 'Estreito', null, '65975-000', 'Brazil', 9.85, 'Check', '2016-12-04', 'On Hold') +,(4448, 210, 72, '2016-06-25', '2016-12-07', 'Kenneth Williams', '6400 Milwaukee Hill', null, 'Wanshan', null, null, 'China', 3.66, 'Card', '2016-06-09', 'On Hold') +,(4449, 213, 16, '2016-12-13', '2016-08-07', 'Joshua Jacobs', '8 Judy Park', null, 'Ágios Andréas', null, null, 'Greece', 3.81, 'Cash', '2016-07-07', 'Complete') +,(4450, 216, 100,'2016-12-21', '2017-02-13', 'Aaron Sanders', '1 Dakota Court', null, 'Huayllo', null, null, 'Peru', 7.59, 'Cash', '2016-04-22', 'On Hold') +,(4451, 211, 50, '2016-08-22', '2016-06-05', 'Eugene Scott', '03 Golden Leaf Point', null, 'Stírion', null, null, 'Greece', 8.99, 'Card', '2017-02-25', 'New') +,(4452, 220, 86, '2016-05-07', '2016-07-20', 'Cynthia Phillips', '820 Merchant Way', null, 'Mrongi Daja', null, null, 'Indonesia', 2.21, 'Check', '2016-04-27', 'On Hold') +,(4453, 213, 58, '2016-10-30', '2016-03-22', 'Martin Reed', '14 Meadow Vale Alley', null, 'Jiangdong', null, null, 'China', 3.58, 'Cash', '2017-02-12', 'Complete') +,(4454, 206, 98, '2016-05-14', '2016-11-07', 'Janet Porter', '74391 Ronald Regan Park', null, 'Lamakera Dua', null, null, 'Indonesia', 9.86, 'Check', '2016-06-12', 'New') +,(4455, 204, 2 , '2016-03-28', '2016-04-11', 'Amanda Duncan', '047 Jenna Road', null, 'Tungawan', null, '7018', 'Philippines', 2.04, 'Card', '2016-07-09', 'New') +,(4456, 211, 58, '2016-08-05', '2016-11-19', 'Joseph Henderson', '14 Morningstar Pass', null, 'Kolobolon', null, null, 'Indonesia', 6.44, 'Check', '2016-05-24', 'New') +,(4457, 215, 21, '2017-02-15', '2016-06-11', 'Cynthia Bishop', '066 Surrey Pass', null, 'Hưng Yên', null, null, 'Vietnam', 1.61, 'Check', '2016-07-05', 'Shipped') +,(4458, 211, 10, '2016-08-08', '2016-08-06', 'Craig Andrews', '7 Mariners Cove Court', null, 'Tuanchengshan', null, null, 'China', 8.4, 'Cash', '2016-12-15', 'New') +,(4459, 211, 71, '2016-05-13', '2017-02-19', 'Steve Warren', '6702 Delladonna Point', null, 'Pražmo', null, '739 04', 'Czech Republic', 8.29, 'Card', '2016-06-29', 'New') +,(4460, 214, 5 , '2016-12-21', '2016-06-21', 'Brenda Mills', '77934 Prairieview Way', null, 'Huafeng', null, null, 'China', 6.76, 'Cash', '2016-07-08', 'New') +,(4461, 212, 34, '2016-04-27', '2016-07-22', 'Randy Wright', '9 Thackeray Way', null, 'Dvůr Králové nad Labem', null, '544 01', 'Czech Republic', 9.45, 'Card', '2016-03-20', 'Shipped') +,(4462, 202, 47, '2016-10-31', '2016-06-30', 'Michelle Ramirez', '0152 Old Shore Road', null, 'Pulaupinang', null, null, 'Indonesia', 2.42, 'Card', '2016-09-05', 'New') +,(4463, 209, 86, '2016-07-30', '2016-04-29', 'Frank Duncan', '67 Buell Terrace', null, 'Krasne', null, null, 'Ukraine', 2.71, 'Card', '2016-06-22', 'Complete') +,(4464, 204, 62, '2017-03-01', '2017-03-11', 'Carlos Warren', '978 Merrick Circle', null, 'Penghua', null, null, 'China', 7.29, 'Cash', '2016-03-22', 'Shipped') +,(4465, 202, 87, '2016-06-23', '2016-11-15', 'Tina Gardner', '0 Mcguire Terrace', null, 'Cangqian', null, null, 'China', 2.17, 'Card', '2016-06-01', 'New') +,(4466, 220, 31, '2016-06-04', '2016-06-08', 'Stephen Turner', '17 Leroy Plaza', null, 'Pedaringan', null, null, 'Indonesia', 8.89, 'Check', '2016-05-09', 'Shipped') +,(4467, 210, 35, '2016-05-21', '2016-09-26', 'Melissa Wilson', '61199 Forest Center', null, 'Krmelín', null, '739 24', 'Czech Republic', 2.35, 'Card', '2016-06-20', 'On Hold') +,(4468, 216, 50, '2016-09-10', '2016-12-02', 'Billy Harper', '8940 Fisk Parkway', null, 'San Jose', 'California', '95113', 'United States', 3.98, 'Cash', '2016-10-04', 'Complete') +,(4469, 207, 22, '2016-06-03', '2016-11-06', 'Carl Davis', '5 Lindbergh Street', null, 'Taling Chan', null, '10170', 'Thailand', 4.71, 'Card', '2017-02-03', 'New') +,(4470, 211, 64, '2016-06-16', '2016-05-26', 'Gerald Henry', '2221 Porter Crossing', null, 'Mozdok', null, '363759', 'Russia', 9.57, 'Cash', '2016-10-11', 'Shipped') +,(4471, 206, 25, '2016-07-27', '2016-08-24', 'Debra Garza', '65379 Sunnyside Trail', null, 'Jiadingzhen', null, null, 'China', 1.06, 'Check', '2016-06-23', 'On Hold') +,(4472, 204, 18, '2016-08-30', '2016-10-09', 'Margaret Rodriguez', '3202 Marquette Point', null, 'Oranzherei', null, '416368', 'Russia', 3.35, 'Check', '2016-06-18', 'On Hold') +,(4473, 212, 88, '2016-10-29', '2016-05-25', 'William Burke', '46 Kingsford Center', null, 'San Juan', null, '11301', 'Denmark', 3.85, 'Check', '2017-02-12', 'Shipped') +,(4474, 217, 9 , '2017-02-19', '2016-05-29', 'Larry Myers', '731 Packers Point', null, 'Trelleborg', 'Skåne', '231 68', 'Sweden', 4.46, 'Card', '2016-06-19', 'New') +,(4475, 202, 40, '2016-11-03', '2016-04-25', 'Virginia Hall', '141 Rowland Way', null, 'Aoji-ri', null, null, 'Denmark', 7.58, 'Check', '2016-11-13', 'Shipped') +,(4476, 211, 16, '2017-03-07', '2016-10-14', 'Doris Berry', '60 Rusk Lane', null, 'Al Qamşīyah', null, null, 'India', 1.8, 'Check', '2016-03-19', 'On Hold') +,(4477, 210, 87, '2016-12-04', '2016-03-22', 'Juan Richards', '3830 Randy Parkway', null, 'Nakhon Nayok', null, '26120', 'Thailand', 1.22, 'Card', '2016-08-05', 'Complete') +,(4478, 203, 34, '2017-01-28', '2016-09-27', 'Kimberly Fox', '34957 Elka Way', null, 'Santiago', null, '97700-000', 'Brazil', 3.99, 'Check', '2016-07-06', 'On Hold') +,(4479, 219, 89, '2016-07-01', '2016-05-31', 'Ruby Ruiz', '90581 American Hill', null, 'Agudos', null, '17120-000', 'Brazil', 5.97, 'Cash', '2016-06-03', 'On Hold') +,(4480, 203, 53, '2016-10-17', '2016-11-07', 'Ruby Robinson', '385 Carioca Plaza', null, 'Kalangan', null, null, 'Indonesia', 8.71, 'Card', '2016-12-01', 'Complete') +,(4481, 207, 91, '2017-02-25', '2016-03-31', 'Victor Lopez', '170 Mariners Cove Circle', null, 'Bressuire', 'Poitou-Charentes', '79304 CEDEX', 'France', 8.59, 'Check', '2016-07-30', 'Complete') +,(4482, 215, 58, '2017-02-15', '2016-07-25', 'Kimberly Marshall', '647 Summerview Circle', null, 'Timahankrajan', null, null, 'Indonesia', 3.07, 'Check', '2016-04-21', 'On Hold') +,(4483, 207, 76, '2016-06-27', '2016-10-15', 'Pamela Matthews', '9379 Summit Trail', null, 'Brangsi', null, null, 'Indonesia', 1.35, 'Card', '2016-05-27', 'New') +,(4484, 210, 98, '2017-02-03', '2016-11-04', 'Randy Patterson', '6641 American Ash Point', null, 'Ivanec', null, '42240', 'Canada', 2.36, 'Card', '2016-10-31', 'Shipped') +,(4485, 205, 71, '2017-01-01', '2017-02-16', 'Carolyn Garza', '281 Raven Lane', null, 'Jingyang', null, null, 'China', 6.85, 'Check', '2016-04-27', 'Shipped') +,(4486, 202, 20, '2016-07-24', '2016-07-06', 'Ruth Perkins', '5656 Northview Lane', null, 'Burevestnik', null, '607612', 'Russia', 9.29, 'Cash', '2017-03-16', 'On Hold') +,(4487, 203, 49, '2017-02-20', '2017-01-12', 'Kelly Oliver', '249 Londonderry Pass', null, 'Grande Rivière du Nord', null, null, 'Canada', 7.65, 'Check', '2016-12-04', 'Shipped') +,(4488, 203, 67, '2016-11-09', '2016-07-19', 'Shirley Henry', '3045 Rowland Lane', null, 'Midlands', null, null, 'Germany', 5.35, 'Check', '2016-06-14', 'Complete') +,(4489, 209, 100,'2017-01-24', '2016-05-30', 'Marie Ferguson', '629 Crownhardt Junction', null, 'El Paso', 'Texas', '88546', 'United States', 5.18, 'Check', '2016-04-20', 'Shipped') +,(4490, 202, 87, '2016-06-27', '2016-09-05', 'Rachel Scott', '343 Schurz Road', null, 'Cabiguan', null, '1144', 'Philippines', 1.05, 'Cash', '2016-07-24', 'Shipped') +,(4491, 211, 93, '2017-01-16', '2016-09-29', 'Henry Fields', '26143 Del Sol Avenue', null, 'Huangduobu', null, null, 'China', 6.15, 'Card', '2016-06-02', 'Shipped') +,(4492, 217, 10, '2016-12-08', '2016-10-01', 'Harold Jones', '2 Oak Avenue', null, 'Surkhakhi', null, '386147', 'Russia', 9.96, 'Card', '2016-04-07', 'New') +,(4493, 217, 35, '2016-05-05', '2016-05-01', 'Walter Wright', '12 Paget Road', null, 'Siluman', null, null, 'Indonesia', 2.1, 'Cash', '2016-10-26', 'On Hold') +,(4494, 206, 51, '2017-02-25', '2016-10-24', 'Marilyn Hayes', '4 5th Way', null, 'Punkaharju', null, '58501', 'Finland', 3.57, 'Cash', '2016-06-22', 'New') +,(4495, 208, 3 , '2016-12-27', '2016-09-09', 'Sandra West', '0384 Bowman Center', null, 'Tagta', null, null, 'India', 6.45, 'Cash', '2016-08-25', 'New') +,(4496, 218, 41, '2017-01-10', '2016-12-11', 'Dennis Meyer', '4 Cambridge Alley', null, 'Cariamanga', null, null, 'Argentina', 5.33, 'Check', '2016-09-28', 'New') +,(4497, 216, 76, '2016-09-28', '2016-05-12', 'Frank Dean', '23227 Veith Park', null, 'Fengqiao', null, null, 'China', 6.72, 'Cash', '2016-04-12', 'Complete') +,(4498, 204, 3 , '2016-11-11', '2016-12-01', 'Amy Palmer', '7735 Maple Wood Road', null, 'Działoszyce', null, '28-440', 'Poland', 3.08, 'Card', '2016-09-07', 'Shipped') +,(4499, 211, 96, '2017-02-04', '2016-03-27', 'Emily Nelson', '3 Crownhardt Plaza', null, 'Oslob', null, '6025', 'Philippines', 6.41, 'Card', '2016-09-25', 'On Hold') +,(4500, 204, 7 , '2016-04-29', '2017-01-20', 'Randy Hanson', '687 Drewry Place', null, 'Barberena', null, '06002', 'Japan', 2.51, 'Card', '2016-12-12', 'Complete') +,(4501, 215, 92, '2017-02-27', '2016-09-26', 'Raymond Banks', '826 Mendota Pass', null, 'Chicago', 'Illinois', '60681', 'United States', 3.34, 'Card', '2016-10-30', 'Complete') +,(4502, 220, 24, '2016-10-01', '2016-09-26', 'Kimberly Robertson', '2643 Becker Trail', null, 'Columbus', 'United Kingdom', '31904', 'United States', 3.07, 'Check', '2016-04-27', 'Complete') +,(4503, 215, 52, '2017-02-25', '2016-08-08', 'Marilyn Miller', '1 Tennessee Park', null, 'Spokane', 'Washington', '99252', 'United States', 5.34, 'Check', '2016-08-16', 'On Hold') +,(4504, 220, 35, '2017-01-27', '2016-09-08', 'Marie Carpenter', '4575 Fair Oaks Hill', null, 'Richmond', 'Virginia', '23293', 'United States', 7.01, 'Cash', '2016-04-06', 'Shipped') +,(4505, 203, 10, '2016-06-24', '2017-02-22', 'Nicholas Wells', '823 Duke Center', null, 'Irvine', 'California', '92710', 'United States', 1.4, 'Check', '2016-06-17', 'On Hold') +,(4506, 207, 26, '2016-12-26', '2017-03-14', 'John Dean', '06 Spenser Place', null, 'Charleston', 'South Carolina', '29403', 'United States', 1.31, 'Cash', '2016-10-25', 'Shipped') +,(4507, 216, 28, '2016-08-22', '2016-12-13', 'Diana Spencer', '26 Ridgeway Plaza', null, 'Ogden', 'Utah', '84403', 'United States', 9.42, 'Cash', '2016-04-13', 'Shipped') +,(4508, 213, 90, '2016-08-31', '2017-01-13', 'Wanda Bowman', '862 Iowa Avenue', null, 'Kansas City', 'Kansas', '66160', 'United States', 7.1, 'Cash', '2016-10-19', 'Complete') +,(4509, 204, 93, '2016-07-07', '2016-05-31', 'Andrew Garrett', '27066 Gina Road', null, 'El Paso', 'Texas', '88558', 'United States', 6.88, 'Check', '2016-04-23', 'Complete') +,(4510, 202, 56, '2017-02-06', '2016-10-29', 'Juan Webb', '6233 South Junction', null, 'Lafayette', 'Louisiana', '70505', 'United States', 1.07, 'Cash', '2016-05-20', 'New') +,(4511, 219, 54, '2016-11-08', '2016-06-17', 'William Gardner', '5 Meadow Ridge Terrace', null, 'Tacoma', 'Washington', '98447', 'United States', 4.46, 'Check', '2016-05-25', 'Complete') +,(4512, 215, 4 , '2016-09-09', '2016-08-21', 'Fred Fernandez', '15 Ludington Junction', null, 'San Rafael', 'California', '94913', 'United States', 4.3, 'Cash', '2016-09-02', 'New') +,(4513, 206, 54, '2016-10-28', '2016-06-30', 'Ruth Ellis', '41196 Rieder Avenue', null, 'Baltimore', 'Maryland', '21211', 'United States', 8.39, 'Card', '2016-05-29', 'Complete') +,(4514, 215, 73, '2017-02-26', '2016-09-17', 'David Ferguson', '5813 Brown Parkway', null, 'Shawnee Mission', 'Kansas', '66286', 'United States', 2.71, 'Card', '2016-04-18', 'Shipped') +,(4515, 216, 23, '2016-11-08', '2016-06-27', 'Susan Freeman', '0 Bashford Parkway', null, 'Tucson', 'Arizona', '85720', 'United States', 5.5, 'Check', '2017-02-01', 'Shipped') +,(4516, 212, 9 , '2016-04-30', '2016-12-31', 'Alan Hunt', '193 Declaration Plaza', null, 'Louisville', 'Kentucky', '40256', 'United States', 9.74, 'Cash', '2017-01-20', 'On Hold') +,(4517, 202, 46, '2017-02-01', '2016-07-22', 'Phillip Romero', '1860 Thompson Crossing', null, 'Biloxi', 'Mississippi', '39534', 'United States', 3.02, 'Card', '2016-11-04', 'Complete') +,(4518, 203, 75, '2016-09-07', '2016-11-14', 'George Diaz', '6 Mcguire Center', null, 'Mesa', 'Arizona', '85210', 'United States', 7.84, 'Check', '2016-06-21', 'Shipped') +,(4519, 217, 68, '2016-10-07', '2016-08-15', 'Virginia King', '7405 High Crossing Alley', null, 'Sioux City', 'Iowa', '51105', 'United States', 4.03, 'Check', '2016-05-09', 'Complete') +,(4520, 216, 6 , '2017-02-18', '2017-02-17', 'Brenda Ruiz', '224 Badeau Street', null, 'Corpus Christi', 'Texas', '78426', 'United States', 9.11, 'Check', '2016-11-13', 'New') +,(4521, 201, 84, '2016-09-17', '2016-06-15', 'Debra Brown', '94 Morningstar Center', null, 'San Francisco', 'California', '94177', 'United States', 6.59, 'Check', '2017-03-10', 'Shipped') +,(4522, 205, 89, '2016-10-22', '2017-03-13', 'Emily Henry', '79 Manufacturers Center', null, 'Los Angeles', 'California', '90020', 'United States', 4.11, 'Cash', '2016-10-27', 'Complete') +,(4523, 211, 67, '2016-04-17', '2017-02-12', 'Aaron Peterson', '504 Schlimgen Terrace', null, 'Bethesda', 'Maryland', '20892', 'United States', 5.42, 'Card', '2016-08-25', 'Shipped') +,(4524, 215, 83, '2016-08-22', '2016-07-31', 'Janice Burke', '3 Mcbride Lane', null, 'Washington', 'District of Columbia', '20073', 'United States', 3.76, 'Card', '2016-08-09', 'Shipped') +,(4525, 217, 100,'2016-03-31', '2016-12-09', 'Debra Kelley', '18155 Northview Plaza', null, 'Detroit', 'Michigan', '48267', 'United States', 2.26, 'Cash', '2016-12-29', 'On Hold') +,(4526, 214, 32, '2016-11-24', '2016-03-28', 'Donald Sims', '86 Michigan Avenue', null, 'Brooklyn', 'New York', '11231', 'United States', 5.05, 'Check', '2016-08-07', 'Shipped') +,(4527, 205, 100,'2016-05-13', '2016-06-17', 'Daniel Mason', '4 Hanover Road', null, 'Reno', 'Nevada', '89595', 'United States', 4.81, 'Check', '2016-10-22', 'Shipped') +,(4528, 201, 32, '2016-11-15', '2016-11-16', 'Howard Knight', '5 Weeping Birch Alley', null, 'Jacksonville', 'Florida', '32225', 'United States', 5.99, 'Check', '2016-11-07', 'New') +,(4529, 213, 99, '2016-12-02', '2016-07-09', 'Virginia Hughes', '629 Manufacturers Point', null, 'Syracuse', 'New York', '13224', 'United States', 5.6, 'Card', '2016-12-02', 'Complete') +,(4530, 219, 18, '2016-12-07', '2017-02-07', 'Carl Graham', '90 Heffernan Pass', null, 'Saint Petersburg', 'Florida', '33737', 'United States', 9.35, 'Check', '2016-10-18', 'Complete') +,(4531, 201, 57, '2016-12-26', '2016-12-29', 'Joan Murray', '38 Bellgrove Crossing', null, 'Tacoma', 'Washington', '98447', 'United States', 6.69, 'Card', '2016-12-05', 'On Hold') +,(4532, 202, 58, '2016-04-02', '2016-07-01', 'Robert Williams', '09407 Northfield Circle', null, 'Cedar Rapids', 'Iowa', '52410', 'United States', 6.56, 'Card', '2016-04-16', 'On Hold') +,(4533, 218, 36, '2017-02-07', '2016-05-05', 'Ryan Black', '57199 Hoffman Place', null, 'Jacksonville', 'Florida', '32204', 'United States', 8.54, 'Check', '2017-01-24', 'Shipped') +,(4534, 208, 92, '2016-07-09', '2016-06-20', 'Brenda Hunter', '16179 Ludington Court', null, 'Birmingham', 'Alabama', '35263', 'United States', 9.82, 'Cash', '2016-09-30', 'New') +,(4535, 214, 70, '2016-08-04', '2016-06-29', 'Anne Warren', '08161 Barnett Parkway', null, 'Van Nuys', 'California', '91411', 'United States', 7.04, 'Cash', '2017-02-24', 'Complete') +,(4536, 213, 99, '2017-01-11', '2017-01-21', 'Betty Snyder', '9 Badeau Court', null, 'Davenport', 'Iowa', '52804', 'United States', 8.72, 'Card', '2016-09-03', 'Shipped') +,(4537, 217, 76, '2016-07-31', '2017-02-13', 'Edward Wilson', '1031 Esch Drive', null, 'Fresno', 'California', '93750', 'United States', 1.64, 'Check', '2016-04-21', 'On Hold') +,(4538, 210, 60, '2016-06-22', '2016-04-10', 'Terry Butler', '124 Hoepker Pass', null, 'San Antonio', 'Texas', '78255', 'United States', 2.35, 'Check', '2017-01-31', 'Complete') +,(4539, 220, 5 , '2016-11-12', '2016-04-25', 'Emily Hawkins', '990 Quincy Drive', null, 'Richmond', 'Virginia', '23289', 'United States', 4.36, 'Card', '2016-09-17', 'Complete') +,(4540, 213, 42, '2017-02-28', '2017-02-11', 'Cynthia Rose', '8881 Packers Trail', null, 'Berkeley', 'California', '94712', 'United States', 6.09, 'Check', '2016-04-14', 'New') +,(4541, 204, 27, '2016-09-30', '2017-01-28', 'Lisa Turner', '83 Graedel Terrace', null, 'Oakland', 'California', '94611', 'United States', 9.61, 'Card', '2016-05-07', 'Shipped') +,(4542, 219, 26, '2016-07-13', '2016-03-23', 'Jason Price', '475 Meadow Valley Point', null, 'Annapolis', 'Maryland', '21405', 'United States', 2.93, 'Check', '2016-06-10', 'New') +,(4543, 202, 63, '2016-07-29', '2016-05-20', 'Joan Hayes', '7 Upham Center', null, 'Temple', 'Texas', '76505', 'United States', 7.39, 'Card', '2016-09-20', 'Complete') +,(4544, 212, 97, '2016-10-31', '2017-01-16', 'Paula Torres', '443 Debs Terrace', null, 'Racine', 'Wisconsin', '53405', 'United States', 3.93, 'Card', '2016-07-07', 'Shipped') +,(4545, 201, 33, '2017-03-08', '2016-08-21', 'Theresa Watkins', '85395 Rusk Center', null, 'Jackson', 'Mississippi', '39210', 'United States', 5.32, 'Card', '2016-11-19', 'Complete') +,(4546, 211, 68, '2016-05-25', '2016-07-17', 'Clarence Nguyen', '155 Northport Road', null, 'Greensboro', 'North Carolina', '27455', 'United States', 7.06, 'Cash', '2016-08-24', 'Shipped') +,(4547, 203, 73, '2016-05-03', '2016-10-23', 'Jean Mason', '03 Eagle Crest Lane', null, 'Colorado Springs', 'Colorado', '80935', 'United States', 4.2, 'Cash', '2016-04-07', 'New') +,(4548, 217, 2 , '2016-05-20', '2016-08-07', 'Nicole Brown', '364 Debra Lane', null, 'Washington', 'District of Columbia', '20046', 'United States', 7.97, 'Cash', '2016-04-30', 'New') +,(4549, 220, 89, '2016-04-11', '2016-12-11', 'Carol Chapman', '756 Muir Point', null, 'Washington', 'District of Columbia', '20397', 'United States', 2.21, 'Card', '2017-02-05', 'Shipped') +,(4550, 211, 13, '2016-04-16', '2016-08-03', 'Roy George', '8 Anhalt Terrace', null, 'Indianapolis', 'Indiana', '46207', 'United States', 4.5, 'Check', '2017-03-06', 'New') +,(4551, 219, 37, '2016-04-14', '2017-03-01', 'Heather Bishop', '0901 Tennessee Street', null, 'Kingsport', 'Tennessee', '37665', 'United States', 1.92, 'Card', '2017-01-02', 'Shipped') +,(4552, 218, 94, '2017-03-05', '2016-06-01', 'Wayne Mason', '90645 Carberry Drive', null, 'Madison', 'Wisconsin', '53716', 'United States', 6.96, 'Card', '2016-12-31', 'Complete') +,(4553, 212, 37, '2016-10-16', '2016-10-13', 'Gloria Elliott', '100 Granby Junction', null, 'Miami', 'Florida', '33153', 'United States', 9.25, 'Cash', '2016-06-09', 'Shipped') +,(4554, 217, 4 , '2016-06-05', '2016-07-26', 'Timothy Hayes', '6001 Elgar Circle', null, 'Pensacola', 'Florida', '32575', 'United States', 6.5, 'Cash', '2016-03-30', 'Complete') +,(4555, 207, 49, '2016-08-19', '2016-08-15', 'Judith Baker', '3436 Briar Crest Park', null, 'Newark', 'New Jersey', '07188', 'United States', 2.33, 'Check', '2016-09-17', 'Complete') +,(4556, 217, 17, '2016-11-18', '2016-12-10', 'Roy Russell', '6401 Graedel Court', null, 'Alexandria', 'Virginia', '22301', 'United States', 3.24, 'Check', '2016-04-08', 'Complete') +,(4557, 216, 35, '2016-09-11', '2016-05-07', 'Jacqueline Davis', '864 Cherokee Lane', null, 'Columbus', 'Ohio', '43226', 'United States', 4.7, 'Card', '2016-08-06', 'Shipped') +,(4558, 211, 20, '2016-10-06', '2016-07-15', 'Eugene Castillo', '03090 Northland Circle', null, 'Salt Lake City', 'Utah', '84199', 'United States', 9.36, 'Card', '2016-10-06', 'Complete') +,(4559, 216, 13, '2017-01-13', '2016-03-28', 'Janice Mills', '522 Holmberg Alley', null, 'Scottsdale', 'Arizona', '85271', 'United States', 7.31, 'Cash', '2016-05-15', 'On Hold') +,(4560, 211, 77, '2016-08-24', '2017-03-13', 'Ruby White', '0070 Corben Way', null, 'Naples', 'Florida', '34114', 'United States', 3.71, 'Check', '2016-07-17', 'On Hold') +,(4561, 219, 55, '2016-08-13', '2016-11-19', 'Frank Jackson', '25 Rigney Point', null, 'Washington', 'District of Columbia', '20420', 'United States', 1.94, 'Cash', '2016-06-12', 'Shipped') +,(4562, 207, 96, '2016-10-12', '2016-12-04', 'Pamela Peterson', '830 Loftsgordon Junction', null, 'Houston', 'Texas', '77281', 'United States', 1.45, 'Check', '2017-03-06', 'New') +,(4563, 204, 70, '2016-07-23', '2017-02-06', 'Martha Frazier', '3 Gerald Lane', null, 'Scottsdale', 'Arizona', '85260', 'United States', 2.74, 'Cash', '2017-01-19', 'New') +,(4564, 204, 59, '2017-02-26', '2016-10-23', 'Kenneth Hawkins', '27305 Maple Crossing', null, 'San Diego', 'California', '92145', 'United States', 9.41, 'Cash', '2017-02-09', 'On Hold') +,(4565, 203, 66, '2016-08-06', '2017-02-03', 'Barbara Collins', '8 Norway Maple Junction', null, 'Fort Worth', 'Texas', '76198', 'United States', 1.08, 'Card', '2016-06-24', 'New') +,(4566, 217, 83, '2016-09-14', '2016-03-29', 'Gary Ellis', '97 Nobel Avenue', null, 'Alexandria', 'Louisiana', '71307', 'United States', 5.05, 'Card', '2016-06-13', 'Shipped') +,(4567, 214, 63, '2017-03-04', '2016-11-05', 'Douglas Hughes', '98309 Mccormick Park', null, 'Kansas City', 'Kansas', '66160', 'United States', 1.4, 'Card', '2017-02-13', 'Shipped') +,(4568, 208, 12, '2016-10-31', '2017-02-27', 'Harold Flores', '1 Merchant Lane', null, 'Duluth', 'United Kingdom', '30096', 'United States', 4.84, 'Check', '2016-04-30', 'On Hold') +,(4569, 201, 96, '2016-08-20', '2016-10-03', 'Marie Nguyen', '084 Stuart Hill', null, 'Arlington', 'Texas', '76004', 'United States', 5.95, 'Cash', '2016-04-25', 'On Hold') +,(4570, 203, 1 , '2016-10-13', '2016-03-21', 'Judy Fowler', '7541 Golf Course Way', null, 'Kansas City', 'Missouri', '64109', 'United States', 8.02, 'Check', '2016-05-05', 'New') +,(4571, 219, 49, '2016-11-04', '2016-09-02', 'Howard Rogers', '5 Scott Hill', null, 'Brooklyn', 'New York', '11215', 'United States', 5.21, 'Cash', '2016-10-28', 'Complete') +,(4572, 215, 5 , '2016-03-24', '2016-08-31', 'Stephanie Martinez', '0022 Reinke Trail', null, 'Baton Rouge', 'Louisiana', '70894', 'United States', 7.74, 'Card', '2016-08-14', 'On Hold') +,(4573, 206, 61, '2016-08-31', '2016-07-10', 'Jacqueline Lane', '780 Elka Place', null, 'Cleveland', 'Ohio', '44105', 'United States', 9.12, 'Check', '2016-11-30', 'On Hold') +,(4574, 220, 65, '2016-06-26', '2016-06-25', 'Betty Harrison', '23089 Kensington Junction', null, 'Greensboro', 'North Carolina', '27404', 'United States', 5.63, 'Check', '2016-03-30', 'Complete') +,(4575, 212, 81, '2016-04-28', '2016-10-19', 'Robin Bradley', '7895 Weeping Birch Plaza', null, 'Waterbury', 'Connecticut', '06721', 'United States', 7.34, 'Cash', '2017-01-25', 'On Hold') +,(4576, 216, 13, '2017-02-24', '2016-07-18', 'Ralph Bailey', '4019 Harper Park', null, 'Sacramento', 'California', '94291', 'United States', 6.77, 'Cash', '2017-02-02', 'New') +,(4577, 203, 43, '2016-09-24', '2016-11-18', 'Melissa Ross', '775 Lyons Road', null, 'Bridgeport', 'Connecticut', '06606', 'United States', 1.64, 'Check', '2016-07-23', 'Shipped') +,(4578, 212, 53, '2016-07-05', '2016-06-19', 'Joan Russell', '0 Kings Terrace', null, 'Bloomington', 'Illinois', '61709', 'United States', 4.66, 'Card', '2016-04-09', 'New') +,(4579, 214, 17, '2016-10-01', '2016-10-18', 'Benjamin George', '40131 Ronald Regan Road', null, 'Washington', 'District of Columbia', '20525', 'United States', 8.04, 'Check', '2016-06-16', 'Complete') +,(4580, 207, 69, '2016-04-19', '2017-02-09', 'Katherine Stone', '37483 Melrose Parkway', null, 'Fresno', 'California', '93794', 'United States', 6.7, 'Check', '2017-02-08', 'Complete') +,(4581, 218, 28, '2017-03-04', '2016-11-25', 'Ernest Cruz', '872 Nancy Street', null, 'Pompano Beach', 'Florida', '33069', 'United States', 5.81, 'Cash', '2016-04-21', 'On Hold') +,(4582, 217, 32, '2017-03-16', '2016-06-08', 'Joshua Edwards', '72309 Elmside Point', null, 'San Francisco', 'California', '94110', 'United States', 2.49, 'Cash', '2016-04-01', 'On Hold') +,(4583, 219, 83, '2017-01-24', '2016-07-25', 'Justin Mills', '88350 Wayridge Hill', null, 'Charleston', 'West Virginia', '25326', 'United States', 6.03, 'Card', '2016-10-07', 'New') +,(4584, 208, 45, '2016-10-18', '2016-05-13', 'Kathleen Gibson', '25 Carpenter Lane', null, 'Reno', 'Nevada', '89505', 'United States', 5.41, 'Check', '2016-08-21', 'Shipped') +,(4585, 216, 71, '2016-09-19', '2016-10-15', 'Ruby Bennett', '1 Muir Pass', null, 'Las Vegas', 'Nevada', '89135', 'United States', 2.5, 'Cash', '2016-11-29', 'On Hold') +,(4586, 214, 48, '2016-08-07', '2016-08-12', 'Richard Robinson', '1125 Melvin Terrace', null, 'Bethesda', 'Maryland', '20816', 'United States', 4.02, 'Card', '2017-01-09', 'Complete') +,(4587, 212, 62, '2016-12-17', '2017-01-23', 'Debra Sanchez', '534 Stoughton Lane', null, 'Johnstown', 'Pennsylvania', '15906', 'United States', 8.78, 'Cash', '2016-08-07', 'Shipped') +,(4588, 216, 30, '2016-10-24', '2016-12-21', 'Willie Dean', '680 Northview Circle', null, 'Huntington', 'West Virginia', '25775', 'United States', 8.43, 'Card', '2017-03-12', 'New') +,(4589, 210, 10, '2017-01-01', '2016-09-22', 'Christina Kelley', '8706 Sundown Street', null, 'Peoria', 'Illinois', '61635', 'United States', 4.24, 'Cash', '2017-02-08', 'On Hold') +,(4590, 205, 6 , '2016-11-29', '2017-02-23', 'Russell Montgomery', '977 Packers Drive', null, 'Charlotte', 'North Carolina', '28247', 'United States', 2.87, 'Cash', '2016-05-30', 'Complete') +,(4591, 206, 15, '2016-03-28', '2017-02-23', 'Edward Cunningham', '283 Bultman Way', null, 'Jacksonville', 'Florida', '32277', 'United States', 6.55, 'Check', '2017-03-10', 'Shipped') +,(4592, 209, 82, '2016-12-20', '2016-09-07', 'Michael Chavez', '00 Oak Avenue', null, 'Young America', 'Minnesota', '55551', 'United States', 8.22, 'Check', '2016-04-19', 'On Hold') +,(4593, 204, 24, '2017-03-13', '2016-08-30', 'David White', '506 Nevada Circle', null, 'Portland', 'Maine', '04109', 'United States', 1.11, 'Card', '2017-01-13', 'On Hold') +,(4594, 206, 27, '2016-09-13', '2017-03-12', 'Cheryl Vasquez', '9070 Di Loreto Court', null, 'Van Nuys', 'California', '91499', 'United States', 7.42, 'Card', '2017-02-25', 'On Hold') +,(4595, 211, 94, '2016-07-03', '2016-05-08', 'Charles Garrett', '1337 Hooker Trail', null, 'Honolulu', 'Hawaii', '96810', 'United States', 9.57, 'Check', '2016-10-04', 'Shipped') +,(4596, 216, 56, '2016-07-08', '2017-02-28', 'Michelle Butler', '1 Magdeline Lane', null, 'Orlando', 'Florida', '32813', 'United States', 7.05, 'Check', '2016-07-12', 'New') +,(4597, 217, 26, '2016-09-24', '2016-10-05', 'Howard Reyes', '3677 Donald Alley', null, 'Carol Stream', 'Illinois', '60351', 'United States', 7.62, 'Cash', '2017-02-08', 'Complete') +,(4598, 212, 76, '2016-04-13', '2016-08-10', 'Eugene Kelly', '838 Becker Plaza', null, 'Laredo', 'Texas', '78044', 'United States', 4.9, 'Check', '2016-10-23', 'New') +,(4599, 208, 29, '2016-04-16', '2016-05-15', 'Jimmy Mcdonald', '0 Dayton Place', null, 'Rochester', 'New York', '14646', 'United States', 1.56, 'Check', '2017-01-14', 'Complete') +,(4600, 208, 2 , '2016-04-26', '2016-04-06', 'Stephen Jacobs', '7131 Scoville Terrace', null, 'Phoenix', 'Arizona', '85020', 'United States', 4.52, 'Cash', '2017-01-22', 'On Hold'); + + + + +/* Order details */ +insert into order_items (order_id, product_id, quantity, unit_price, discount, order_item_status, date_allocated) values + (4001, 608, 1 , 97.34, 8.73, 'Allocated', '2017-01-15') +,(4001, 611, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 616, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 613, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4001, 615, 2 , 58.46, 4.36, 'No Stock' , '2016-09-21') +,(4002, 604, 3 , 88.97, 2.86, 'On Order' , '2016-12-15') +,(4002, 610, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4002, 615, 4 , 37.19, 8.65, 'Allocated', '2016-10-12') +,(4003, 609, 8 , 92.87, 4.01, 'No Stock' , '2016-06-15') +,(4003, 612, 7 , 87.15, 3.54, 'No Stock' , '2017-02-09') +,(4004, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 620, 2 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 611, 4 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4004, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4005, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4005, 620, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 618, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4006, 607, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4007, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 610, 2 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4007, 612, 5 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4008, 612, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 615, 3 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4008, 611, 1 , 57.2 , 8.94, 'Allocated', '2017-01-13') +,(4009, 605, 6 , 62.16, 5.68, 'No Stock' , '2017-02-13') +,(4009, 610, 6 , 19.31, 5.0 , 'No Stock' , '2016-09-16') +,(4009, 615, 9 , 51.21, 4.48, 'Allocated', '2016-10-18') +,(4010, 601, 1 , 32.18, 9.41, 'On Order' , '2016-03-17') +,(4010, 602, 1 , 31.35, 7.18, 'No Stock' , '2016-12-30') +,(4010, 603, 10, 24.24, 2.76, 'Allocated', '2016-07-05') +,(4010, 610, 6 , 9.09 , 3.02, 'On Order' , '2016-07-17') +,(4011, 604, 10, 58.25, 9.3 , 'No Stock' , '2016-04-04') +,(4011, 606, 5 , 73.34, 1.76, 'Allocated', '2016-06-30') +,(4011, 608, 3 , 95.07, 4.6 , 'On Order' , '2016-06-04') +,(4011, 615, 9 , 20.84, 3.93, 'Allocated', '2016-06-10') +,(4012, 604, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 601, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4012, 610, 3 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4013, 604, 2 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4013, 606, 5 , 19.82, 9.97, 'No Stock' , '2016-09-21') +,(4014, 601, 3 , 37.57, 4.99, 'Allocated', '2016-08-21') +,(4015, 611, 8 , 95.27, 6.62, 'Allocated', '2017-03-13') +,(4015, 612, 2 , 89.63, 4.14, 'Allocated', '2016-04-07') +,(4015, 615, 8 , 69.03, 1.11, 'On Order' , '2016-08-15') +,(4016, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4016, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4017, 605, 6 , 75.88, 2.1 , 'On Order' , '2017-02-15') +,(4017, 610, 4 , 26.43, 7.18, 'On Order' , '2016-04-30') +,(4017, 619, 6 , 77.91, 9.26, 'No Stock' , '2016-04-02') +,(4018, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4019, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4020, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4021, 604, 3 , 20.14, 8.54, 'No Stock' , '2016-06-26') +,(4022, 614, 7 , 41.61, 4.62, 'On Order' , '2016-09-09') +,(4022, 619, 1 , 10.45, 2.56, 'On Order' , '2016-10-18') +,(4023, 607, 6 , 7.68 , 5.59, 'On Order' , '2016-11-15') +,(4023, 611, 7 , 89.4 , 1.71, 'No Stock' , '2016-04-03') +,(4024, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4024, 609, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4025, 612, 6 , 81.24, 3.52, 'Allocated', '2016-04-25') +,(4025, 614, 4 , 14.07, 2.58, 'On Order' , '2016-09-11') +,(4026, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4026, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4027, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 612, 3 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4027, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4028, 605, 5 , 95.04, 7.82, 'On Order' , '2016-07-24') +,(4028, 615, 8 , 74.56, 1.78, 'Allocated', '2016-12-09') +,(4029, 604, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 603, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4029, 607, 1 , 11.06, 5.37, 'On Order' , '2016-11-26') +,(4030, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4030, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4031, 605, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 608, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 609, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4031, 615, 7 , 75.42, 2.92, 'No Stock' , '2017-02-12') +,(4032, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4032, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4033, 615, 4 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 609, 3 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4033, 620, 1 , 45.55, 6.19, 'Allocated', '2016-05-09') +,(4034, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4034, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4035, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4035, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4036, 604, 1 , 46.63, 4.25, 'No Stock' , '2016-05-04') +,(4036, 605, 6 , 66.75, 9.97, 'Allocated', '2017-02-25') +,(4037, 615, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4037, 612, 2 , 44.76, 7.22, 'On Order' , '2017-03-01') +,(4038, 602, 2 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4038, 620, 3 , 13.25, 7.66, 'On Order' , '2016-07-13') +,(4039, 609, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 619, 3 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4039, 620, 1 , 99.68, 6.09, 'No Stock' , '2016-07-24') +,(4040, 612, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4040, 620, 2 , 79.64, 6.72, 'Allocated', '2016-04-24') +,(4041, 615, 9 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 612, 2 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4041, 620, 1 , 42.79, 8.92, 'No Stock' , '2016-03-31') +,(4042, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4042, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4043, 611, 7 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 619, 3 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4043, 620, 1 , 87.95, 8.57, 'No Stock' , '2016-06-18') +,(4044, 602, 8 , 47.3 , 3.26, 'On Order' , '2016-11-05') +,(4044, 612, 3 , 79.42, 6.56, 'On Order' , '2017-02-11') +,(4045, 603, 3 , 31.01, 7.2 , 'No Stock' , '2016-11-11') +,(4045, 604, 10, 43.54, 6.8 , 'Allocated', '2016-11-13') +,(4045, 608, 7 , 15.2 , 3.58, 'Allocated', '2017-01-18') +,(4046, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4047, 619, 2 , 81.11, 8.77, 'No Stock' , '2016-06-17') +,(4047, 620, 8 , 1.54 , 6.85, 'No Stock' , '2016-05-05') +,(4048, 605, 7 , 13.52, 2.44, 'On Order' , '2016-07-06') +,(4049, 603, 7 , 40.99, 5.77, 'Allocated', '2017-02-22') +,(4049, 609, 10, 90.45, 2.75, 'Allocated', '2017-01-26') +,(4049, 612, 10, 24.28, 9.85, 'No Stock' , '2016-10-01') +,(4050, 606, 4 , 27.84, 1.49, 'No Stock' , '2016-12-18') +,(4050, 607, 2 , 72.72, 3.08, 'On Order' , '2016-04-24') +,(4050, 612, 2 , 76.85, 5.15, 'No Stock' , '2017-02-25') +,(4051, 603, 1 , 57.6 , 1.77, 'Allocated', '2016-07-02') +,(4052, 605, 9 , 50.74, 6.47, 'No Stock' , '2016-05-22') +,(4053, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4054, 601, 10, 55.48, 9.19, 'On Order' , '2016-07-12') +,(4055, 606, 10, 57.17, 3.06, 'No Stock' , '2016-11-20') +,(4056, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4057, 609, 1 , 79.3 , 9.42, 'On Order' , '2016-10-01') +,(4057, 610, 5 , 41.21, 5.55, 'No Stock' , '2016-07-20') +,(4057, 618, 3 , 68.99, 6.42, 'On Order' , '2016-08-19') +,(4058, 604, 6 , 36.78, 6.96, 'Allocated', '2016-05-20') +,(4058, 619, 6 , 79.01, 4.3 , 'Allocated', '2016-06-19') +,(4059, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4060, 603, 10, 40.38, 2.1 , 'On Order' , '2017-02-05') +,(4060, 604, 9 , 41.98, 1.46, 'Allocated', '2017-01-17') +,(4061, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 602, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4061, 603, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 604, 1 , 71.77, 4.91, 'No Stock' , '2016-11-20') +,(4062, 605, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4062, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 608, 1 , 62.85, 4.62, 'Allocated', '2016-03-25') +,(4063, 605, 4 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4063, 607, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 615, 1 , 68.27, 6.79, 'No Stock' , '2016-07-06') +,(4064, 602, 2 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 603, 5 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4064, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4065, 610, 5 , 99.76, 1.78, 'Allocated', '2016-09-23') +,(4066, 605, 1 , 41.12, 2.51, 'On Order' , '2016-09-05') +,(4066, 604, 9 , 2.63 , 7.42, 'Allocated', '2016-08-12') +,(4066, 615, 7 , 25.14, 7.22, 'No Stock' , '2016-03-27') +,(4067, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4068, 602, 4 , 12.67, 5.17, 'Allocated', '2016-08-30') +,(4068, 603, 1 , 87.81, 1.02, 'On Order' , '2016-10-12') +,(4069, 620, 7 , 89.85, 3.49, 'Allocated', '2017-02-22') +,(4070, 615, 5 , 94.08, 4.09, 'On Order' , '2017-01-31') +,(4071, 616, 1, 10.00, 1.00, 'Allocated', '2016-12-14') +,(4072, 601, 3 , 89.95, 9.61, 'No Stock' , '2016-11-25') +,(4072, 612, 5 , 34.51, 5.99, 'No Stock' , '2016-05-25') +,(4073, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4074, 606, 10, 98.2 , 3.63, 'On Order' , '2016-04-30') +,(4075, 605, 8 , 69.36, 9.16, 'On Order' , '2016-07-19') +,(4075, 606, 1 , 3.95 , 8.66, 'On Order' , '2016-04-09') +,(4076, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4077, 602, 10, 90.58, 5.92, 'No Stock' , '2016-06-23') +,(4077, 609, 1 , 8.25 , 3.74, 'No Stock' , '2016-12-07') +,(4077, 615, 9 , 86.2 , 4.5 , 'Allocated', '2017-03-10') +,(4078, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 612, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4078, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 615, 7 , 1.95 , 1.76, 'On Order' , '2017-03-04') +,(4079, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4079, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4080, 608, 5 , 26.84, 9.03, 'On Order' , '2016-11-13') +,(4080, 609, 3 , 41.76, 4.08, 'Allocated', '2016-09-10') +,(4081, 604, 9 , 5.49 , 8.45, 'On Order' , '2016-10-21') +,(4082, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4083, 602, 1 , 44.85, 5.16, 'No Stock' , '2016-09-16') +,(4084, 604, 4 , 58.27, 4.09, 'Allocated', '2016-08-12') +,(4085, 605, 8 , 93.54, 7.49, 'On Order' , '2016-11-24') +,(4086, 615, 2 , 94.02, 1.63, 'No Stock' , '2016-09-01') +,(4087, 601, 2 , 79.39, 3.86, 'No Stock' , '2016-07-13') +,(4088, 615, 3 , 14.03, 3.74, 'Allocated', '2016-11-15') +,(4089, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4090, 611, 4 , 46.11, 1.53, 'No Stock' , '2016-07-25') +,(4091, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4092, 602, 5 , 42.68, 7.92, 'On Order' , '2016-09-09') +,(4093, 615, 8 , 75.27, 5.92, 'No Stock' , '2016-07-09') +,(4094, 605, 7 , 91.05, 4.52, 'On Order' , '2017-02-21') +,(4095, 602, 6 , 58.5 , 9.62, 'On Order' , '2017-02-26') +,(4095, 604, 3 , 80.13, 4.11, 'No Stock' , '2016-12-01') +,(4095, 608, 1 , 23.96, 5.54, 'No Stock' , '2016-03-27') +,(4096, 601, 4 , 9.84 , 5.33, 'No Stock' , '2016-04-18') +,(4097, 605, 4 , 45.03, 5.61, 'On Order' , '2016-05-13') +,(4097, 606, 3 , 41.39, 3.59, 'On Order' , '2016-11-29') +,(4098, 607, 8 , 11.86, 2.74, 'No Stock' , '2016-11-23') +,(4099, 606, 2 , 54.09, 5.84, 'On Order' , '2016-10-08') +,(4100, 608, 3 , 6.62 , 1.25, 'Allocated', '2016-11-16') +,(4101, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4102, 608, 1 , 2.54 , 9.62, 'On Order' , '2016-10-01') +,(4102, 609, 9 , 92.56, 5.98, 'On Order' , '2016-10-14') +,(4102, 610, 10, 26.81, 5.9 , 'On Order' , '2016-08-20') +,(4103, 606, 6 , 71.32, 9.88, 'No Stock' , '2016-09-10') +,(4103, 608, 1 , 73.91, 9.79, 'No Stock' , '2016-12-26') +,(4104, 603, 9 , 33.85, 4.08, 'Allocated', '2017-03-02') +,(4105, 601, 5 , 49.17, 1.99, 'On Order' , '2016-11-11') +,(4105, 606, 9 , 93.8 , 4.48, 'Allocated', '2017-01-06') +,(4106, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4107, 603, 2 , 24.95, 3.71, 'On Order' , '2016-07-20') +,(4107, 604, 5 , 43.75, 1.39, 'No Stock' , '2017-01-03') +,(4107, 608, 1 , 49.09, 8.72, 'Allocated', '2016-12-19') +,(4107, 616, 8 , 26.78, 1.21, 'On Order' , '2016-09-23') +,(4108, 604, 8 , 36.89, 3.04, 'On Order' , '2017-01-01') +,(4108, 619, 1 , 6.43 , 6.66, 'Allocated', '2016-05-03') +,(4109, 604, 9 , 89.19, 9.43, 'No Stock' , '2016-10-21') +,(4109, 609, 2 , 3.71 , 9.12, 'No Stock' , '2016-10-23') +,(4110, 605, 3 , 61.65, 7.86, 'On Order' , '2016-08-05') +,(4110, 606, 2 , 63.62, 7.4 , 'Allocated', '2016-06-07') +,(4111, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4111, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4112, 607, 5 , 63.7 , 9.44, 'On Order' , '2017-01-01') +,(4112, 610, 1 , 22.54, 8.3 , 'On Order' , '2016-04-09') +,(4113, 604, 6 , 86.01, 4.4 , 'Allocated', '2017-01-05') +,(4113, 611, 5 , 39.64, 4.58, 'Allocated', '2017-02-26') +,(4113, 615, 3 , 22.49, 3.61, 'Allocated', '2016-08-24') +,(4113, 619, 6 , 7.6 , 6.63, 'On Order' , '2016-05-01') +,(4114, 610, 6 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 608, 2 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4114, 609, 3 , 3.77 , 4.79, 'Allocated', '2017-01-18') +,(4115, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4115, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4116, 610, 5 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 620, 3 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4116, 615, 1 , 54.21, 9.53, 'On Order' , '2016-05-11') +,(4117, 603, 7 , 91.81, 4.35, 'On Order' , '2016-04-18') +,(4117, 610, 9 , 79.15, 6.8 , 'Allocated', '2017-02-09') +,(4118, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 615, 3 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4118, 612, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4119, 615, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4119, 612, 4 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4120, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4120, 611, 8 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 602, 3 , 7.09 , 6.48, 'No Stock' , '2016-06-03') +,(4121, 612, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4121, 611, 1 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 606, 5 , 44.99, 1.66, 'No Stock' , '2016-05-08') +,(4122, 611, 2 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4122, 612, 6 , 1.55 , 8.73, 'On Order' , '2016-08-18') +,(4123, 607, 10, 4.78 , 1.32, 'Allocated', '2016-12-28') +,(4124, 604, 1 , 18.79, 6.75, 'On Order' , '2017-01-05') +,(4125, 605, 9 , 59.37, 1.61, 'On Order' , '2016-07-24') +,(4125, 608, 1 , 72.49, 2.72, 'On Order' , '2016-08-22') +,(4126, 610, 10, 13.83, 1.15, 'On Order' , '2016-09-29') +,(4126, 615, 10, 71.77, 9.08, 'No Stock' , '2017-02-24') +,(4127, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4128, 605, 6 , 94.61, 7.16, 'No Stock' , '2017-02-09') +,(4128, 616, 3 , 4.67 , 2.72, 'On Order' , '2016-04-06') +,(4129, 610, 5 , 73.89, 8.17, 'On Order' , '2016-04-30') +,(4130, 608, 6 , 47.42, 8.39, 'No Stock' , '2017-02-27') +,(4131, 602, 5 , 28.62, 6.07, 'No Stock' , '2016-03-21') +,(4132, 602, 7 , 38.86, 3.58, 'Allocated', '2016-06-21') +,(4132, 604, 4 , 89.39, 2.36, 'No Stock' , '2016-12-20') +,(4132, 605, 5 , 29.97, 9.78, 'No Stock' , '2016-08-03') +,(4133, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 613, 2 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4133, 615, 4 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4134, 606, 1 , 73.57, 3.21, 'Allocated', '2016-04-07') +,(4134, 608, 1 , 65.61, 8.68, 'On Order' , '2017-01-14') +,(4135, 603, 2 , 7.24 , 2.61, 'Allocated', '2017-01-02') +,(4135, 607, 6 , 15.99, 6.23, 'No Stock' , '2016-12-16') +,(4135, 609, 6 , 26.55, 2.9 , 'On Order' , '2016-11-25') +,(4135, 612, 8 , 17.99, 9.59, 'No Stock' , '2016-03-25') +,(4136, 606, 10, 16.82, 8.15, 'On Order' , '2016-06-22') +,(4137, 605, 2 , 39.96, 6.08, 'On Order' , '2016-05-22') +,(4138, 620, 6 , 4.6 , 3.68, 'Allocated', '2016-09-17') +,(4139, 601, 4 , 87.74, 7.37, 'No Stock' , '2016-11-25') +,(4140, 603, 10, 90.31, 6.8 , 'On Order' , '2016-05-23') +,(4140, 615, 8 , 82.86, 2.49, 'On Order' , '2016-12-24') +,(4141, 609, 7 , 20.28, 1.51, 'Allocated', '2017-02-10') +,(4142, 608, 7 , 55.47, 8.32, 'No Stock' , '2016-07-07') +,(4142, 619, 5 , 75.63, 1.64, 'Allocated', '2016-08-02') +,(4143, 606, 3 , 99.61, 4.9 , 'No Stock' , '2016-10-25') +,(4144, 604, 6 , 80.75, 3.9 , 'Allocated', '2016-09-09') +,(4145, 603, 3 , 57.97, 8.04, 'On Order' , '2016-06-17') +,(4146, 611, 8 , 69.7 , 6.14, 'On Order' , '2016-04-15') +,(4147, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4148, 602, 4 , 67.89, 1.73, 'Allocated', '2016-03-26') +,(4149, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4150, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4151, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4152, 608, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4152, 620, 10, 97.82, 9.97, 'No Stock' , '2016-07-11') +,(4153, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4153, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4154, 604, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4155, 606, 7 , 42.62, 2.57, 'No Stock' , '2017-02-11') +,(4155, 607, 2 , 83.04, 5.25, 'On Order' , '2016-09-01') +,(4155, 610, 6 , 90.56, 6.31, 'On Order' , '2016-10-18') +,(4156, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4156, 601, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4157, 603, 9 , 93.09, 5.35, 'Allocated', '2016-08-03') +,(4157, 607, 6 , 40.05, 3.9 , 'On Order' , '2017-01-13') +,(4158, 612, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4158, 611, 1 , 17.5 , 6.29, 'Allocated', '2016-04-14') +,(4159, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4159, 612, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4160, 610, 8 , 42.67, 5.88, 'No Stock' , '2017-01-04') +,(4160, 620, 10, 87.78, 4.28, 'Allocated', '2016-11-20') +,(4161, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4161, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4162, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4162, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4163, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4163, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4164, 607, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 608, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4164, 617, 6 , 80.56, 4.32, 'On Order' , '2016-08-17') +,(4165, 604, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 603, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4165, 614, 8 , 72.67, 7.56, 'On Order' , '2016-08-09') +,(4166, 601, 3 , 34.36, 9.92, 'No Stock' , '2016-09-01') +,(4166, 602, 10, 33.99, 5.76, 'Allocated', '2016-05-26') +,(4167, 603, 5 , 58.2 , 1.14, 'Allocated', '2016-06-20') +,(4167, 608, 1 , 20.01, 6.24, 'No Stock' , '2017-01-05') +,(4168, 601, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4168, 605, 1 , 59.45, 7.44, 'On Order' , '2016-09-06') +,(4169, 604, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 609, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4169, 607, 2 , 93.43, 2.26, 'No Stock' , '2017-01-16') +,(4170, 607, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4170, 620, 10, 68.27, 9.02, 'No Stock' , '2017-02-11') +,(4171, 610, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 601, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 611, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 613, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4171, 615, 10, 49.38, 3.71, 'Allocated', '2016-04-25') +,(4172, 606, 6 , 88.26, 2.95, 'No Stock' , '2016-04-11') +,(4172, 609, 7 , 60.97, 1.12, 'Allocated', '2016-10-14') +,(4173, 601, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 603, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4173, 605, 10, 11.22, 9.03, 'On Order' , '2017-01-26') +,(4174, 607, 8 , 53.95, 6.31, 'No Stock' , '2016-04-30') +,(4174, 612, 2 , 13.56, 7.15, 'No Stock' , '2016-07-08') +,(4175, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4175, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4176, 615, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4176, 616, 2 , 70.24, 1.09, 'Allocated', '2017-01-21') +,(4177, 601, 2 , 17.86, 2.99, 'Allocated', '2016-05-07') +,(4177, 604, 8 , 18.39, 6.73, 'On Order' , '2016-04-05') +,(4178, 605, 9 , 23.59, 8.82, 'Allocated', '2016-09-11') +,(4178, 607, 9 , 62.59, 7.88, 'No Stock' , '2016-04-18') +,(4179, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4180, 602, 7 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4180, 603, 1 , 48.19, 6.05, 'Allocated', '2016-11-30') +,(4181, 602, 2 , 64.2 , 4.74, 'Allocated', '2016-08-16') +,(4181, 603, 3 , 41.45, 2.49, 'Allocated', '2016-04-18') +,(4181, 604, 5 , 86.42, 6.42, 'No Stock' , '2016-05-03') +,(4182, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4183, 615, 1 , 68.34, 8.16, 'On Order' , '2016-12-22') +,(4184, 601, 2 , 95.18, 2.74, 'Allocated', '2016-09-16') +,(4184, 603, 9 , 99.41, 9.44, 'No Stock' , '2016-07-01') +,(4184, 604, 1 , 29.52, 3.48, 'Allocated', '2016-04-02') +,(4185, 602, 2 , 22.84, 5.5 , 'On Order' , '2016-10-20') +,(4185, 611, 10, 34.57, 4.27, 'Allocated', '2017-02-05') +,(4185, 612, 4 , 85.32, 5.03, 'Allocated', '2017-03-14') +,(4185, 619, 9 , 64.97, 1.57, 'No Stock' , '2016-10-19') +,(4186, 605, 2 , 80.08, 7.63, 'On Order' , '2017-01-31') +,(4187, 602, 9 , 87.92, 7.74, 'On Order' , '2016-11-13') +,(4187, 616, 3 , 73.39, 6.52, 'On Order' , '2016-09-15') +,(4188, 604, 8 , 30.36, 1.97, 'No Stock' , '2016-06-05') +,(4188, 605, 5 , 70.95, 6.11, 'On Order' , '2016-03-31') +,(4188, 611, 3 , 23.18, 8.76, 'On Order' , '2016-03-30') +,(4189, 608, 4 , 52.23, 3.08, 'No Stock' , '2016-04-12') +,(4190, 602, 10, 17.3 , 4.18, 'No Stock' , '2016-03-29') +,(4190, 615, 6 , 34.29, 9.45, 'Allocated', '2016-11-01') +,(4191, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4192, 602, 4 , 90.29, 5.09, 'Allocated', '2017-02-14') +,(4192, 605, 8 , 1.03 , 1.28, 'On Order' , '2017-02-14') +,(4192, 615, 1 , 11.61, 7.49, 'No Stock' , '2016-08-11') +,(4193, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4194, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4195, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4196, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4197, 608, 10, 60.36, 3.99, 'On Order' , '2016-10-30') +,(4198, 606, 1 , 58.71, 2.32, 'No Stock' , '2016-06-26') +,(4199, 602, 8 , 12.59, 9.45, 'Allocated', '2016-04-16') +,(4199, 603, 7 , 5.5 , 2.26, 'No Stock' , '2016-11-28') +,(4200, 605, 10, 92.81, 1.0 , 'No Stock' , '2017-03-07') +,(4201, 606, 3 , 46.48, 5.94, 'Allocated', '2016-12-15') +,(4201, 608, 2 , 97.29, 5.87, 'No Stock' , '2016-09-12') +,(4202, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4202, 608, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4203, 610, 2 , 29.12, 6.46, 'No Stock' , '2016-10-27') +,(4203, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4204, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4204, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4205, 610, 4 , 78.23, 5.95, 'No Stock' , '2016-06-21') +,(4205, 609, 4 , 56.7 , 2.07, 'No Stock' , '2017-03-11') +,(4206, 603, 2 , 40.49, 6.94, 'On Order' , '2017-02-23') +,(4206, 619, 6 , 80.19, 3.28, 'No Stock' , '2017-01-21') +,(4207, 604, 9 , 84.48, 7.01, 'No Stock' , '2016-08-17') +,(4207, 605, 9 , 41.79, 1.55, 'On Order' , '2016-06-27') +,(4207, 610, 5 , 12.3 , 9.51, 'On Order' , '2016-05-17') +,(4208, 603, 7 , 37.26, 3.68, 'Allocated', '2016-03-30') +,(4208, 605, 5 , 82.65, 2.76, 'On Order' , '2016-12-11') +,(4208, 607, 1 , 84.88, 8.67, 'No Stock' , '2016-04-28') +,(4208, 609, 1 , 88.01, 1.98, 'Allocated', '2016-10-04') +,(4208, 610, 6 , 88.85, 4.2 , 'No Stock' , '2016-04-19') +,(4209, 606, 6 , 46.31, 8.98, 'Allocated', '2016-04-20') +,(4210, 603, 2 , 92.12, 8.78, 'No Stock' , '2016-12-11') +,(4210, 609, 7 , 70.37, 6.89, 'Allocated', '2016-06-23') +,(4211, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4212, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4213, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4214, 608, 3 , 37.43, 5.18, 'Allocated', '2016-05-15') +,(4214, 610, 9 , 35.48, 7.16, 'On Order' , '2017-02-13') +,(4214, 611, 7 , 84.99, 8.17, 'No Stock' , '2016-07-08') +,(4215, 610, 5 , 4.35 , 2.65, 'Allocated', '2016-07-24') +,(4216, 606, 3 , 79.91, 8.92, 'Allocated', '2016-05-02') +,(4216, 608, 8 , 45.75, 3.7 , 'Allocated', '2017-02-24') +,(4216, 615, 1 , 55.11, 8.94, 'No Stock' , '2016-05-06') +,(4217, 605, 5 , 40.67, 3.31, 'On Order' , '2016-11-09') +,(4217, 610, 5 , 20.0 , 8.58, 'On Order' , '2016-07-27') +,(4218, 615, 7 , 34.14, 8.03, 'Allocated', '2016-11-12') +,(4218, 619, 9 , 62.61, 5.74, 'On Order' , '2016-11-08') +,(4219, 604, 9 , 46.24, 2.42, 'No Stock' , '2016-10-31') +,(4219, 613, 7 , 26.63, 3.9 , 'No Stock' , '2016-12-04') +,(4219, 619, 1 , 98.58, 7.38, 'No Stock' , '2016-08-06') +,(4220, 604, 5 , 66.78, 9.28, 'No Stock' , '2016-10-09') +,(4220, 609, 6 , 62.82, 9.71, 'No Stock' , '2016-04-06') +,(4221, 602, 8 , 8.44 , 1.85, 'Allocated', '2016-11-25') +,(4222, 601, 10, 84.14, 2.59, 'No Stock' , '2016-06-25') +,(4222, 604, 9 , 39.15, 8.12, 'No Stock' , '2016-09-27') +,(4223, 602, 2 , 74.35, 9.94, 'Allocated', '2016-04-18') +,(4223, 611, 4 , 58.85, 6.75, 'No Stock' , '2017-03-04') +,(4224, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4225, 605, 7 , 88.08, 8.69, 'On Order' , '2016-11-13') +,(4226, 606, 1 , 84.22, 3.54, 'On Order' , '2017-01-19') +,(4226, 608, 4 , 97.1 , 4.73, 'On Order' , '2016-04-25') +,(4227, 606, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4227, 607, 9 , 74.37, 1.85, 'On Order' , '2016-12-19') +,(4228, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4228, 610, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4229, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4229, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4230, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4230, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4231, 611, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4231, 618, 6 , 36.05, 2.56, 'On Order' , '2017-02-12') +,(4232, 615, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4232, 618, 8 , 16.99, 7.26, 'No Stock' , '2016-11-28') +,(4233, 608, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 610, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4233, 618, 6 , 70.71, 1.75, 'Allocated', '2016-09-29') +,(4234, 604, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4234, 619, 5 , 15.26, 9.54, 'No Stock' , '2016-04-06') +,(4235, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4235, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4236, 607, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 617, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4236, 620, 8 , 46.97, 4.9 , 'Allocated', '2017-02-16') +,(4237, 602, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4237, 620, 1 , 27.79, 8.84, 'No Stock' , '2016-11-07') +,(4238, 602, 3 , 32.5 , 2.63, 'No Stock' , '2016-04-09') +,(4238, 608, 8 , 88.3 , 7.59, 'On Order' , '2016-08-18') +,(4239, 606, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4239, 616, 7 , 99.65, 2.31, 'Allocated', '2017-03-04') +,(4240, 606, 10, 43.66, 2.48, 'No Stock' , '2017-02-05') +,(4240, 609, 2 , 56.95, 2.11, 'No Stock' , '2016-11-15') +,(4241, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4241, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4242, 605, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 606, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4242, 607, 6 , 52.37, 8.56, 'No Stock' , '2016-06-10') +,(4243, 604, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 614, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4243, 610, 2 , 6.33 , 1.16, 'No Stock' , '2016-04-09') +,(4244, 609, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 619, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4244, 620, 4 , 67.62, 7.49, 'On Order' , '2016-09-03') +,(4245, 608, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 618, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4245, 620, 1 , 32.47, 9.9 , 'Allocated', '2017-03-14') +,(4246, 603, 10, 53.94, 3.85, 'No Stock' , '2016-06-04') +,(4246, 606, 7 , 6.16 , 9.37, 'No Stock' , '2016-07-05') +,(4246, 607, 3 , 27.34, 1.97, 'Allocated', '2016-11-15') +,(4246, 611, 4 , 73.06, 1.26, 'No Stock' , '2017-02-28') +,(4247, 601, 4 , 66.41, 4.54, 'On Order' , '2017-02-26') +,(4247, 605, 2 , 61.24, 5.9 , 'Allocated', '2016-12-15') +,(4248, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4248, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4249, 615, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 620, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4249, 609, 2 , 74.52, 3.88, 'On Order' , '2016-06-09') +,(4250, 606, 7 , 63.89, 3.39, 'On Order' , '2016-12-31') +,(4250, 612, 8 , 75.06, 4.19, 'Allocated', '2016-06-26') +,(4251, 602, 1 , 1.75 , 1.73, 'No Stock' , '2016-12-07') +,(4251, 604, 8 , 43.98, 1.58, 'Allocated', '2016-07-28') +,(4252, 606, 4 , 94.24, 1.31, 'No Stock' , '2017-03-14') +,(4252, 619, 10, 41.46, 4.18, 'No Stock' , '2017-03-03') +,(4252, 620, 3 , 29.91, 4.91, 'On Order' , '2016-12-28') +,(4253, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4253, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4254, 610, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 620, 2 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4254, 612, 3 , 5.01 , 9.93, 'On Order' , '2017-02-03') +,(4255, 610, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4255, 611, 7 , 45.49, 8.0 , 'Allocated', '2016-08-01') +,(4256, 604, 9 , 6.74 , 1.84, 'No Stock' , '2016-06-13') +,(4256, 612, 4 , 42.02, 2.86, 'Allocated', '2016-09-19') +,(4256, 620, 2 , 31.71, 4.97, 'Allocated', '2016-10-02') +,(4257, 617, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 610, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4257, 611, 1, 10.00, 1.00, 'On Order' , '2016-12-14') +,(4258, 605, 7 , 22.45, 8.41, 'On Order' , '2016-06-02') +,(4258, 615, 3 , 69.12, 3.65, 'Allocated', '2017-02-27') +,(4258, 619, 4 , 62.32, 2.23, 'Allocated', '2017-02-20') +,(4259, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4260, 603, 1 , 27.68, 1.99, 'Allocated', '2016-09-20') +,(4260, 604, 3 , 59.65, 3.05, 'No Stock' , '2016-12-31') +,(4261, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4262, 602, 4 , 51.73, 3.06, 'Allocated', '2017-01-17') +,(4263, 612, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 615, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4263, 616, 4 , 18.46, 7.86, 'Allocated', '2016-08-12') +,(4264, 604, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4264, 614, 8 , 82.02, 9.19, 'Allocated', '2016-11-28') +,(4265, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4265, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4266, 601, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4266, 602, 2 , 66.57, 6.27, 'Allocated', '2016-09-19') +,(4267, 601, 4 , 44.78, 6.86, 'No Stock' , '2016-09-27') +,(4267, 610, 4 , 19.08, 6.41, 'No Stock' , '2016-12-24') +,(4268, 611, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4268, 612, 1 , 24.72, 8.14, 'Allocated', '2016-06-08') +,(4269, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4269, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4270, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4270, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4271, 603, 2 , 80.47, 4.81, 'Allocated', '2016-05-25') +,(4271, 604, 8 , 38.65, 4.02, 'No Stock' , '2016-05-09') +,(4272, 610, 7 , 66.28, 2.85, 'No Stock' , '2016-09-17') +,(4273, 612, 10, 85.38, 8.44, 'No Stock' , '2016-12-19') +,(4274, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4275, 610, 8 , 1.12 , 8.65, 'Allocated', '2016-10-28') +,(4275, 615, 1 , 24.01, 5.55, 'No Stock' , '2016-12-30') +,(4276, 603, 3 , 44.76, 7.28, 'No Stock' , '2016-12-28') +,(4277, 610, 9 , 40.01, 8.62, 'No Stock' , '2016-11-10') +,(4278, 603, 6 , 32.0 , 1.23, 'Allocated', '2016-12-23') +,(4278, 608, 4 , 38.01, 9.45, 'Allocated', '2016-10-05') +,(4278, 609, 5 , 31.99, 5.41, 'No Stock' , '2016-10-23') +,(4279, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4280, 606, 5 , 7.52 , 2.76, 'Allocated', '2016-05-27') +,(4280, 609, 4 , 37.09, 4.44, 'On Order' , '2016-08-10') +,(4281, 610, 9 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 611, 2 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4281, 612, 1 , 37.07, 8.7 , 'On Order' , '2016-12-28') +,(4282, 601, 1 , 19.14, 3.98, 'On Order' , '2016-11-09') +,(4282, 606, 3 , 88.94, 6.79, 'On Order' , '2016-09-29') +,(4282, 609, 6 , 25.35, 5.22, 'Allocated', '2016-10-05') +,(4283, 601, 1 , 14.78, 3.31, 'On Order' , '2016-10-07') +,(4284, 606, 5 , 32.57, 7.22, 'On Order' , '2016-08-24') +,(4285, 604, 5 , 47.88, 3.77, 'No Stock' , '2016-12-09') +,(4285, 615, 8 , 9.28 , 2.13, 'Allocated', '2016-03-27') +,(4286, 620, 5 , 63.24, 7.62, 'Allocated', '2016-12-06') +,(4287, 602, 6 , 2.9 , 9.5 , 'On Order' , '2016-10-06') +,(4287, 605, 5 , 7.63 , 2.78, 'Allocated', '2016-08-22') +,(4287, 611, 1 , 8.98 , 3.39, 'Allocated', '2016-07-18') +,(4287, 614, 3 , 34.4 , 7.12, 'On Order' , '2017-03-04') +,(4288, 604, 6 , 57.67, 3.25, 'Allocated', '2016-05-18') +,(4289, 601, 7 , 19.32, 7.31, 'On Order' , '2017-01-21') +,(4289, 615, 10, 89.16, 2.08, 'No Stock' , '2016-06-03') +,(4290, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4291, 601, 1 , 68.5 , 2.58, 'Allocated', '2016-11-05') +,(4291, 603, 5 , 11.27, 5.56, 'Allocated', '2016-06-10') +,(4291, 606, 1 , 76.82, 3.31, 'Allocated', '2016-09-27') +,(4292, 608, 10, 27.45, 4.8 , 'On Order' , '2016-05-12') +,(4292, 610, 9 , 16.78, 5.96, 'No Stock' , '2016-05-05') +,(4293, 612, 4 , 69.21, 2.07, 'Allocated', '2016-08-23') +,(4294, 619, 4 , 81.5 , 9.13, 'Allocated', '2017-01-20') +,(4295, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4296, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4297, 604, 4 , 19.21, 1.7 , 'Allocated', '2016-08-20') +,(4297, 606, 4 , 71.24, 5.74, 'No Stock' , '2016-10-11') +,(4298, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4299, 603, 8 , 81.7 , 5.69, 'Allocated', '2016-07-06') +,(4300, 601, 5 , 35.51, 8.38, 'On Order' , '2016-12-23') +,(4300, 607, 5 , 46.94, 6.82, 'No Stock' , '2016-07-29') +,(4301, 605, 6 , 99.32, 1.22, 'Allocated', '2016-09-02') +,(4301, 620, 7 , 96.67, 6.9 , 'Allocated', '2016-11-24') +,(4302, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4303, 605, 8 , 31.92, 5.62, 'On Order' , '2016-04-09') +,(4304, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4305, 606, 1 , 2.53 , 1.15, 'On Order' , '2016-12-03') +,(4305, 609, 6 , 76.41, 7.87, 'Allocated', '2016-07-05') +,(4305, 612, 3 , 31.58, 5.53, 'On Order' , '2016-10-01') +,(4306, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4307, 601, 7 , 36.63, 3.9 , 'On Order' , '2016-09-16') +,(4307, 606, 10, 56.47, 8.96, 'No Stock' , '2017-02-25') +,(4308, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4309, 606, 6 , 84.25, 2.28, 'On Order' , '2016-04-07') +,(4310, 605, 7 , 15.88, 2.48, 'Allocated', '2017-02-17') +,(4311, 603, 2 , 67.26, 6.18, 'No Stock' , '2016-05-06') +,(4312, 619, 4 , 87.5 , 6.57, 'Allocated', '2017-03-14') +,(4313, 602, 3 , 87.01, 4.45, 'On Order' , '2016-08-30') +,(4313, 610, 7 , 54.92, 8.87, 'No Stock' , '2017-01-20') +,(4314, 602, 9 , 49.19, 2.67, 'Allocated', '2016-07-24') +,(4314, 607, 10, 32.19, 8.12, 'On Order' , '2016-11-23') +,(4315, 602, 7 , 9.25 , 3.78, 'On Order' , '2017-01-04') +,(4316, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4317, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4318, 609, 5 , 29.17, 3.35, 'No Stock' , '2016-11-28') +,(4318, 610, 4 , 41.75, 3.7 , 'On Order' , '2016-09-09') +,(4318, 620, 5 , 81.63, 1.49, 'On Order' , '2016-04-16') +,(4319, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4320, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4321, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4322, 603, 2 , 21.09, 9.37, 'No Stock' , '2016-11-29') +,(4323, 608, 8 , 24.05, 9.49, 'On Order' , '2016-08-12') +,(4324, 607, 7 , 83.23, 1.48, 'On Order' , '2016-07-10') +,(4325, 608, 10, 35.28, 1.8 , 'Allocated', '2016-09-01') +,(4326, 602, 8 , 69.18, 4.43, 'No Stock' , '2016-07-31') +,(4326, 610, 2 , 24.44, 8.1 , 'No Stock' , '2016-03-29') +,(4327, 608, 3 , 22.57, 4.64, 'Allocated', '2016-03-23') +,(4328, 604, 1 , 55.53, 3.16, 'On Order' , '2016-12-14') +,(4328, 605, 2 , 38.78, 6.97, 'Allocated', '2017-03-04') +,(4328, 607, 5 , 28.94, 3.59, 'Allocated', '2016-08-01') +,(4329, 603, 6 , 65.93, 2.86, 'On Order' , '2016-10-25') +,(4330, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4331, 602, 5 , 37.37, 6.39, 'No Stock' , '2016-03-19') +,(4332, 606, 5 , 93.96, 3.31, 'No Stock' , '2016-08-09') +,(4332, 610, 5 , 3.77 , 6.74, 'Allocated', '2016-06-23') +,(4333, 608, 7 , 14.29, 3.95, 'On Order' , '2016-06-16') +,(4334, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4335, 609, 6 , 63.15, 9.3 , 'Allocated', '2016-08-31') +,(4336, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4337, 610, 1 , 52.98, 5.68, 'Allocated', '2016-03-19') +,(4338, 610, 1 , 83.94, 3.56, 'Allocated', '2016-11-03') +,(4339, 604, 10, 78.06, 5.32, 'No Stock' , '2016-11-19') +,(4340, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4341, 609, 6 , 52.04, 7.63, 'No Stock' , '2016-11-25') +,(4341, 615, 1 , 9.44 , 8.66, 'No Stock' , '2016-09-06') +,(4342, 615, 6 , 67.41, 8.5 , 'Allocated', '2016-08-28') +,(4343, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4344, 610, 10, 61.53, 5.36, 'On Order' , '2016-04-30') +,(4345, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4346, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4347, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4348, 608, 1 , 96.42, 4.57, 'On Order' , '2016-05-14') +,(4348, 610, 3 , 38.0 , 5.74, 'On Order' , '2016-05-30') +,(4348, 611, 6 , 38.59, 6.7 , 'On Order' , '2016-08-16') +,(4349, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4350, 602, 8 , 81.72, 7.57, 'Allocated', '2016-08-18') +,(4350, 604, 6 , 95.31, 9.43, 'On Order' , '2016-12-29') +,(4350, 608, 9 , 43.57, 6.54, 'No Stock' , '2016-08-24') +,(4351, 602, 1 , 37.63, 3.31, 'No Stock' , '2016-08-26') +,(4351, 607, 9 , 83.22, 2.44, 'No Stock' , '2016-04-11') +,(4352, 602, 3 , 13.09, 3.98, 'No Stock' , '2016-10-03') +,(4352, 603, 9 , 88.58, 4.87, 'On Order' , '2017-03-05') +,(4352, 614, 4 , 47.62, 5.05, 'Allocated', '2016-05-30') +,(4353, 612, 9 , 28.8 , 1.77, 'Allocated', '2016-03-28') +,(4354, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4355, 607, 4 , 20.25, 3.18, 'No Stock' , '2016-04-27') +,(4355, 608, 9 , 73.3 , 5.95, 'Allocated', '2016-12-08') +,(4355, 609, 7 , 26.16, 6.88, 'Allocated', '2016-12-09') +,(4356, 614, 8 , 93.97, 2.88, 'No Stock' , '2016-06-14') +,(4357, 605, 6 , 24.39, 5.53, 'No Stock' , '2016-07-31') +,(4357, 612, 4 , 71.28, 1.94, 'No Stock' , '2016-07-08') +,(4358, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4359, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4360, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4361, 601, 6 , 45.27, 1.05, 'Allocated', '2016-03-29') +,(4361, 609, 10, 39.75, 1.28, 'On Order' , '2016-07-15') +,(4362, 603, 4 , 42.92, 5.17, 'No Stock' , '2016-09-24') +,(4363, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4364, 602, 8 , 90.01, 4.2 , 'On Order' , '2017-02-09') +,(4365, 601, 2 , 92.96, 3.73, 'Allocated', '2016-06-10') +,(4365, 603, 7 , 86.67, 9.6 , 'On Order' , '2016-07-31') +,(4366, 604, 6 , 52.01, 2.02, 'No Stock' , '2016-09-23') +,(4366, 605, 9 , 88.21, 3.68, 'On Order' , '2016-08-10') +,(4366, 609, 8 , 80.78, 3.99, 'No Stock' , '2016-05-07') +,(4367, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4368, 604, 4 , 53.46, 4.56, 'No Stock' , '2016-09-07') +,(4369, 612, 2 , 8.5 , 3.86, 'Allocated', '2017-01-20') +,(4370, 603, 9 , 46.22, 8.2 , 'On Order' , '2016-09-02') +,(4370, 604, 10, 10.38, 2.29, 'Allocated', '2016-06-03') +,(4371, 610, 10, 23.33, 4.07, 'On Order' , '2016-08-25') +,(4372, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4373, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4374, 604, 3 , 29.51, 2.34, 'No Stock' , '2017-03-07') +,(4375, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4376, 608, 10, 5.55 , 3.21, 'No Stock' , '2016-09-14') +,(4377, 602, 9 , 91.62, 8.57, 'On Order' , '2016-08-26') +,(4378, 603, 8 , 74.83, 5.38, 'On Order' , '2016-04-11') +,(4379, 605, 9 , 53.7 , 5.65, 'On Order' , '2016-10-29') +,(4380, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4381, 619, 1 , 35.54, 3.78, 'Allocated', '2016-07-27') +,(4382, 602, 8 , 33.64, 7.95, 'Allocated', '2016-11-05') +,(4382, 606, 4 , 68.17, 6.06, 'On Order' , '2017-01-22') +,(4383, 613, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4384, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4385, 609, 1 , 18.13, 8.94, 'On Order' , '2016-03-25') +,(4386, 613, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4387, 602, 8 , 86.06, 9.74, 'Allocated', '2016-12-01') +,(4387, 606, 8 , 87.31, 7.53, 'No Stock' , '2016-06-12') +,(4387, 610, 3 , 47.55, 5.2 , 'Allocated', '2016-10-06') +,(4388, 602, 4 , 5.86 , 3.52, 'On Order' , '2016-05-09') +,(4388, 603, 8 , 24.25, 6.18, 'Allocated', '2016-09-22') +,(4388, 606, 6 , 29.46, 2.93, 'Allocated', '2016-09-11') +,(4388, 619, 1 , 36.76, 7.37, 'No Stock' , '2016-12-29') +,(4389, 602, 1 , 94.23, 9.35, 'Allocated', '2016-06-13') +,(4389, 603, 2 , 40.15, 8.39, 'No Stock' , '2016-08-09') +,(4390, 609, 4 , 7.02 , 5.61, 'On Order' , '2016-11-29') +,(4391, 607, 1 , 48.41, 8.97, 'On Order' , '2016-07-10') +,(4392, 603, 8 , 74.91, 8.23, 'No Stock' , '2016-04-07') +,(4393, 611, 4 , 55.83, 4.56, 'Allocated', '2016-04-13') +,(4394, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4395, 610, 7 , 82.73, 5.09, 'No Stock' , '2016-09-27') +,(4395, 617, 6 , 26.05, 6.29, 'On Order' , '2016-07-24') +,(4396, 605, 9 , 66.19, 1.32, 'No Stock' , '2017-02-05') +,(4396, 619, 4 , 3.15 , 1.04, 'On Order' , '2016-07-08') +,(4397, 619, 9 , 78.52, 7.64, 'No Stock' , '2016-08-19') +,(4398, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4399, 610, 7 , 85.03, 4.71, 'No Stock' , '2016-05-04') +,(4400, 612, 9 , 36.85, 6.54, 'On Order' , '2016-10-31') +,(4400, 620, 2 , 15.9 , 5.62, 'On Order' , '2016-06-18') +,(4401, 602, 1 , 91.01, 4.13, 'No Stock' , '2016-09-27') +,(4401, 604, 10, 98.7 , 5.27, 'Allocated', '2016-06-03') +,(4402, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4403, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4404, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4405, 604, 3 , 46.99, 9.31, 'No Stock' , '2016-09-08') +,(4405, 610, 10, 4.94 , 1.68, 'On Order' , '2016-11-15') +,(4406, 602, 7 , 25.84, 7.67, 'On Order' , '2016-10-28') +,(4406, 606, 2 , 96.43, 5.64, 'No Stock' , '2016-11-14') +,(4406, 607, 10, 14.91, 3.88, 'No Stock' , '2016-06-18') +,(4407, 606, 9 , 20.82, 6.82, 'No Stock' , '2016-10-08') +,(4407, 608, 4 , 29.19, 7.26, 'No Stock' , '2016-12-15') +,(4408, 605, 4 , 12.83, 9.29, 'No Stock' , '2016-11-20') +,(4408, 615, 4 , 89.77, 2.7 , 'No Stock' , '2017-03-07') +,(4408, 619, 3 , 36.44, 8.86, 'No Stock' , '2016-12-17') +,(4409, 602, 2 , 36.96, 9.73, 'Allocated', '2016-08-19') +,(4409, 611, 7 , 94.98, 4.11, 'On Order' , '2016-05-17') +,(4410, 603, 7 , 13.79, 5.05, 'No Stock' , '2016-09-28') +,(4410, 604, 10, 70.24, 4.07, 'No Stock' , '2016-10-27') +,(4410, 607, 6 , 26.39, 7.8 , 'No Stock' , '2016-03-21') +,(4411, 602, 7 , 3.47 , 3.86, 'No Stock' , '2017-03-14') +,(4411, 611, 3 , 10.43, 3.67, 'On Order' , '2016-12-27') +,(4412, 605, 10, 26.07, 6.78, 'Allocated', '2017-02-16') +,(4412, 607, 7 , 76.81, 5.67, 'No Stock' , '2016-11-26') +,(4412, 610, 3 , 98.77, 3.34, 'On Order' , '2016-09-29') +,(4413, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4414, 606, 5 , 26.01, 4.54, 'On Order' , '2016-03-23') +,(4415, 605, 5 , 74.86, 1.68, 'No Stock' , '2016-09-18') +,(4416, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4417, 601, 6 , 66.38, 5.22, 'No Stock' , '2016-07-07') +,(4417, 604, 7 , 96.99, 4.89, 'No Stock' , '2016-09-30') +,(4418, 609, 8 , 59.88, 5.52, 'Allocated', '2016-09-03') +,(4419, 604, 4 , 54.04, 4.95, 'On Order' , '2017-01-05') +,(4420, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4421, 605, 2 , 96.34, 1.7 , 'On Order' , '2016-06-10') +,(4422, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4423, 602, 3 , 25.88, 5.34, 'Allocated', '2016-04-19') +,(4423, 605, 5 , 4.06 , 2.22, 'On Order' , '2016-06-21') +,(4423, 608, 9 , 20.4 , 4.26, 'On Order' , '2016-08-17') +,(4424, 605, 8 , 44.66, 4.23, 'Allocated', '2016-11-06') +,(4425, 607, 7 , 18.91, 6.75, 'On Order' , '2016-11-28') +,(4425, 608, 4 , 60.11, 4.46, 'No Stock' , '2017-02-15') +,(4426, 606, 8 , 44.98, 6.5 , 'On Order' , '2016-11-13') +,(4426, 607, 4 , 78.46, 2.91, 'Allocated', '2017-01-26') +,(4427, 604, 2 , 61.91, 3.08, 'On Order' , '2016-09-01') +,(4427, 607, 10, 53.82, 8.17, 'No Stock' , '2016-11-09') +,(4428, 603, 2 , 81.15, 5.94, 'Allocated', '2016-12-01') +,(4428, 605, 9 , 48.38, 5.26, 'On Order' , '2016-07-08') +,(4429, 606, 10, 28.8 , 2.75, 'Allocated', '2017-03-03') +,(4430, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4431, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4432, 603, 9 , 52.12, 4.42, 'No Stock' , '2016-09-03') +,(4433, 601, 4 , 34.09, 9.94, 'No Stock' , '2016-04-18') +,(4433, 605, 1 , 65.04, 7.32, 'On Order' , '2016-04-04') +,(4434, 601, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 605, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4434, 607, 2 , 61.28, 1.15, 'On Order' , '2016-03-18') +,(4435, 610, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 612, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4435, 614, 10, 9.19 , 7.18, 'On Order' , '2016-12-08') +,(4436, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4436, 620, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4437, 601, 7 , 56.48, 9.07, 'Allocated', '2016-05-05') +,(4437, 602, 1 , 98.71, 8.08, 'On Order' , '2017-03-16') +,(4437, 609, 7 , 12.69, 5.56, 'On Order' , '2016-12-16') +,(4438, 604, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 605, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4438, 606, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 615, 5 , 11.46, 3.07, 'Allocated', '2016-06-10') +,(4439, 618, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4439, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 603, 9 , 66.05, 8.7 , 'No Stock' , '2016-11-08') +,(4440, 616, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4440, 620, 1 , 97.24, 5.43, 'Allocated', '2016-10-22') +,(4441, 602, 4 , 79.49, 2.54, 'Allocated', '2017-02-19') +,(4441, 609, 4 , 88.86, 9.63, 'Allocated', '2016-06-06') +,(4442, 608, 1 , 55.66, 2.52, 'Allocated', '2016-09-08') +,(4443, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4444, 602, 4 , 52.6 , 9.83, 'On Order' , '2017-01-18') +,(4444, 605, 8 , 81.63, 9.58, 'On Order' , '2017-01-27') +,(4445, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 601, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4445, 607, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4446, 602, 3 , 76.28, 1.52, 'On Order' , '2017-02-17') +,(4446, 606, 5 , 18.52, 2.13, 'On Order' , '2016-06-28') +,(4447, 609, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 608, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4447, 607, 9 , 54.61, 4.47, 'Allocated', '2016-07-08') +,(4448, 605, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 606, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4448, 607, 2 , 69.71, 2.05, 'No Stock' , '2016-09-17') +,(4449, 618, 6 , 35.62, 5.23, 'On Order' , '2016-04-15') +,(4449, 619, 10, 86.97, 4.63, 'No Stock' , '2016-09-29') +,(4450, 619, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 620, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4450, 601, 8 , 26.14, 4.87, 'On Order' , '2016-12-09') +,(4451, 604, 3 , 47.48, 1.4 , 'Allocated', '2016-09-12') +,(4452, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4453, 606, 2 , 4.03 , 8.07, 'On Order' , '2016-12-10') +,(4454, 619, 7 , 55.92, 9.0 , 'On Order' , '2016-10-07') +,(4455, 602, 10, 50.3 , 9.33, 'On Order' , '2017-01-11') +,(4455, 603, 1 , 7.68 , 7.77, 'Allocated', '2016-12-09') +,(4455, 605, 1 , 98.23, 3.73, 'Allocated', '2016-07-07') +,(4456, 607, 8 , 54.83, 9.57, 'No Stock' , '2016-08-16') +,(4456, 612, 7 , 97.34, 1.24, 'Allocated', '2016-05-13') +,(4457, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4458, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4459, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4460, 602, 8 , 37.95, 8.36, 'No Stock' , '2017-01-03') +,(4461, 620, 6 , 73.77, 2.02, 'Allocated', '2016-03-27') +,(4462, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4463, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4464, 606, 1 , 31.6 , 1.18, 'On Order' , '2016-09-05') +,(4465, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4466, 620, 10, 37.79, 1.76, 'Allocated', '2016-12-14') +,(4467, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4468, 610, 3 , 80.77, 6.87, 'Allocated', '2016-12-30') +,(4469, 602, 3 , 19.99, 5.21, 'No Stock' , '2016-08-11') +,(4469, 612, 3 , 73.21, 4.85, 'On Order' , '2017-02-19') +,(4470, 607, 4 , 7.7 , 5.78, 'No Stock' , '2016-04-22') +,(4471, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4472, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4473, 609, 2 , 97.6 , 1.84, 'Allocated', '2016-05-12') +,(4474, 611, 7 , 12.5 , 6.31, 'Allocated', '2016-04-18') +,(4475, 603, 2 , 44.42, 7.21, 'No Stock' , '2017-03-10') +,(4476, 603, 4 , 43.47, 5.63, 'No Stock' , '2016-09-17') +,(4477, 603, 4 , 24.99, 4.46, 'No Stock' , '2016-09-10') +,(4478, 606, 1 , 29.13, 4.59, 'On Order' , '2017-03-04') +,(4478, 619, 4 , 58.05, 2.9 , 'Allocated', '2017-01-26') +,(4479, 603, 10, 93.2 , 7.79, 'On Order' , '2016-03-21') +,(4479, 609, 4 , 70.36, 9.01, 'Allocated', '2017-02-03') +,(4479, 610, 6 , 49.48, 6.79, 'Allocated', '2017-03-01') +,(4480, 608, 9 , 11.03, 6.26, 'On Order' , '2016-12-10') +,(4481, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4482, 603, 10, 28.92, 8.1 , 'No Stock' , '2016-05-27') +,(4482, 607, 6 , 90.11, 5.74, 'On Order' , '2016-04-29') +,(4482, 610, 4 , 7.12 , 2.89, 'On Order' , '2017-01-12') +,(4482, 611, 1 , 12.48, 8.56, 'No Stock' , '2016-08-16') +,(4482, 614, 10, 55.93, 1.63, 'On Order' , '2016-07-09') +,(4482, 618, 1 , 33.9 , 2.46, 'Allocated', '2016-07-11') +,(4483, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4484, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4485, 605, 7 , 99.92, 1.31, 'No Stock' , '2016-05-11') +,(4486, 615, 7 , 4.39 , 3.61, 'Allocated', '2016-06-24') +,(4487, 602, 9 , 69.78, 7.96, 'No Stock' , '2016-12-29') +,(4487, 607, 5 , 24.92, 8.97, 'On Order' , '2016-08-15') +,(4487, 615, 4 , 72.16, 8.97, 'On Order' , '2016-07-28') +,(4488, 601, 9 , 64.29, 1.52, 'On Order' , '2016-03-30') +,(4488, 609, 10, 66.79, 5.3 , 'On Order' , '2016-07-11') +,(4489, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4490, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4491, 602, 3 , 16.8 , 5.22, 'On Order' , '2016-09-16') +,(4492, 607, 4 , 99.59, 2.45, 'On Order' , '2017-03-04') +,(4493, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4494, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4495, 607, 7 , 86.05, 5.4 , 'Allocated', '2016-10-03') +,(4496, 603, 10, 55.12, 3.71, 'Allocated', '2016-07-06') +,(4497, 607, 7 , 27.3 , 4.26, 'Allocated', '2017-01-29') +,(4498, 604, 10, 89.58, 1.25, 'Allocated', '2016-03-19') +,(4498, 610, 10, 69.32, 2.48, 'No Stock' , '2016-06-24') +,(4499, 601, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 602, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4499, 603, 4 , 56.58, 6.73, 'No Stock' , '2017-02-21') +,(4500, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4500, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4500, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 620, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 619, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4501, 618, 10, 54.41, 7.02, 'No Stock' , '2016-11-30') +,(4502, 603, 2 , 27.21, 1.12, 'No Stock' , '2016-07-27') +,(4502, 605, 9 , 39.93, 3.2 , 'On Order' , '2016-11-21') +,(4503, 615, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 611, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4503, 612, 6 , 85.1 , 8.26, 'No Stock' , '2016-05-03') +,(4504, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4504, 619, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4505, 612, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 609, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4505, 601, 3 , 10.99, 1.62, 'Allocated', '2016-09-04') +,(4506, 602, 7 , 88.03, 1.0 , 'On Order' , '2016-09-23') +,(4506, 603, 9 , 66.78, 1.18, 'Allocated', '2017-02-03') +,(4506, 606, 10, 85.37, 2.21, 'Allocated', '2016-10-03') +,(4506, 609, 9 , 84.3 , 4.06, 'Allocated', '2016-12-08') +,(4507, 617, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4508, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4509, 611, 2 , 99.24, 8.51, 'Allocated', '2016-08-12') +,(4509, 612, 8 , 2.41 , 3.81, 'On Order' , '2016-08-30') +,(4510, 614, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4511, 610, 3 , 73.48, 8.4 , 'Allocated', '2016-12-06') +,(4511, 611, 4 , 7.29 , 6.91, 'Allocated', '2016-12-23') +,(4511, 616, 5 , 26.16, 6.26, 'On Order' , '2016-12-09') +,(4512, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4513, 614, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4514, 605, 6 , 86.17, 7.08, 'No Stock' , '2017-01-25') +,(4514, 610, 6 , 71.51, 6.3 , 'No Stock' , '2017-01-23') +,(4515, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4516, 618, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4517, 604, 10, 55.76, 7.34, 'Allocated', '2016-10-23') +,(4517, 619, 2 , 1.09 , 7.07, 'Allocated', '2016-08-19') +,(4518, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4519, 609, 9 , 61.39, 7.83, 'On Order' , '2016-07-01') +,(4520, 619, 9 , 72.61, 9.55, 'No Stock' , '2016-10-08') +,(4521, 610, 10, 19.38, 3.54, 'Allocated', '2016-12-08') +,(4521, 615, 8 , 54.35, 7.77, 'No Stock' , '2017-01-31') +,(4522, 602, 9 , 68.98, 6.79, 'No Stock' , '2016-11-28') +,(4523, 606, 9 , 79.86, 1.63, 'No Stock' , '2016-05-25') +,(4524, 602, 9 , 91.58, 3.46, 'On Order' , '2017-03-12') +,(4525, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4526, 603, 9 , 56.56, 7.64, 'On Order' , '2016-10-14') +,(4526, 604, 4 , 80.67, 2.83, 'No Stock' , '2016-07-29') +,(4526, 610, 5 , 88.8 , 2.86, 'On Order' , '2017-02-25') +,(4527, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4528, 605, 4 , 73.64, 8.81, 'Allocated', '2017-01-26') +,(4528, 609, 4 , 64.56, 4.09, 'On Order' , '2016-10-03') +,(4529, 616, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4530, 602, 9 , 70.97, 4.73, 'On Order' , '2016-12-07') +,(4531, 606, 10, 26.53, 2.83, 'No Stock' , '2016-03-25') +,(4531, 615, 5 , 79.05, 6.82, 'Allocated', '2016-08-04') +,(4531, 619, 4 , 36.14, 7.09, 'No Stock' , '2016-03-26') +,(4532, 605, 5 , 6.28 , 9.94, 'No Stock' , '2017-03-13') +,(4532, 610, 8 , 17.25, 3.68, 'Allocated', '2016-05-28') +,(4533, 615, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4534, 606, 8 , 60.95, 9.33, 'Allocated', '2016-07-15') +,(4534, 607, 10, 49.84, 8.32, 'No Stock' , '2016-04-24') +,(4535, 610, 6 , 17.67, 1.81, 'On Order' , '2017-03-01') +,(4535, 619, 3 , 88.0 , 3.12, 'Allocated', '2016-07-11') +,(4536, 615, 5 , 88.08, 4.93, 'Allocated', '2016-12-04') +,(4537, 611, 2 , 14.77, 4.04, 'No Stock' , '2016-03-25') +,(4538, 603, 6 , 3.51 , 4.54, 'Allocated', '2016-04-21') +,(4539, 603, 7 , 6.58 , 4.8 , 'Allocated', '2016-05-14') +,(4540, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4540, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4541, 603, 5 , 37.47, 2.89, 'On Order' , '2016-04-07') +,(4541, 607, 4 , 35.17, 5.44, 'No Stock' , '2017-01-07') +,(4541, 615, 2 , 83.62, 4.01, 'Allocated', '2016-11-22') +,(4542, 605, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 601, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4542, 603, 10, 92.43, 3.27, 'On Order' , '2017-01-23') +,(4543, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4543, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4544, 611, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 610, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4544, 609, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4545, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 604, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4545, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 606, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4546, 608, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4547, 606, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 602, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4547, 603, 4 , 81.81, 9.44, 'No Stock' , '2016-05-14') +,(4548, 614, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 611, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4548, 615, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4549, 605, 9 , 24.12, 7.26, 'No Stock' , '2016-08-22') +,(4549, 606, 7 , 6.19 , 4.68, 'Allocated', '2016-09-02') +,(4550, 609, 8 , 49.04, 7.62, 'On Order' , '2016-06-10') +,(4550, 610, 10, 92.51, 4.84, 'No Stock' , '2017-02-24') +,(4551, 601, 3 , 85.1 , 2.45, 'Allocated', '2016-07-08') +,(4551, 602, 3 , 69.43, 1.31, 'No Stock' , '2017-03-15') +,(4551, 610, 1 , 19.38, 8.43, 'No Stock' , '2016-11-09') +,(4552, 601, 2 , 91.69, 8.12, 'On Order' , '2016-06-03') +,(4552, 613, 3 , 41.15, 6.38, 'No Stock' , '2016-04-11') +,(4553, 603, 1 , 5.22 , 8.43, 'On Order' , '2016-10-28') +,(4554, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4555, 607, 6 , 77.16, 3.07, 'No Stock' , '2016-04-29') +,(4555, 612, 9 , 81.31, 9.81, 'On Order' , '2017-01-24') +,(4556, 615, 10, 65.81, 7.25, 'Allocated', '2016-11-07') +,(4557, 603, 1 , 5.01 , 4.57, 'No Stock' , '2016-09-05') +,(4557, 606, 3 , 29.35, 8.67, 'On Order' , '2016-09-14') +,(4558, 601, 3 , 29.62, 7.16, 'No Stock' , '2016-11-06') +,(4559, 620, 2 , 87.83, 7.93, 'On Order' , '2016-11-09') +,(4560, 610, 7 , 9.51 , 8.01, 'On Order' , '2016-08-22') +,(4561, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4562, 610, 9 , 15.1 , 6.8 , 'Allocated', '2016-08-27') +,(4562, 611, 3 , 71.09, 1.26, 'No Stock' , '2016-07-12') +,(4563, 618, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4564, 602, 2 , 6.68 , 6.29, 'Allocated', '2016-03-19') +,(4565, 603, 7 , 81.01, 2.82, 'Allocated', '2017-03-06') +,(4565, 606, 8 , 99.68, 6.28, 'No Stock' , '2016-04-27') +,(4566, 614, 7 , 57.79, 4.48, 'No Stock' , '2016-11-02') +,(4567, 604, 7 , 94.42, 5.46, 'No Stock' , '2016-05-18') +,(4567, 605, 1 , 61.75, 1.31, 'Allocated', '2016-04-14') +,(4567, 608, 10, 25.99, 4.85, 'On Order' , '2016-05-01') +,(4567, 620, 9 , 62.17, 4.66, 'Allocated', '2016-06-11') +,(4568, 606, 8 , 66.92, 1.1 , 'Allocated', '2016-10-02') +,(4568, 607, 10, 95.6 , 9.17, 'On Order' , '2016-05-04') +,(4568, 608, 6 , 81.57, 6.24, 'No Stock' , '2017-01-24') +,(4569, 601, 10, 96.56, 6.33, 'Allocated', '2016-07-22') +,(4570, 610, 6 , 98.15, 2.57, 'No Stock' , '2016-06-28') +,(4571, 604, 8 , 5.15 , 2.51, 'No Stock' , '2016-07-11') +,(4572, 603, 2 , 59.21, 2.46, 'Allocated', '2016-11-18') +,(4573, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4574, 615, 3 , 14.81, 9.61, 'On Order' , '2016-05-04') +,(4575, 608, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 611, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4575, 615, 10, 79.25, 7.08, 'On Order' , '2016-11-19') +,(4576, 607, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 608, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4576, 610, 7 , 31.78, 2.05, 'On Order' , '2016-03-17') +,(4577, 604, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 603, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4577, 601, 5 , 92.54, 6.26, 'On Order' , '2016-04-22') +,(4578, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 602, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4578, 603, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4579, 615, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 616, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4579, 620, 10, 70.19, 5.85, 'No Stock' , '2016-09-11') +,(4580, 601, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 603, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 605, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4580, 609, 1 , 15.44, 3.76, 'No Stock' , '2016-04-08') +,(4581, 607, 8 , 42.4 , 9.73, 'On Order' , '2016-06-04') +,(4581, 610, 9 , 79.73, 3.87, 'On Order' , '2016-04-20') +,(4581, 611, 5 , 78.01, 3.65, 'On Order' , '2016-03-17') +,(4581, 616, 5 , 50.56, 5.24, 'No Stock' , '2016-07-06') +,(4582, 609, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 607, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4582, 606, 7 , 65.99, 9.4 , 'No Stock' , '2016-05-22') +,(4583, 604, 9 , 19.92, 6.51, 'Allocated', '2016-04-13') +,(4583, 610, 1 , 19.4 , 8.3 , 'On Order' , '2016-12-08') +,(4584, 617, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 620, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4584, 613, 1 , 10.00, 1.00, 'No Stock' , '2016-12-14') +,(4585, 602, 2 , 90.57, 2.52, 'Allocated', '2016-05-22') +,(4585, 610, 10, 44.26, 3.84, 'On Order' , '2016-12-27') +,(4586, 604, 2 , 56.61, 9.64, 'Allocated', '2017-02-23') +,(4586, 612, 7 , 24.24, 7.68, 'On Order' , '2016-04-04') +,(4587, 615, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 611, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4587, 612, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4588, 616, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 601, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4588, 602, 1 , 10.00, 1.00, 'Allocated', '2016-12-14') +,(4589, 601, 5 , 52.25, 4.47, 'Allocated', '2016-07-02') +,(4589, 603, 9 , 72.27, 4.97, 'On Order' , '2016-04-03') +,(4590, 610, 3 , 46.2 , 6.71, 'Allocated', '2016-12-16') +,(4590, 615, 5 , 52.0 , 5.26, 'On Order' , '2016-06-01') +,(4591, 601, 1 , 96.52, 2.39, 'No Stock' , '2017-01-16') +,(4591, 605, 8 , 19.56, 9.68, 'On Order' , '2016-09-15') +,(4592, 609, 10, 30.76, 3.2 , 'No Stock' , '2016-05-02') +,(4592, 619, 1 , 48.47, 6.13, 'On Order' , '2016-07-19') +,(4593, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 619, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4593, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 616, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 617, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 618, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4594, 620, 1 , 10.00, 1.00, 'On Order' , '2016-12-14') +,(4595, 605, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 601, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4595, 602, 1 , 50.28, 8.15, 'Allocated', '2017-02-19') +,(4596, 605, 6 , 95.17, 7.53, 'On Order' , '2016-09-11') +,(4596, 609, 10, 82.11, 4.38, 'No Stock' , '2016-11-17') +,(4597, 608, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 605, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4597, 601, 9 , 96.25, 4.8 , 'No Stock' , '2016-07-02') +,(4598, 603, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 608, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4598, 610, 5 , 69.02, 6.1 , 'No Stock' , '2016-12-23') +,(4599, 603, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 607, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4599, 609, 9 , 40.91, 6.68, 'On Order' , '2016-12-27') +,(4600, 611, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 615, 5 , 22.93, 8.87, 'Allocated', '2016-06-16') +,(4600, 612, 5 , 22.93, 8.87, 'Allocated', '2016-06-16'); diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/logback.xml b/pro103ab-back-b/authsec_springboot/backend/target/classes/logback.xml new file mode 100644 index 0000000..12fa9be --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/logback.xml @@ -0,0 +1,108 @@ + + + + + + + + + ${LOG_PATTERN} + + + + + ${APP_LOG_ROOT}/ExceptionLogs/Error.log + + ${LOG_PATTERN} + + + ${APP_LOG_ROOT}/ExceptionLogs/Error-%d{yyyy-MM-dd}.%i.log + 1 + 10 + + + 10MB + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/messages.properties b/pro103ab-back-b/authsec_springboot/backend/target/classes/messages.properties new file mode 100644 index 0000000..b015c87 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/messages.properties @@ -0,0 +1,5 @@ + +email.notempty=Please provide valid email id. +email.valid=Email should be valid +email.regex=Enter a valid email +name.minsize=Name should have minimum 3 characters diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/note.txt b/pro103ab-back-b/authsec_springboot/backend/target/classes/note.txt new file mode 100644 index 0000000..dd9fbe6 --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/note.txt @@ -0,0 +1,57 @@ +HEADER-LINE FORM : + +GET: http://localhost:9119/api/teacher +GET: http://localhost:9119/api/teacher/{id} +PUT: http://localhost:9119/api/teacher/{id} +DELETE: http://localhost:9119/api/teacher/{id} : NEED TO MODIFY THE INCORRECT ID INPUT ERROR HANDLING +POST: http://localhost:9119/api/teacher +===EX1=== +{ + "name": "niladri", + "email": "sen.niladri6@gmail.com", + "phoneNumber": 6291, + "salary": 1000.0, + "students": [{ + "name": "paku", + "depertment": "CSE", + "rollNumber": 108 + }] +} +===EX2===: +{ + "name": "sandipan", + "email": "sandy@gmail.com", + "phoneNumber": 9038, + "salary": 2000.0, + "students": [ + { + "name": "sahil", + "depertment": "CSE", + "rollNumber": 111 + }, + { + "name": "tarun", + "depertment": "CSE", + "rollNumber": 121 + } + ] +} + +===== 6.11.36 +user.java class code changed +@Getter @Setter private List role; +TokenUtil class code change + +===== 9.11.20 +1.8 +=== SWAGGER UI ==== +http://localhost:9119/swagger-ui.html + +========= +GIT HUB COMMAND +========= +$ git commit -m "your mesage" +$ git push origin main +$ git status + +$ git push origin main diff --git a/pro103ab-back-b/authsec_springboot/backend/target/classes/schema.sql b/pro103ab-back-b/authsec_springboot/backend/target/classes/schema.sql new file mode 100644 index 0000000..573e44a --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/classes/schema.sql @@ -0,0 +1,303 @@ +/** + Model : NorthWind +**/ + +DROP SCHEMA IF EXISTS northwind; + +CREATE SCHEMA northwind; +USE northwind; + +/* Table: user (Application Users) */ +CREATE TABLE user ( + user_id NVARCHAR(20) NOT NULL, + password NVARCHAR(255) NOT NULL, + first_name NVARCHAR(50) , + last_name NVARCHAR(50) , + email NVARCHAR(70) , + security_provider_id INT , + default_customer_id INT , + company NVARCHAR(50) , + phone NVARCHAR(20) , + address1 NVARCHAR(100), + address2 NVARCHAR(100), + country NVARCHAR(20) , + postal NVARCHAR(20) , + role NVARCHAR(20) , + other_roles NVARCHAR(80) , + is_active TINYINT , + is_blocked TINYINT , + secret_question NVARCHAR(100), + secret_answer NVARCHAR(100), + enable_beta_testing TINYINT, + enable_renewal TINYINT, + CONSTRAINT user_id PRIMARY KEY(user_id) +); + +/* Table: customers */ +CREATE TABLE customers ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + company VARCHAR(50) , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: employees */ +CREATE TABLE employees ( + id INT NOT NULL, + last_name VARCHAR(50) , + first_name VARCHAR(50) , + email VARCHAR(50) , + avatar VARCHAR(250) , + job_title VARCHAR(50) , + department VARCHAR(50) , + manager_id INT , + phone VARCHAR(25) , + address1 VARCHAR(150), + address2 VARCHAR(150), + city VARCHAR(50) , + state VARCHAR(50) , + postal_code VARCHAR(15) , + country VARCHAR(50) , + PRIMARY KEY (id) +); + +/* Table: orders */ +CREATE TABLE orders ( + id INT NOT NULL, + employee_id INT , + customer_id INT , + order_date DATETIME , + shipped_date DATETIME , + ship_name VARCHAR(50) , + ship_address1 VARCHAR(150) , + ship_address2 VARCHAR(150) , + ship_city VARCHAR(50) , + ship_state VARCHAR(50) , + ship_postal_code VARCHAR(50) , + ship_country VARCHAR(50) , + shipping_fee DECIMAL(19,4) NULL DEFAULT '0.0000', + payment_type VARCHAR(50) , + paid_date DATETIME , + order_status VARCHAR(25), + PRIMARY KEY (id) +); + +/* Table: order_details */ +CREATE TABLE order_items ( + order_id INT NOT NULL, + product_id INT , + quantity DECIMAL(18,4) NOT NULL DEFAULT '0.0000', + unit_price DECIMAL(19,4) NULL DEFAULT '0.0000', + discount DECIMAL(19,4) NULL DEFAULT '0.0000', + order_item_status VARCHAR(25), + date_allocated DATETIME , + PRIMARY KEY (order_id, product_id) +); + +/* Table: products */ +CREATE TABLE products ( + id INT NOT NULL, + product_code VARCHAR(25) , + product_name VARCHAR(50) , + description VARCHAR(250), + standard_cost DECIMAL(19,4) NULL DEFAULT '0.0000', + list_price DECIMAL(19,4) NOT NULL DEFAULT '0.0000', + target_level INT , + reorder_level INT , + minimum_reorder_quantity INT , + quantity_per_unit VARCHAR(50) , + discontinued TINYINT NOT NULL DEFAULT '0', + category VARCHAR(50), + PRIMARY KEY (id) +); + + +/* Foreign Key: orders */ +ALTER TABLE orders ADD CONSTRAINT fk_orders__customers FOREIGN KEY (customer_id) REFERENCES customers(id); +ALTER TABLE orders ADD CONSTRAINT fk_orders__employees FOREIGN KEY (employee_id) REFERENCES employees(id); +/* Foreign Key: order_items */ +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__orders FOREIGN KEY (order_id) REFERENCES orders(id); +ALTER TABLE order_items ADD CONSTRAINT fk_order_items__products FOREIGN KEY (product_id) REFERENCES products(id); + +/* Views */ +CREATE OR REPLACE VIEW order_info AS +select o.id as order_id + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , o.customer_id + , o.employee_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone customer_phone + , c.email customer_email + , c.company as customer_company + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department employee_department + , e.job_title employee_job_title + From orders o + , employees e + , customers c + where o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW order_details AS +select oi.order_id + , oi.product_id + , oi.quantity + , oi.unit_price + , oi.discount + , oi.date_allocated + , oi.order_item_status + , o.order_date + , o.order_status + , o.paid_date + , o.payment_type + , o.shipped_date + , o.shipping_fee + , o.ship_name + , o.ship_address1 + , o.ship_address2 + , o.ship_city + , o.ship_state + , o.ship_postal_code + , o.ship_country + , p.product_code + , p.product_name + , p.category + , p.description + , p.list_price + , o.customer_id + , concat(c.first_name, ' ', c.last_name) as customer_name + , c.phone as customer_phone + , c.email as customer_email + , c.company as customer_company + , o.employee_id + , concat(e.first_name, ' ', e.last_name) as employee_name + , e.department as employee_department + , e.job_title as employee_job_title + From orders o + , products p + , order_items oi + , employees e + , customers c + where oi.order_id = o.id + and oi.product_id = p.id + and o.employee_id = e.id + and o.customer_id = c.id; + +CREATE OR REPLACE VIEW customer_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.customer_id + , c.first_name customer_first_name, c.last_name customer_last_name, c.phone customer_phone, c.email customer_email, c.company + from orders o,customers c + where o.customer_id = c.id; + +CREATE OR REPLACE VIEW employee_orders AS +select o.order_date, o.order_status, o.paid_date, o.payment_type, o.shipping_fee, o.employee_id + , e.first_name employee_first_name, e.last_name employee_last_name, e.email employee_email, e.department + from orders o,employees e + where o.customer_id = e.id; + + + /* REAL_NET */ + CREATE TABLE RN_INSTRUCTOR ( + ID VARCHAR(20) NOT NULL AUTO_INCREMENT, + FIRST_NAME VARCHAR(20) NOT NULL, + LAST_NAME VARCHAR(20) NOT NULL, + EMAIL VARCHAR(20) NOT NULL, + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + PRIMARY KEY (id) + ); + + /*==== EXTENSION FIELD ===*/ + CREATE TABLE RN_EXT_FIELD_T ( + ID int(11) NOT NULL AUTO_INCREMENT, + TYPE VARCHAR(20), + DATA_TYPE VARCHAR(20), + FIELD_NAME VARCHAR(20), + MAPPING VARCHAR(20), + FORM_CODE VARCHAR(20), + IS_ACTIVE BOOLEAN, + ACCOUNT_ID VARCHAR(20), + CREATED_AT DATETIME, + UPDATED_AT DATETIME, + CREATED_BY VARCHAR(20), + UPDATED_BY VARCHAR(20), + PRIMARY KEY (ID) +); + +/*========= lookup ======== +CREATE TABLE `rn_lookup_values_t` ( + `ID` int(11) NOT NULL AUTO_INCREMENT, + `LOOKUP_CODE` longtext, + `MEANING` longtext, + `DESCRIPTION` longtext, + `LOOKUP_TYPE` longtext, + `ACTIVE_START_DATE` datetime DEFAULT NULL, + `ACTIVE_END_DATE` datetime DEFAULT NULL, + `ENABLED_FLAG` longtext, + `CREATED_BY` int(11) DEFAULT NULL, + `CREATION_DATE` datetime DEFAULT NULL, + `LAST_UPDATED_BY` int(11) DEFAULT NULL, + `LAST_UPDATE_DATE` datetime DEFAULT NULL + PRIMARY KEY (`ID`) +); */ + + + +/*========= LOGGING ======== + +DROP TABLE logging_event_exception IF EXISTS; +DROP TABLE logging_event_property IF EXISTS; +DROP TABLE logging_event IF EXISTS; + +CREATE TABLE logging_event ( + timestmp BIGINT NOT NULL, + formatted_message LONGVARCHAR NOT NULL, + logger_name VARCHAR(256) NOT NULL, + level_string VARCHAR(256) NOT NULL, + thread_name VARCHAR(256), + reference_flag SMALLINT, + arg0 VARCHAR(256), + arg1 VARCHAR(256), + arg2 VARCHAR(256), + arg3 VARCHAR(256), + caller_filename VARCHAR(256), + caller_class VARCHAR(256), + caller_method VARCHAR(256), + caller_line CHAR(4), + event_id IDENTITY NOT NULL); + + +CREATE TABLE logging_event_property ( + event_id BIGINT NOT NULL, + mapped_key VARCHAR(254) NOT NULL, + mapped_value LONGVARCHAR, + PRIMARY KEY(event_id, mapped_key), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); + +CREATE TABLE logging_event_exception ( + event_id BIGINT NOT NULL, + i SMALLINT NOT NULL, + trace_line VARCHAR(256) NOT NULL, + PRIMARY KEY(event_id, i), + FOREIGN KEY (event_id) REFERENCES logging_event(event_id)); */ \ No newline at end of file diff --git a/pro103ab-back-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/pro103ab-back-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-back-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/pro103ab-back-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..51d6ebc --- /dev/null +++ b/pro103ab-back-b/authsec_springboot/backend/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,208 @@ +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_Function_Register_Response.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\ExceptionLoggingController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\session\response\SessionResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Forms_Component_Setup.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service1\MenuDetServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\LoginUser.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service1\AppUserServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\GrpMenuAccesscompositeKey.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Menu_Group_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Main_Menu_ServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\OperationResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository\SysAccountRepo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\RnGroupLineRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\CustomResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Menu_Group_Line_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\AppUserRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\SwaggerConfig.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Ext_Fields.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\RnGroupMenuLineServiec.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\service\impl\UserListServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\SysAccountController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service1\AppUserRoleServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\AboutServiceImple.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\JwtAuthenticationEntryPoint.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\ERole.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Rn_Who_AccId_Column.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_Menu_Group_Repository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\repository\AppUserLogginRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller1\LoadMenuController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\response\ServiceResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\ProjectMini.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_Menu_Group_Response.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Sys_Accounts.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserRole.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_FlexEntity.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_AuditEntity.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Forms_Setup_ServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Forms_Setup.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\SingleDataSeriseResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\GrpMenuAccess.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository1\MenuDetRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserPrinciple.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Menu_Group_Service.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\SessionConverter.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\DropDownDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\projectCopyDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\AppConfig.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\LookUpRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\MessageSourceConfig.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\MenuDet.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserSessions.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\ExtFieldRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Sub_Menu.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\exceptions\InvalidUserDataException.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Error.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\LoginUser.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\PatternLayoutWithUserContext.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\entity\AppUserLog.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging\NoLogging.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_InstanceTypeRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\TokenProvider.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_ExtensionEntity.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\passwordTokenRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service1\AppUserSessionsServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Rn_Who_Columns.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\CorsFilter.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service1\AppUserService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository\RoleRepo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Email.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\AppUserController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository\AboutWorkRepo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_LookUpRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\AppUserDepartmentRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Forms_Setup_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Menu_Register.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\WireFrameCopyDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\session\entity\AboutWork.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\EmailRequest.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service1\GrpMenuAccessServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Forms_Setup_Service.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Who_Columns.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_Menu_Register_Repository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\AboutWorkService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserPasswlogCompositeKey.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\AppUserRoleRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Menu_Group_Line.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\MainController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Who_AccId_Column.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Main_Menu_Service.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\ModuleCopyDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_Forms_Setup_Repository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Version.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller\UserController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\session\controller\SessionController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\CustomUserDetails.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\Registration.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\controller\UserListController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\MIXMENUN.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository\CompanyRepo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Function_Register_Service.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUser_who_column.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\RoleServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\ExtensionModel.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_Function_Register_Repository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\Email.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\service\LoggingService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_DynamicTransactionService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\JWTConstant.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Role.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\Sys_Accounts.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\HttpLoggingFilter.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\utils\Port_Constant.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\UserProfileDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\entity\UserImage.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging\LogExecutionTime.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging\SecurityNoLogging.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\session\entity\SessionItem.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\session\entity\VersionModel.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Menu_Register_ServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Modulemini.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\JwtAuthenticationFilter.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\SecurityConfig.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\UserProfileDTO.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Dynamic_Transaction.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging\LogEntity.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository\UserRepo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\MixMenu.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository1\GrpMenuAccessRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\WorkSpaceController1.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\User.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Instance_Type.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserDepartment.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserSessionsCompositeKey.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_Forms_SetupResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Menu_Group_Header.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_DynamicTransactionServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\entity\UserList.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Function_Register.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Function_Register_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Lookup_Values.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\ErrorPojo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\SignUp.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\AppuserSessionController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\utils\WireFrameConstant.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\Role.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\controller\AppUserLogController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\CompanyServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Function_Register_ServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_Main_Menu_Repository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\RnGroupMenuLineServiecImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_Main_Menu_Response.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_DynamicTransactionController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Main_Menu_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\MixMenuNew.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\GenericResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\response\MessageResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\repository\UserImageRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUser.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\response\UserItem.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Login.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\response\UserResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Menu_Register_Service.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\UserService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\SuccessPojo.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\RealNetApp.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\repository\Rn_DynamicTransactionRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\PasswordResetRequest.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\UserDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\Provider.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\SingleSerise.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\exceptions\ResourceNotFoundException.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\PasswordResetToken.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Success.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\config\EmailService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\service\Rn_Menu_Group_ServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\AppUserPositionRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\repository1\AppUserSessionsRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller1\MenuController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity\Rn_Main_Menu.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\AppUserGrpController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\UserConverter.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service1\PositionAndDepartmentServiceImpl.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\RoleService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\RoleUpdateDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\UserDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller\RoleController.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\PasswordResetRequest.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\RoleUpdateDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\service\CompanyService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\utils\Constant.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserLoginHist.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userDTO\CompanyDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\CompanyDto.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\Login.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\controller\Rn_Menu_Register_Controller.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity\EmailRequest.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_Menu_Register_Response.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\repository\UserListRepository.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging\LoggingAspect.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\PageResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\logging1\controller\AppUserLogController2.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserPasswlog.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\entity1\AppUserPosition.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\entity1\menudet_who.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\userlist\service\UserListService.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\fnd\response\Rn_DynamicTransactionResponse.java +C:\Users\Gyanadipta Pahi\Desktop\AuthsecNew\authsec-be-main\backend\src\main\java\com\realnet\users\controller1\PositonAndDepartmentController.java diff --git a/pro103ab-db-d/authsec_mysql/mysql/loginandmenu.sql b/pro103ab-db-d/authsec_mysql/mysql/loginandmenu.sql new file mode 100644 index 0000000..5279e3d --- /dev/null +++ b/pro103ab-db-d/authsec_mysql/mysql/loginandmenu.sql @@ -0,0 +1,569 @@ + +CREATE TABLE `app_user_log` ( + `log_id` bigint NOT NULL, + `created_on` datetime DEFAULT NULL, + `generate_log` varchar(255) DEFAULT NULL, + `log_file_name` varchar(255) DEFAULT NULL, + `log_level` varchar(255) DEFAULT NULL, + `user_name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`log_id`), + UNIQUE KEY `UK_tl3or0c0pxxdvigxponlgee18` (`user_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `app_user_log` +-- + +LOCK TABLES `app_user_log` WRITE; +/*!40000 ALTER TABLE `app_user_log` DISABLE KEYS */; +/*!40000 ALTER TABLE `app_user_log` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `password_reset_token` +-- + +DROP TABLE IF EXISTS `password_reset_token`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `password_reset_token` ( + `id` bigint NOT NULL, + `expiry_date` datetime DEFAULT NULL, + `token` varchar(255) DEFAULT NULL, + `user_user_id` bigint DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `FK4rtktv88xrvfli5jx9yst5arn` (`user_user_id`), + CONSTRAINT `FK4rtktv88xrvfli5jx9yst5arn` FOREIGN KEY (`user_user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `password_reset_token` +-- + +LOCK TABLES `password_reset_token` WRITE; +/*!40000 ALTER TABLE `password_reset_token` DISABLE KEYS */; +/*!40000 ALTER TABLE `password_reset_token` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `role` +-- + +DROP TABLE IF EXISTS `role`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `role` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `description` varchar(255) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `role` +-- + +LOCK TABLES `role` WRITE; +/*!40000 ALTER TABLE `role` DISABLE KEYS */; +INSERT INTO `role` VALUES (1,NULL,'ROLE_Developer'),(2,'web','web developer'),(3,'front','frontend developer'),(4,'back','backend developer'),(5,'dev','devops '); +/*!40000 ALTER TABLE `role` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_grp_menu_access` +-- + +DROP TABLE IF EXISTS `sec_grp_menu_access`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_grp_menu_access` ( + `menu_item_id` bigint NOT NULL, + `usr_grp` bigint NOT NULL, + `createby` varchar(255) DEFAULT NULL, + `created_at` datetime DEFAULT NULL, + `isdisable` varchar(255) DEFAULT NULL, + `item_seq` bigint DEFAULT NULL, + `m_create` varchar(255) DEFAULT NULL, + `m_delete` varchar(255) DEFAULT NULL, + `m_edit` varchar(255) DEFAULT NULL, + `m_query` varchar(255) DEFAULT NULL, + `m_visible` varchar(255) DEFAULT NULL, + `main_menu_action_name` varchar(255) DEFAULT NULL, + `main_menu_icon_name` varchar(255) DEFAULT NULL, + `menu_id` bigint DEFAULT NULL, + `menu_item_desc` varchar(255) DEFAULT NULL, + `mexport` varchar(255) DEFAULT NULL, + `module_name` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `updateby` varchar(255) DEFAULT NULL, + `updated_at` datetime DEFAULT NULL, + PRIMARY KEY (`menu_item_id`,`usr_grp`), + KEY `FKtj8mtsrhc4m4acbrvjnnyvglm` (`usr_grp`), + CONSTRAINT `FKmkev6w9umgp6fg2afatibhq1x` FOREIGN KEY (`menu_item_id`) REFERENCES `sec_menu_det` (`menu_item_id`), + CONSTRAINT `FKtj8mtsrhc4m4acbrvjnnyvglm` FOREIGN KEY (`usr_grp`) REFERENCES `sec_user_group` (`usr_grp`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_grp_menu_access` +-- + +LOCK TABLES `sec_grp_menu_access` WRITE; +/*!40000 ALTER TABLE `sec_grp_menu_access` DISABLE KEYS */; +INSERT INTO `sec_grp_menu_access` VALUES (1116,1,NULL,'2023-02-04 17:32:03','true',3000,'true','true','true','true','true','security','lock',0,'Security','true','sec3000','Enable',NULL,'2023-02-04 17:32:03'),(1117,1,NULL,'2023-02-04 17:32:03','true',3010,'true','true','true','true','true','usermaintance',NULL,1116,'User Maintance','true','U1000','Enable',NULL,'2023-02-04 17:32:03'),(1118,1,NULL,'2023-02-04 17:32:04','true',3020,'true','true','true','true','true','usergrpmaintance',NULL,1116,'User Group Maintance','true','U2000','Enable',NULL,'2023-02-04 17:32:04'),(1523,1,NULL,'2023-02-04 17:32:04','true',3030,'true','true','true','true','true','menumaintance',NULL,1116,'Menu Maintance','true','M3000','Enable',NULL,'2023-02-04 17:32:04'),(1524,1,NULL,'2023-02-04 17:32:04','true',3040,'true','true','true','true','true','menuaccess',NULL,1116,'Menu Access Control','true','MA4000','Enable',NULL,'2023-02-04 17:32:04'),(1525,1,NULL,'2023-02-04 17:32:04','true',3050,'true','true','true','true','true','systemparameters',NULL,1116,'System Parameters','true','SP5000','Enable',NULL,'2023-02-04 17:32:04'),(1526,1,NULL,'2023-02-04 17:32:04','true',3060,'true','true','true','true','true','accesstype',NULL,1116,'Access Type','true','A6000','Enable',NULL,'2023-02-04 17:32:04'),(1527,1,NULL,'2023-02-10 10:07:57','true',1000,'true','true','true','true','true','incidents','incident',0,'Incidents','true','I1000','Enable',NULL,'2023-02-10 10:07:57'),(1527,41,NULL,'2023-04-18 15:51:51','true',1000,'true','true','true','true','true','incidents','incident',0,'Incidents','true','I1000','Enable',NULL,'2023-04-18 15:51:51'),(1528,1,NULL,'2023-02-10 10:07:58','true',1010,'true','true','true','true','true','incident-new',NULL,1527,'Incident','true','I1000','Enable',NULL,'2023-02-10 10:07:58'),(1528,41,NULL,'2023-04-18 15:51:55','true',1010,'true','true','true','true','true','incident-new',NULL,1527,'Incident','true','I1000','Enable',NULL,'2023-04-18 15:51:55'),(1529,1,NULL,'2023-02-10 10:07:59','true',1020,'true','true','true','true','true','incident-overview',NULL,1527,'Overview','true','O2000','Enable',NULL,'2023-02-10 10:07:59'),(1529,41,NULL,'2023-04-18 15:51:57','true',1020,'true','true','true','true','true','incident-overview',NULL,1527,'Overview','true','O2000','Enable',NULL,'2023-04-18 15:51:57'),(1530,1,NULL,'2023-02-10 10:07:59','true',1030,'true','true','true','true','true','sureboard2',NULL,1527,'Issueboard','true','I3000','Enable',NULL,'2023-02-10 10:07:59'),(1530,41,NULL,'2023-04-18 15:52:00','true',1030,'true','true','true','true','true','sureboard2',NULL,1527,'Issueboard','true','I3000','Enable',NULL,'2023-04-18 15:52:00'),(1531,1,NULL,'2023-02-10 10:07:59','true',1040,'true','true','true','true','true','change-request',NULL,1527,'Change Request','true','C4000','Enable',NULL,'2023-02-10 10:07:59'),(1531,41,NULL,'2023-04-18 15:52:03','true',1040,'true','true','true','true','true','change-request',NULL,1527,'Change Request','true','C4000','Enable',NULL,'2023-04-18 15:52:03'),(1532,1,NULL,'2023-02-10 10:07:59','true',1050,'true','true','true','true','true','problem-creation',NULL,1527,'Problem Request','true','P5000','Enable',NULL,'2023-02-10 10:07:59'),(1532,41,NULL,'2023-04-18 15:52:07','true',1050,'true','true','true','true','true','problem-creation',NULL,1527,'Problem Request','true','P5000','Enable',NULL,'2023-04-18 15:52:07'),(1533,1,NULL,'2023-03-01 06:11:23','true',2000,'true','true','true','true','true','master','users',0,'Masters','true','M2000','Enable',NULL,'2023-03-01 06:11:23'),(1534,1,NULL,'2023-03-01 06:11:23','true',2010,'true','true','true','true','true','Sr_priority2_t',NULL,1533,'Priority','true','P1000','Enable',NULL,'2023-03-01 06:11:23'),(1535,1,NULL,'2023-03-01 06:11:23','true',2020,'true','true','true','true','true','Sr_urgency_t',NULL,1533,'Urgency','true','Su2000','Enable',NULL,'2023-03-01 06:11:23'),(1536,1,NULL,'2023-03-01 06:11:23','true',2030,'true','true','true','true','true','Sr_impact2_t',NULL,1533,'Impact','true','Sm3000','Enable',NULL,'2023-03-01 06:11:23'),(1537,1,NULL,'2023-03-01 06:11:23','true',2040,'true','true','true','true','true','Sr_category2_t',NULL,1533,'Category','true','Sc4000','Enable',NULL,'2023-03-01 06:11:23'),(1538,1,NULL,'2023-03-01 06:11:23','true',2050,'true','true','true','true','true','Sr_State_t',NULL,1533,'State','true','S5000','Enable',NULL,'2023-03-01 06:11:23'),(1539,1,NULL,'2023-03-01 06:11:23','true',2070,'true','true','true','true','true','Sr_customer_t',NULL,1533,'Customer','true','c7000','Enable',NULL,'2023-03-01 06:11:23'),(1540,1,NULL,'2023-03-01 06:11:23','true',2060,'true','true','true','true','true','Sr_Contact_type_t',NULL,1533,'Contact','true','C6000','Enable',NULL,'2023-03-01 06:11:23'),(1541,1,NULL,'2023-03-01 06:11:23','true',2080,'true','true','true','true','true','Sr_handler_t',NULL,1533,'Handler','true','H8000','Enable',NULL,'2023-03-01 06:11:23'),(1542,1,NULL,'2023-02-16 11:01:03','true',4000,'true','true','true','true','true','admin','user',0,'Admin','true','se4000','Enable',NULL,'2023-02-16 11:01:03'),(1543,1,NULL,'2023-02-16 11:01:03','true',4010,'true','true','true','true','true','sequence',NULL,1542,'Define Sequence','true','SE1000','Enable',NULL,'2023-02-16 11:01:03'),(1544,1,NULL,'2023-02-16 11:01:03','true',4020,'true','true','true','true','true','bugtracker',NULL,1542,'Bug Tracker','true','B1000','Enable',NULL,'2023-02-16 11:01:03'),(1545,1,NULL,'2023-02-16 11:01:04','true',4030,'true','true','true','true','true','datamanagemennt',NULL,1542,'Data Management','true','M3000','Enable',NULL,'2023-02-16 11:01:04'),(1550,1,NULL,'2023-03-01 06:11:23','true',2090,'true','true','true','true','true','projects',NULL,1533,'Projects','true','P2000','Enable',NULL,'2023-03-01 06:11:23'),(1551,1,NULL,'2023-04-18 16:22:41','true',4040,'true','true','true','true','true','applysequence',NULL,1542,'Apply Sequence','true','As3000','Enable',NULL,'2023-04-18 16:22:41'); +/*!40000 ALTER TABLE `sec_grp_menu_access` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_menu_det` +-- + +DROP TABLE IF EXISTS `sec_menu_det`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_menu_det` ( + `menu_item_id` bigint NOT NULL, + `created_at` datetime NOT NULL, + `updated_at` datetime NOT NULL, + `item_seq` bigint DEFAULT NULL, + `main_menu_action_name` varchar(255) DEFAULT NULL, + `main_menu_icon_name` varchar(255) DEFAULT NULL, + `menu_id` bigint DEFAULT NULL, + `menu_item_desc` varchar(255) DEFAULT NULL, + `module_name` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + PRIMARY KEY (`menu_item_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_menu_det` +-- + +LOCK TABLES `sec_menu_det` WRITE; +/*!40000 ALTER TABLE `sec_menu_det` DISABLE KEYS */; +INSERT INTO `sec_menu_det` VALUES (1116,'2023-01-25 10:25:50','2023-01-25 10:25:50',3000,'security','lock',0,'Security','sec3000','Enable'),(1117,'2023-01-25 10:42:02','2023-02-04 15:34:25',3010,'usermaintance',NULL,1116,'User Maintance','U1000','Enable'),(1118,'2023-01-25 11:12:27','2023-02-04 15:34:36',3020,'usergrpmaintance',NULL,1116,'User Group Maintance','U2000','Enable'),(1523,'2023-02-04 11:15:57','2023-02-04 15:34:45',3030,'menumaintance',NULL,1116,'Menu Maintance','M3000','Enable'),(1524,'2023-02-04 11:16:52','2023-02-04 15:34:54',3040,'menuaccess',NULL,1116,'Menu Access Control','MA4000','Enable'),(1525,'2023-02-04 11:17:31','2023-02-04 15:35:06',3050,'systemparameters',NULL,1116,'System Parameters','SP5000','Enable'),(1526,'2023-02-04 11:18:04','2023-02-04 15:35:14',3060,'accesstype',NULL,1116,'Access Type','A6000','Enable'),(1527,'2023-02-04 13:25:11','2023-02-04 13:25:11',1000,'incidents','incident',0,'Incidents','I1000','Enable'),(1528,'2023-02-04 13:31:48','2023-02-04 15:33:02',1010,'incident-new',NULL,1527,'Incident','I1000','Enable'),(1529,'2023-02-04 13:33:03','2023-02-04 15:33:12',1020,'incident-overview',NULL,1527,'Overview','O2000','Enable'),(1530,'2023-02-04 13:34:42','2023-02-04 15:33:21',1030,'sureboard2',NULL,1527,'Issueboard','I3000','Enable'),(1531,'2023-02-04 13:35:27','2023-02-04 15:33:36',1040,'change-request',NULL,1527,'Change Request','C4000','Enable'),(1532,'2023-02-04 13:36:01','2023-02-10 02:25:13',1050,'problem-creation',NULL,1527,'Problem Request','P5000','Enable'),(1533,'2023-02-04 13:55:32','2023-02-04 13:55:32',2000,'master','users',0,'Masters','M2000','Enable'),(1534,'2023-02-04 13:56:22','2023-02-04 15:34:07',2010,'Sr_priority2_t',NULL,1533,'Priority','P1000','Enable'),(1535,'2023-02-04 17:12:27','2023-02-04 17:12:27',2020,'Sr_urgency_t',NULL,1533,'Urgency','Su2000','Enable'),(1536,'2023-02-04 17:13:22','2023-02-04 17:13:22',2030,'Sr_impact2_t',NULL,1533,'Impact','Sm3000','Enable'),(1537,'2023-02-04 17:14:01','2023-02-04 17:14:01',2040,'Sr_category2_t',NULL,1533,'Category','Sc4000','Enable'),(1538,'2023-02-04 17:14:31','2023-02-04 17:14:31',2050,'Sr_State_t',NULL,1533,'State','S5000','Enable'),(1539,'2023-02-04 17:15:12','2023-02-09 13:25:27',2070,'Sr_customer_t',NULL,1533,'Customer','c7000','Enable'),(1540,'2023-02-04 17:16:23','2023-02-14 13:15:27',2060,'Sr_Contact_type_t',NULL,1533,'Contact','C6000','Enable'),(1541,'2023-02-04 17:17:22','2023-02-04 17:17:22',2080,'Sr_handler_t',NULL,1533,'Handler','H8000','Enable'),(1542,'2023-02-08 15:06:20','2023-02-08 15:06:20',4000,'admin','user',0,'Admin','se4000','Enable'),(1543,'2023-02-08 15:07:14','2023-03-01 05:51:41',4010,'sequence',NULL,1542,'Define Sequence','SE1000','Enable'),(1544,'2023-02-16 10:14:33','2023-02-16 10:14:33',4020,'bugtracker',NULL,1542,'Bug Tracker','B1000','Enable'),(1545,'2023-02-16 11:00:25','2023-02-16 11:00:25',4030,'datamanagemennt',NULL,1542,'Data Management','M3000','Enable'),(1550,'2023-03-01 06:10:35','2023-03-01 06:10:35',2090,'projects',NULL,1533,'Projects','P2000','Enable'),(1551,'2023-03-01 07:14:27','2023-03-01 07:14:27',4040,'applysequence',NULL,1542,'Apply Sequence','As3000','Enable'),(1553,'2023-04-18 14:12:24','2023-04-18 14:12:56',5000,'T1',NULL,1542,'T1','T1','Enable'); +/*!40000 ALTER TABLE `sec_menu_det` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_type` +-- + +DROP TABLE IF EXISTS `sec_type`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_type` ( + `id` int NOT NULL, + `description` varchar(255) DEFAULT NULL, + `name` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_type` +-- + +LOCK TABLES `sec_type` WRITE; +/*!40000 ALTER TABLE `sec_type` DISABLE KEYS */; +/*!40000 ALTER TABLE `sec_type` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_user_group` +-- + +DROP TABLE IF EXISTS `sec_user_group`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_user_group` ( + `usr_grp` bigint NOT NULL, + `createby` varchar(255) DEFAULT NULL, + `createdate` datetime DEFAULT NULL, + `group_desc` varchar(255) DEFAULT NULL, + `group_level` bigint DEFAULT NULL, + `group_name` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `updateby` varchar(255) DEFAULT NULL, + `updatedate` datetime DEFAULT NULL, + PRIMARY KEY (`usr_grp`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_user_group` +-- + +LOCK TABLES `sec_user_group` WRITE; +/*!40000 ALTER TABLE `sec_user_group` DISABLE KEYS */; +INSERT INTO `sec_user_group` VALUES (1,NULL,NULL,'add',30,'sysadmin','E',NULL,'2023-03-01 05:54:10'),(41,NULL,'2023-02-28 13:05:54','check',20,'users','Disable',NULL,'2023-02-28 13:30:14'); +/*!40000 ALTER TABLE `sec_user_group` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_user_group_id` +-- + +DROP TABLE IF EXISTS `sec_user_group_id`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_user_group_id` ( + `next_val` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_user_group_id` +-- + +LOCK TABLES `sec_user_group_id` WRITE; +/*!40000 ALTER TABLE `sec_user_group_id` DISABLE KEYS */; +INSERT INTO `sec_user_group_id` VALUES (59),(59),(40),(40),(40),(40); +/*!40000 ALTER TABLE `sec_user_group_id` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_user_sessions` +-- + +DROP TABLE IF EXISTS `sec_user_sessions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_user_sessions` ( + `client_ip` varchar(255) NOT NULL, + `session_id` varchar(255) NOT NULL, + `user_id` bigint NOT NULL, + `last_access_date` datetime DEFAULT NULL, + PRIMARY KEY (`client_ip`,`session_id`,`user_id`), + KEY `FKp9jm02b501ugvjvfhas5sskfq` (`user_id`), + CONSTRAINT `FKp9jm02b501ugvjvfhas5sskfq` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_user_sessions` +-- + +LOCK TABLES `sec_user_sessions` WRITE; +/*!40000 ALTER TABLE `sec_user_sessions` DISABLE KEYS */; +INSERT INTO `sec_user_sessions` VALUES ('10.244.0.0','00DA27B83BD05496302A6FE89196D35D',10007304,'2023-02-09 04:16:22'),('10.244.0.0','01C6D31F93F0EB2008755455951BFCE3',10007304,'2023-02-09 04:24:40'),('10.244.0.0','01F3C40A4E4F679427F1A77E6CCA96BD',10007304,'2023-01-23 09:22:51'),('10.244.0.0','07955ABB453B8F78E48098ACB2CCA3B4',10007304,'2023-01-07 05:18:31'),('10.244.0.0','07FC7AA4A44DAF847DACD2ADF00E21D0',10007304,'2023-03-02 07:02:35'),('10.244.0.0','097910BB627E1B076F5EB532B6DF56F6',10007304,'2023-02-20 07:15:09'),('10.244.0.0','09A12677690FCDD1DFE3AE75B357D5FA',10007304,'2023-01-27 12:59:00'),('10.244.0.0','0B30FE6A7E3EC275FB942EF1AC77959C',10007304,'2023-02-27 04:31:59'),('10.244.0.0','0DBA11EAE43B527CFF0B2C8714E6FCBC',10007304,'2023-02-27 05:18:07'),('10.244.0.0','0E0DD3C09635D1512642C6A8DC777399',10007304,'2023-01-04 07:26:44'),('10.244.0.0','12634E52F1A03951CF7F714CA2CD35D0',10007304,'2022-12-22 12:47:54'),('10.244.0.0','126D331BC32A0B05D4E98809A69F1129',10007304,'2023-01-21 05:54:12'),('10.244.0.0','13267C7653BF669807FCC1553A250FCA',10007304,'2023-01-21 10:58:45'),('10.244.0.0','13791D67042F4E6D5D108828C313E4E2',10007304,'2023-02-03 06:43:41'),('10.244.0.0','14B7F54DD7D935EBBA23729BFF12D944',10007304,'2023-01-25 06:57:06'),('10.244.0.0','15718FEAD0B1C125C216D29DEB4BF59D',10007304,'2023-02-28 10:02:33'),('10.244.0.0','17187D32D460241B4B16E38281CD2663',10007304,'2023-02-04 11:08:48'),('10.244.0.0','18A08D81FE506EE81AF4C94CB30A6D3A',10007304,'2023-02-21 05:27:55'),('10.244.0.0','19C65A7A787E9D9A9087261B8A2DEFDE',10007304,'2023-02-16 05:11:11'),('10.244.0.0','1A5FC0C4AA02AF7AF3404165F1A93985',10007304,'2023-01-03 12:02:01'),('10.244.0.0','1CABFE5D7BB047B750A74A9C74F5CB44',10007304,'2023-01-25 07:01:51'),('10.244.0.0','1D02DCEA4AA242C714EC71F70741C07E',10007304,'2023-02-21 04:56:28'),('10.244.0.0','1D6B0DB624E86D9FD70507F6189569AD',10007304,'2023-02-21 05:32:41'),('10.244.0.0','1E328CEE4E5A777173F8A432AA25364F',10007304,'2023-02-14 10:51:58'),('10.244.0.0','1E3E9C55C6C6D5AAC309E13C30B958C5',10007304,'2022-12-24 13:19:10'),('10.244.0.0','1E4F2D8802BDFABCF9D3B41AB1BF3D8E',10007304,'2023-03-02 10:14:13'),('10.244.0.0','1EDADDB590C0C98FFB9362ACAFDD0EC8',10007304,'2023-02-28 08:28:39'),('10.244.0.0','1EE6204F652E211A35B560813E1AFDF5',10007304,'2023-02-13 05:38:28'),('10.244.0.0','1F4809657FAC225E67C10488887FF026',10007304,'2023-01-25 08:42:39'),('10.244.0.0','212824F8CFE4C79EEC23414DD60BDB1A',10007304,'2023-02-04 11:07:49'),('10.244.0.0','2285C8A80B97A9CEB33BA0E83AAE7CDE',10007304,'2023-02-28 05:39:09'),('10.244.0.0','23D17570F776EBE86B3E28ED24A2E2F0',10007304,'2022-12-22 05:37:54'),('10.244.0.0','258BC76ACED65982DB38FFA3E5607665',10007304,'2023-01-27 04:23:24'),('10.244.0.0','26A0AC8653F477F1A82841DFFAD45E60',10007304,'2023-02-08 04:41:02'),('10.244.0.0','272AA522FF452893D3469597326AFA21',10007304,'2023-02-11 10:57:48'),('10.244.0.0','279523463C4F47198956861731BE1886',10007304,'2023-03-02 07:17:25'),('10.244.0.0','2A500041815A443624570903FDC1B703',10007304,'2023-01-05 11:28:15'),('10.244.0.0','2A5256B60B473E59C7F3033185D6BCFE',10007304,'2023-01-30 07:28:49'),('10.244.0.0','2BAA723E999C81FDC312C1478EE23B64',10007304,'2022-12-28 17:42:55'),('10.244.0.0','2E06BF822B35B70B869D34A2591FEA19',10007304,'2023-02-13 06:09:41'),('10.244.0.0','30D3D3F09BBB4C24FE812BE091CF28C7',10007304,'2023-02-08 13:09:58'),('10.244.0.0','33D439C74F9C34631C7C28E6712D901A',10007304,'2023-02-06 06:49:38'),('10.244.0.0','34029224A1742E10AEEEE5D8CC33594E',10007304,'2023-02-13 07:55:18'),('10.244.0.0','35F492D2BB13889531ABDDFDF0A367C3',10007304,'2022-12-24 06:14:28'),('10.244.0.0','36FB6C688F068D09D1EFB99CABE5412A',10007304,'2023-01-27 06:11:46'),('10.244.0.0','36FFDC97570687C4ECF39A89E6F11A0D',10007304,'2023-01-05 05:10:46'),('10.244.0.0','37975FDB03DDC18FE039CFF74059D971',10007304,'2023-02-13 06:20:48'),('10.244.0.0','37CDA8C88836B0A96D1D5524B5B43961',10007304,'2023-02-14 04:38:06'),('10.244.0.0','3842C1EB2E93DCEB1AF928CDCDD79AB4',10007304,'2023-02-24 04:51:48'),('10.244.0.0','3898BA12B0A677023CA6CE3E9FFCE1F8',10007304,'2023-03-02 07:17:41'),('10.244.0.0','3965E8234EC00188B218C35C2778C6CB',10007304,'2023-02-09 17:26:12'),('10.244.0.0','3A3B65EC3B497E489981EF9C510A77B9',10007304,'2023-02-04 06:17:28'),('10.244.0.0','3A4650E064985A33620EA4B2B17B05B3',10007304,'2023-01-10 13:17:16'),('10.244.0.0','3AB4A6AA0A043A4632D87ED0E3249160',10007304,'2023-02-16 04:58:21'),('10.244.0.0','3B23C62B9E4BA76DC713F617EBB4594C',10007304,'2023-02-15 04:52:29'),('10.244.0.0','3B74E96FA5D19EB3014EFCCE8BE8F666',10007304,'2023-02-27 04:31:23'),('10.244.0.0','3BB07C01384C27442F72D47E3CEC5A12',10007304,'2023-02-22 04:24:47'),('10.244.0.0','3C3E6803B1BA5CC39F672D5B0D857D74',10007304,'2023-03-01 04:20:09'),('10.244.0.0','3DFEFA1D21599FE476F2E1BA59BD9EAA',10007304,'2023-02-13 06:29:53'),('10.244.0.0','3E004B5F590EA457404AC52B50210A29',10007304,'2023-01-03 04:19:31'),('10.244.0.0','402EA30AA9A4B5D9E2888DF4D9327301',10007304,'2023-01-28 07:51:35'),('10.244.0.0','43371F4FDB08897CC0BB2A090A126FB3',10007304,'2023-01-07 12:13:33'),('10.244.0.0','471A11977BA434B3D311A51FA7F68B3C',10007304,'2023-02-24 04:17:58'),('10.244.0.0','4759C7C3DF1A23F94A55BA7B40428838',10007304,'2023-02-13 06:05:37'),('10.244.0.0','47A01A3E14B7F77AAFDF67254C63493C',10007304,'2023-02-06 04:07:39'),('10.244.0.0','4CB13B5C9B2F9AE6E9A2A0198ECE5DBE',10007304,'2023-02-21 06:51:30'),('10.244.0.0','4DCD20AD816D9080E00ECB163B688E4D',10007304,'2023-01-04 06:59:36'),('10.244.0.0','4DD3B7DFA118D5076A5465F9BBA2AF55',10007304,'2023-02-09 17:21:56'),('10.244.0.0','4F020C44EBB668BA92176C297D8DF270',10007304,'2023-01-10 05:08:07'),('10.244.0.0','501FFB8654751FB7B0F5E11DD7793C39',10007304,'2022-12-23 12:25:25'),('10.244.0.0','523FC707BA0646DDB84DA790EF87820A',10007304,'2023-01-23 08:30:22'),('10.244.0.0','54268D6CC5747B55C4CBBAADA10F0AA0',10007304,'2023-02-28 08:53:42'),('10.244.0.0','54895473F03C143BF00F72ACAD7A94D2',10007304,'2023-02-27 04:49:34'),('10.244.0.0','55586473AB9CF8B2556151723E51BBB7',10007304,'2023-02-13 06:02:14'),('10.244.0.0','560BD1E9B94656C1440FB876359F6C3F',10007304,'2023-02-18 04:39:11'),('10.244.0.0','56695A8A4F6857C98F3516B229746F7C',10007304,'2023-02-13 09:44:54'),('10.244.0.0','56A9680F7457F59FFB32B8FF0770AD2A',10007304,'2023-02-21 05:28:43'),('10.244.0.0','58CB39E04E393D8151F0582571D22D33',10007304,'2022-12-21 04:14:05'),('10.244.0.0','58E7FD348EEEC8D77FCAE7352FE04497',10007304,'2023-03-01 07:13:28'),('10.244.0.0','5BD71E188A9F0EC43A6CC43867ACB6D4',10007304,'2023-02-22 13:17:46'),('10.244.0.0','5BEE5E86DD9121186A1CA43D835C8854',10007304,'2023-02-21 05:32:57'),('10.244.0.0','5C3F8B0AFEE5B1579156CE8A9F4EEED8',10007304,'2023-02-14 05:10:45'),('10.244.0.0','5D0CD0B13B750B93479C35DFFBACCD03',10007304,'2023-02-08 01:03:29'),('10.244.0.0','5D4D1DEF340F3CDFF250163E7D9D4D5D',10007304,'2023-02-27 07:46:31'),('10.244.0.0','5EDB2B24E90C72C9CE0899813FB781F5',10007304,'2023-01-21 11:19:22'),('10.244.0.0','61C70093706116D8A9DEA7868A06D205',10007304,'2023-01-24 10:47:00'),('10.244.0.0','61E97DE6029A46282C16A904E0958FCD',10007304,'2023-02-12 07:39:29'),('10.244.0.0','6206A103E4BCB92C80EE955A2A169AB8',10007304,'2023-02-17 04:05:40'),('10.244.0.0','646C7D28A4C367B6D9364E1D5058982C',10007304,'2023-02-03 06:47:25'),('10.244.0.0','66972D7E2B88E5FCF073FFA7F56FCEBC',10007304,'2023-01-27 17:49:07'),('10.244.0.0','66FC988C4F90DF4C6195623F8B1392CF',10007304,'2023-01-21 12:53:16'),('10.244.0.0','68FB6DBD7EB59BAFF481755C89790B9E',10007304,'2023-02-27 06:29:35'),('10.244.0.0','69DF3045DFFD449DF0078036A479C53C',10007304,'2023-01-14 08:41:42'),('10.244.0.0','6A4799F6727C0F9585EDCEEED0E5BBFE',10007304,'2023-03-01 06:09:36'),('10.244.0.0','6A56F1D01FEE7EF57E5FD9234852F58C',10007304,'2023-01-25 14:14:35'),('10.244.0.0','6A84F5A35FDD924700894D5158D7727C',10007304,'2023-02-14 05:17:07'),('10.244.0.0','6BA6DBD1F2756B528971D787FF98497E',10007304,'2022-12-24 13:05:42'),('10.244.0.0','6BE3B9843AE8939CB8805D76DBDB1794',10007304,'2023-02-28 05:03:05'),('10.244.0.0','6C3FFD6284E5CA1BCCBBB1BAA504C96A',10007304,'2023-02-21 05:30:04'),('10.244.0.0','6D6238A7E59F2A82AF97C66E9F95BE84',10007304,'2023-01-27 12:55:03'),('10.244.0.0','71AF7210258E6544370513A03511386E',10007304,'2023-02-21 06:51:49'),('10.244.0.0','71F9485BB29A4D34C4D581C81F99273B',10007304,'2023-01-08 14:51:38'),('10.244.0.0','72E42A63C941DA3E07645CDC6D06FE69',10007304,'2023-03-02 06:24:33'),('10.244.0.0','7315B7B1A785F187975C91B20FD69239',10007304,'2023-01-03 12:01:12'),('10.244.0.0','73D73EADFBC46BA5D8188093E36F0D80',10007304,'2023-01-23 08:24:58'),('10.244.0.0','7501BB02CC2418F7AD8D60F6A2EE1AA8',10007304,'2022-12-22 10:34:35'),('10.244.0.0','760A153BFAB708C933325E89F43869E5',10007304,'2023-01-04 07:27:00'),('10.244.0.0','77B3917F3CDD9F6F73423FBECA518517',10007304,'2023-02-09 17:09:56'),('10.244.0.0','77EA291DFDDE1E4A07F8AA1C193E9527',10007304,'2023-02-28 03:53:34'),('10.244.0.0','78FD1129C57998C3C775F631CADEC55B',10007304,'2023-01-10 04:07:15'),('10.244.0.0','78FDDE13756DAFB6122CFB03CD50A585',10007304,'2023-02-15 12:25:41'),('10.244.0.0','799BD8495F27A7D2CB88CC7D205BA651',10007304,'2023-01-03 12:01:12'),('10.244.0.0','799EEAC341FD43E707AFF6CDD4170C24',10007304,'2022-12-24 04:59:52'),('10.244.0.0','7CF3C635864A03F4672021708D3012F5',10007304,'2023-02-21 05:36:47'),('10.244.0.0','7D9F6042AB3928D88F613C4B544940F0',10007304,'2023-01-03 12:01:12'),('10.244.0.0','7F894E1B1FEE46ED5D66F24FA06E9955',10007304,'2023-01-19 04:35:07'),('10.244.0.0','811EA958BEA61D1D8C70DE8EBDD7E376',10007304,'2023-02-14 04:39:06'),('10.244.0.0','8277CBCB52C8819CE06B5FAF9ACF5A97',10007304,'2023-01-27 12:43:40'),('10.244.0.0','82F7FF625EBDAA710A510C1287928A2C',10007304,'2023-01-25 11:09:25'),('10.244.0.0','84777DBF129C0B72A379AE0C1A99CA51',10007304,'2023-02-13 06:22:44'),('10.244.0.0','84FEB5098B8AEDA8EAA18F8455AE59C8',10007304,'2023-03-02 05:07:37'),('10.244.0.0','854B2C436B2E9A67366845868B43AC63',10007304,'2023-02-14 04:53:32'),('10.244.0.0','876DA44F02E24385E6FB9911D02EC163',10007304,'2023-02-09 04:04:36'),('10.244.0.0','8BBE112CF13094F10BF0DBE719C39DF3',10007304,'2023-01-04 11:52:06'),('10.244.0.0','8BEAD1A7D4B9CB41A25C1AD4EFD1AF8B',10007304,'2023-01-14 08:41:42'),('10.244.0.0','8CF1FC18A2A4BA0D50284324F89D7A9B',10007304,'2023-02-10 02:02:21'),('10.244.0.0','8DDEEFB8E944D41AD19B144159EE618B',10007304,'2023-02-10 05:22:33'),('10.244.0.0','8E9DF28E4B77308468339628877B7EB6',10007304,'2023-01-10 08:18:16'),('10.244.0.0','902A3E38FF7182E341A753DEEC754291',10007304,'2023-02-08 04:10:45'),('10.244.0.0','913BA1924A9ADF6B9486A1B8C2781411',10007304,'2023-02-14 06:35:58'),('10.244.0.0','93F6ABF82E797F5D3D6568AFB7E71421',10007304,'2022-12-23 23:49:44'),('10.244.0.0','9608D1C9135F9E64561AE33A8DA715DC',10007304,'2023-01-27 12:56:42'),('10.244.0.0','9987E0780DE93F53D253F30BCF86F644',10007304,'2023-02-17 04:29:07'),('10.244.0.0','9993CB6F762A60E2F3C40AE6DDC529E1',10007304,'2022-12-22 13:23:56'),('10.244.0.0','9C6B6804449A8A1C26F3CE4FA97D3BB6',10007304,'2023-02-08 09:51:44'),('10.244.0.0','A134FA3FB58424876A3E742554D6E7A8',10007304,'2023-01-03 04:16:02'),('10.244.0.0','A3DDB625C8B724A36D0AD77870B190C6',10007304,'2023-01-04 06:09:32'),('10.244.0.0','A5069D5E2C4519620587FD027F89DB9F',10007304,'2023-02-23 09:12:42'),('10.244.0.0','A53DE30567FD2C90F686E7F58035A7EC',10007304,'2023-02-21 04:53:05'),('10.244.0.0','A5BDC4E8CC75700FF31D309A58CC0DED',10007304,'2023-02-13 06:41:01'),('10.244.0.0','A77B5C7DDECF0B19DE83B0413FAF3322',10007304,'2023-02-18 04:11:46'),('10.244.0.0','A7A366FC110549CEC5C2B88AF363553C',10007304,'2023-02-21 04:27:37'),('10.244.0.0','A8429BEF52258313017BA44C9A16F29C',10007304,'2022-12-23 12:40:03'),('10.244.0.0','A94A726EF1B8A296A01F56CF75E1F338',10007304,'2023-01-23 13:24:22'),('10.244.0.0','AA7B2229CA1CC433B23856E17DA02757',10007304,'2023-02-07 15:44:12'),('10.244.0.0','AB05B3A0AE60C3C57A59C04761A2DB08',10007304,'2023-02-09 03:45:02'),('10.244.0.0','ABD29712288E918E0F73967E12FCFD75',10007304,'2023-02-13 06:29:14'),('10.244.0.0','ACE38356883EF7F3781F3ACE2C5E9F8A',10007304,'2023-02-17 04:57:46'),('10.244.0.0','AD00EAE5325CC835C02B9177B58A4C53',10007304,'2023-01-08 15:12:44'),('10.244.0.0','AEF14C4EA01060B4AD4A92CD34BDB5E8',10007304,'2023-02-16 04:52:24'),('10.244.0.0','B07163F46174BF28CA3B9361B9A0B695',10007304,'2023-02-16 04:52:24'),('10.244.0.0','B07AA38B4FC4ADA53A9A3063E8776061',10007304,'2023-02-27 11:38:10'),('10.244.0.0','B2661376ED722B8F0AE6981FC62B920D',10007304,'2023-02-27 05:20:57'),('10.244.0.0','B28BAFF203AC98D638A84CB514EF25B6',10007304,'2023-03-01 05:43:28'),('10.244.0.0','B335709F727CE4A6AC0D6E7703FAA7A5',10007304,'2023-02-14 07:23:40'),('10.244.0.0','B474C69E7AFE4CA66FC2CF70821AEBFD',10007304,'2023-01-04 07:34:06'),('10.244.0.0','B6FD5A61A873CA37F3C4E4A72EF38E5D',10007304,'2023-02-13 07:34:35'),('10.244.0.0','B7ECF13F7EDA63C7F29803BA6A6DF737',10007304,'2023-01-14 08:41:42'),('10.244.0.0','B89AAA33253A6622BC9C15A69776A4D1',10007304,'2022-12-27 14:46:46'),('10.244.0.0','BA87017E2236D5A01B2AE1CF21823841',10007304,'2023-01-25 11:55:03'),('10.244.0.0','BADB021BDDB3347A2B531CF09647D4C7',10007304,'2023-01-27 05:16:28'),('10.244.0.0','BE41CC9EF11DCF26FE99E3A48850C263',10007304,'2023-01-02 14:37:43'),('10.244.0.0','C0A699F8F97A89E8D14ECFD819E575C2',10007304,'2023-02-14 07:49:59'),('10.244.0.0','C1D1B5338C2B4EF6D541922CA49567B4',10007304,'2022-12-22 14:27:21'),('10.244.0.0','C24665C67F65F629B2538948DFB04A45',10007304,'2023-02-13 06:08:39'),('10.244.0.0','C2563744D040F42797D7A0D3C713E45D',10007304,'2023-02-27 09:22:39'),('10.244.0.0','C2792C7FE0934BA1183C8A086D6694A2',10007304,'2023-01-02 07:19:12'),('10.244.0.0','C3A1B31C8E479056C9A89175AB71E17D',10007304,'2023-02-13 05:37:36'),('10.244.0.0','C4C4AC6CB5020405A4ECCB1293861E5C',10007304,'2023-01-09 06:14:16'),('10.244.0.0','C666E9A2815908D94A6B7ABCA3A3D094',10007304,'2023-02-22 05:10:04'),('10.244.0.0','C81980E45C04913E3BE28984A1D3FE8A',10007304,'2023-01-02 05:34:12'),('10.244.0.0','CD8D3F9E091565DC09EC05BF29A16F99',10007304,'2022-12-24 13:18:04'),('10.244.0.0','CE63A8BDE30D9C01ECEED1E6237B7D4E',10007304,'2023-01-04 05:40:04'),('10.244.0.0','D0F9C4398FF7905306C54481688EA0DA',10007304,'2023-02-13 12:15:57'),('10.244.0.0','D1079CC20C1BAC5F070AD2215DFD2DB5',10007304,'2023-02-15 05:03:11'),('10.244.0.0','D177734BD962A6E400A36113AAE2F42D',10007304,'2023-02-08 05:17:37'),('10.244.0.0','D2BBA6868648D260C740C55E47645ABC',10007304,'2023-01-23 06:32:27'),('10.244.0.0','D2CF30546FE0991C247DEB86E1982D03',10007304,'2023-02-13 14:49:25'),('10.244.0.0','D684978E7B83BEDC4D11AFF98B1D9C8A',10007304,'2023-02-04 05:24:23'),('10.244.0.0','D8929ABB4E88E83466D9F1E4E8E86965',10007304,'2023-02-16 16:49:18'),('10.244.0.0','D9C532D41CAC8A577DD05E64ADAAC499',10007304,'2023-02-13 06:22:14'),('10.244.0.0','DDB4281EC0FAE547E339FD58E2076B0C',10007304,'2023-01-04 05:42:21'),('10.244.0.0','DE23D1F07594A6066B3C377FE0DFAB4B',10007304,'2023-02-04 04:46:58'),('10.244.0.0','E092CBF361EF9F26DD676FFB9A79A5AE',10007304,'2023-02-22 13:20:24'),('10.244.0.0','E2BEBBA798227474ADF30E669E37AD64',10007304,'2023-02-23 03:39:22'),('10.244.0.0','E350BC0431688307A6530EFD33F9326C',10007304,'2023-02-20 04:33:01'),('10.244.0.0','E42CCE430D000A1DE8F05BF479D14318',10007304,'2023-02-03 06:56:35'),('10.244.0.0','E4EE2915CDF4192B34B6B92FC9DC08F5',10007304,'2023-02-28 13:24:15'),('10.244.0.0','E548267B1E509DFE2221173D41A1C672',10007304,'2023-01-25 13:32:30'),('10.244.0.0','E54F6B8DDF6070E261C1EF13801166A9',10007304,'2023-01-25 12:44:33'),('10.244.0.0','E9B37EFD5BF350E3C60D7C91CF496714',10007304,'2023-02-11 04:46:52'),('10.244.0.0','E9B843AD4FCF9DF59D2C4D53C1A9B0E0',10007304,'2023-02-11 09:37:30'),('10.244.0.0','EAA50AAC424E61A849DE91406E00DAF6',10007304,'2023-02-03 11:19:24'),('10.244.0.0','EAACE21233011ECF7E0F3A220007E66D',10007304,'2023-01-23 11:44:38'),('10.244.0.0','EC0252212C762F51DCDF876F991B45BF',10007304,'2023-02-15 15:54:47'),('10.244.0.0','EC208817C1F63017C8A23D6EF0505DD5',10007304,'2023-02-13 09:46:59'),('10.244.0.0','EE18561214C45F0604FDF9CCE7766634',10007304,'2023-02-03 05:07:27'),('10.244.0.0','EEDA15E5A19F739D0BA2EA07D7CCC077',10007304,'2023-02-25 04:40:09'),('10.244.0.0','EEF2099646C6D98D70137154888E8A38',10007304,'2023-02-15 05:03:13'),('10.244.0.0','EF7BF24AB5E769016AA4AF821B1B7673',10007304,'2023-02-11 05:33:45'),('10.244.0.0','EFD997DF4EE142387AEEB458E79B8516',10007304,'2023-02-21 04:35:11'),('10.244.0.0','F0804439A63A5C2BEF04A94182895FE6',10007304,'2023-03-02 10:15:12'),('10.244.0.0','F0C8347B5DF2CD52B5799D0569061816',10007304,'2022-12-30 06:44:06'),('10.244.0.0','F1D3C48D9660713F3764BB905FDBBC98',10007304,'2023-02-04 10:37:39'),('10.244.0.0','F227C17DF43F0124F2748230E68E67FD',10007304,'2023-02-13 07:08:04'),('10.244.0.0','F2EEC2D9DA998940D77EB69A5E87C908',10007304,'2023-02-28 09:48:15'),('10.244.0.0','F3CCB262A1704720C7B8B9D2D94BACA8',10007304,'2023-02-13 06:37:49'),('10.244.0.0','F41DA4DB177B1EE246F3C453DC6A0791',10007304,'2023-02-13 11:13:31'),('10.244.0.0','F4BA334A7AF4630FB9356F53E57F7FCC',10007304,'2023-02-13 09:52:42'),('10.244.0.0','F6C81285AA13649FD761F0EA5673F2B3',10007304,'2023-02-16 05:10:04'),('10.244.0.0','F81FFED9E985649C40B20E6543C43F1C',10007304,'2023-02-04 11:13:32'),('10.244.0.0','F98C543849C8BA1E98ADFAFD416BE1D9',10007304,'2023-01-14 08:41:42'),('10.244.0.0','F9E60AE8BF7EA7C21B23E241A576E32C',10007304,'2023-02-27 05:18:07'),('10.244.0.0','FB16B0BBEACAC5E76353B97B39F250C0',10007304,'2023-02-14 11:47:13'),('10.244.0.0','FD69362A16A61A67603B7BDC056E6F80',10007304,'2023-02-08 05:15:18'),('10.244.0.0','FE699CE2CC8753BCCF563A84E23B55D6',10007304,'2023-03-01 09:09:19'),('10.244.0.0','FE8CF28A5E6F241B1BFFB6A2C9C2BEA7',10007304,'2023-02-14 06:11:44'),('10.244.0.0','FF8B6761168A05DF259DA193EAA8C7CB',10007304,'2023-03-02 04:26:04'),('103.109.14.30','0B2D054741015E6EB3F5C6331F11C6A9',10007304,'2023-04-22 07:28:52'),('103.163.91.7','72CA624DE5A0CEE50983F4D9928649D1',10007304,'2023-04-20 12:31:25'),('103.186.133.3','4C615BA72820C1B7295A536D5262B321',10007304,'2023-04-22 07:44:18'),('103.186.133.3','5EAD80069AE42922075454080D94F4B5',10007304,'2023-04-22 07:07:32'),('152.57.196.42','4031CEAA2E5A36187D3352784FE74142',10007304,'2023-04-14 06:22:39'),('157.35.16.232','404E1FEA07E36531024F5D020B7B82CA',10007304,'2023-04-18 08:21:40'),('157.35.16.232','4C6C681441680480FC60A0E31DE20305',10007304,'2023-04-18 13:44:47'),('157.35.16.232','EB3F8A26937A79A8C68D9A6BAEF9ACC1',10007304,'2023-04-18 13:51:51'),('157.35.16.232','F4AEFEA5BE7F8EC4593086BF0D73498A',10007304,'2023-04-18 08:01:52'),('157.35.16.232','FB78E042E69B1C79FAB689A186637C10',10007304,'2023-04-18 06:58:47'),('157.35.16.232','FE55C479CB1EE1E032C99E28384539E1',10007304,'2023-04-18 14:10:04'),('157.35.17.179','21CF61F4CCDFFA41B187E2784749C814',10007304,'2023-04-17 08:16:14'),('157.35.5.211','01A9B428C185ED8318C8D6CF1B6A1F54',10007304,'2023-04-15 07:18:46'),('157.35.6.79','0079CECC8A5F7755B8E1369AD62FB619',10007304,'2023-04-14 06:12:26'),('157.35.6.79','2B29B14BDD261314EA101C45F24B9FB0',10007304,'2023-04-14 06:12:26'),('157.35.6.79','39527693B3686F32C94AB5931E72662B',10007304,'2023-04-14 06:09:34'),('157.35.6.79','55D89E92AB6FA71BC916389C14B3F008',10007304,'2023-04-14 06:12:26'),('157.35.6.79','5A3F874FE8B1781E0F856566F060FCF0',10007304,'2023-04-14 06:09:37'),('157.35.6.79','5A7DDA1B002A0BEDF208CF89FFFD9CCE',10007304,'2023-04-14 06:09:37'),('157.35.6.79','700DA6AFDE088173B9E01FA57748D0CF',10007304,'2023-04-14 06:09:29'),('157.35.6.79','7AEDBD0981F29FE9B102003E441DCE21',10007304,'2023-04-14 06:12:27'),('157.35.6.79','CC25F074DE733339D6B8B6DC2D927000',10007304,'2023-04-14 06:12:27'),('157.35.6.79','DF03EFA873C7D33E47CDACB0B61812BC',10007304,'2023-04-14 06:12:27'),('157.35.6.79','E887593374296C8B093120C1FFFEC0F7',10007304,'2023-04-14 06:12:27'),('157.42.4.245','66FB1FB5EF06BE61F9F8B7E9EC9689CE',10007304,'2023-04-22 07:57:43'),('157.42.4.245','73DFC7EC556898CE17E7D952CF6ADBED',10007304,'2023-04-22 07:33:50'),('157.42.4.245','978B1F21F675C97FCB1634E3C41A11C5',10007304,'2023-04-22 06:41:55'),('157.42.4.245','CCDCCA17978851A526436BD3B438BA6B',10007304,'2023-04-22 07:06:57'),('192.168.0.144','3721ADE292F95EF01F704DAE502EA8E8',10007312,'2023-02-07 18:13:58'),('192.168.0.144','72F89E95E1C8AE30007C6703AFDB671D',10007312,'2023-02-07 17:59:26'),('192.168.1.10','0432F219EDEA8DE4FBF670BCBE240AA2',10007304,'2023-03-01 10:17:52'),('192.168.1.10','3694A02E63DD89F04886DAFA13FFD782',10007304,'2023-03-03 11:00:10'),('192.168.1.10','3904D4F6635C25829DDA5339C34C0699',10007304,'2023-02-28 14:53:05'),('192.168.1.10','45710FFE0461613D7B18B9439F1F46FA',10007304,'2023-02-28 16:00:36'),('192.168.1.10','4ACCD9874820685DFB7FD3B79058C4D6',10007304,'2023-03-03 11:18:37'),('192.168.1.10','547F05D45F211BF76D054103F2C45BA4',10007304,'2023-03-01 15:46:51'),('192.168.1.10','6ACD10FE3498B328F02B05ED51EBCC82',10007304,'2023-02-28 13:53:32'),('192.168.1.10','6B12314ADA2E1ABAF3E06D3A5AD90CBB',10007304,'2023-03-01 15:35:13'),('192.168.1.10','77FD85790E4B22E0BAC4195D56FCC0A9',10007304,'2023-03-02 14:15:20'),('192.168.1.10','7A91F0867B149ED7B4D91598D8519D64',10007304,'2023-03-01 15:14:03'),('192.168.1.10','7FEC693935870A2906B7D2EAB783DAC8',10007304,'2023-03-02 12:01:41'),('192.168.1.10','AD7BEF791842957239E3994A26DA9F1C',10007304,'2023-03-01 11:07:55'),('192.168.1.10','B154ADE48478EFDB7CABD40D87832F34',10007304,'2023-02-28 17:02:49'),('192.168.1.10','C0361FC4CE6D8B37BB025259006B4122',10007304,'2023-03-02 17:14:20'),('192.168.1.10','C292E38A7DA0113CECCBD949C8B0F276',10007304,'2023-03-01 10:51:45'),('192.168.1.10','C88E1BA9E8463C20550E864701DBC6D4',10007304,'2023-03-01 15:14:03'),('192.168.1.10','CD80BE9D36421970CD2453B35CE44066',10007304,'2023-03-02 10:41:59'),('192.168.1.10','E6945D0DF6FA3790807AE697693B1705',10007304,'2023-02-28 15:56:36'),('192.168.1.10','EACED29FA5F8D85D20C760FFAF69EF68',10007304,'2023-02-28 15:55:08'),('192.168.1.10','F09C7C6CE426E815089A8AED1745082A',10007304,'2023-03-02 10:31:46'),('192.168.1.106','1885D0C5711F1B27F061F8DD1BA48B8D',10007304,'2023-02-14 10:53:32'),('192.168.1.106','5A339547655DAA4AB6E95AF13535DDC2',10007304,'2023-02-17 11:05:18'),('192.168.1.106','5E7F4AEFB700B2FC25D8F7EE16A1178B',10007304,'2023-01-12 15:47:32'),('192.168.1.106','7AA1F3309DA2B440AF01C2B0FD74975B',10007304,'2023-02-17 14:42:49'),('192.168.1.106','879D92C98D3FF16AFAE2D00B615E5F64',10007304,'2023-01-12 15:17:10'),('192.168.1.106','A93CDC6496BEA1DC03C49294916EA202',10007304,'2023-01-12 18:23:22'),('192.168.1.106','B085E8C6CCFC7441E12DE0CA13EDC833',10007304,'2023-02-14 15:59:18'),('192.168.1.106','B79F8FF2F8F3534B9E30F0A7F8A8F7E9',10007304,'2023-02-18 10:22:57'),('192.168.1.106','BF4F3F00B48C9CCC976073C453BDF4D6',10007304,'2023-02-16 10:48:28'),('192.168.1.106','E8D0FEE6C7D2A5CB885A145561B374D9',10007304,'2023-02-16 10:01:21'),('192.168.1.106','F139D3B4FA84E80906D04C528214C40B',10007304,'2023-02-16 14:36:42'),('192.168.1.106','FE7B95C3AB22BEB8021864DEAECABB73',10007304,'2023-02-22 16:24:42'),('192.168.1.107','44FACF8F4C49CC12EC4FF6F7E8ED8673',10007304,'2023-03-02 16:10:19'),('192.168.1.107','661B9B9784B338581EE7FA6BF2C04A3D',10007304,'2023-02-11 17:08:50'),('192.168.1.107','878F00B4C6353A1C6C7783F48C46F307',10007304,'2023-02-11 17:08:50'),('192.168.1.107','8CBEB8F4BC2483531EF043ACB1C5C348',10007304,'2023-02-11 10:28:36'),('192.168.1.107','98C7E02C0E250A837AE656B9D5AECAB2',10007304,'2023-02-11 17:27:15'),('192.168.1.107','D019E8785A4CD8FFAD709ACEF5A3668F',10007304,'2023-02-11 16:32:40'),('192.168.1.108','19545C3906C56DFCC91A2B7D8BFF76A2',10007304,'2023-01-19 10:09:48'),('192.168.1.108','252AC40AEE5595B469D736F2E704193E',10007304,'2023-01-16 15:16:09'),('192.168.1.108','3E62F2C1586A3165307561C923792A39',10007304,'2023-01-14 16:27:01'),('192.168.1.108','410A38A791EFA960EA9411DD149BD905',10007304,'2023-01-16 15:15:18'),('192.168.1.108','58B22ECDB9B512C09AB6230EB3A1C96C',10007304,'2023-01-17 14:51:08'),('192.168.1.108','74523B280A64EAF6F7D67B381950692A',10007304,'2023-01-14 15:21:23'),('192.168.1.108','8A8907341156C3BA9C111586FEB5F835',10007304,'2023-01-17 14:52:10'),('192.168.1.108','92AF1E6567B72BC485785F4DECD82A38',10007304,'2023-01-16 12:35:43'),('192.168.1.108','92F55BE2F0CB3DB260FD5DED2F3D8BA1',10007304,'2023-01-16 09:55:13'),('192.168.1.108','B1D5413096DE13A3F2C35BC298685D59',10007304,'2023-01-17 10:00:43'),('192.168.1.108','C4DCD456BA49A5C3E89D8BC2BC5A5AD8',10007304,'2023-01-16 15:10:16'),('192.168.1.108','C5172A5659D45DC0DFB68781E0A09DAD',10007304,'2023-01-17 14:09:51'),('192.168.1.108','E786264659F968FA8E819CFAF9234F5D',10007304,'2023-01-20 10:01:53'),('192.168.1.108','FBE68586E2699443EF160A733A98BE70',10007304,'2023-01-17 14:53:11'),('192.168.1.109','79F71882DB4AF1CABADC1F1D576EB6E9',10007304,'2022-12-17 11:22:52'),('192.168.1.109','AF01DB17AF291E4B908C05FDF0620B90',10007304,'2022-12-17 11:24:53'),('192.168.1.109','CE170F441DC76C7DB7D510196F965D3A',10007304,'2022-12-17 11:23:14'),('192.168.1.109','F04032636102C5A97BBF77ED41C7AE0D',10007304,'2022-12-17 11:33:31'),('192.168.1.109','F07D1C463B1AB73F9D2BDFB976A1B02F',10007304,'2022-12-17 17:21:28'),('192.168.1.109','FACBCE645E987F370213258A0E46C9A3',10007304,'2022-12-17 10:44:50'),('192.168.1.111','01AAA82DB694DCF6BB07919F005741C8',10007312,'2023-02-03 13:03:02'),('192.168.1.111','09B11EAA4CC62CD333148C6ACBC6B2C5',10007312,'2023-02-02 16:56:10'),('192.168.1.111','109B76E9D0528C5327C9AD2D983319EE',10007312,'2023-02-02 14:31:24'),('192.168.1.111','22633697879A9F5812E6C98F571DC03A',10007312,'2023-02-01 17:56:03'),('192.168.1.111','24D98474F9C2AA04D3895F7082C8094F',10007312,'2023-01-28 11:01:54'),('192.168.1.111','2B3E778C1F3BBE665DAAB386EF21797C',10007312,'2023-01-25 11:16:54'),('192.168.1.111','2F1291CA08AAFF4F6459CACA2078F6B8',10007312,'2023-02-02 15:57:17'),('192.168.1.111','3336E8610CC478485E9F73CCEB1E0A74',10007312,'2023-01-31 18:37:29'),('192.168.1.111','3B7393055AFE7B91A0595F0B303295C1',10007312,'2023-01-27 10:39:10'),('192.168.1.111','3DBC9D727926F672C705FDB050EED5B1',10007312,'2023-01-31 14:25:36'),('192.168.1.111','3FF7C9179EE9AE1CF1EB69D63B97CB18',10007312,'2023-02-02 11:27:13'),('192.168.1.111','473D44AA3D963741A7C4824CAE57D934',10007312,'2023-02-03 12:31:39'),('192.168.1.111','4B5083B1739B735C5E9A4A0C43D93012',10007312,'2023-01-25 19:32:20'),('192.168.1.111','501B5DCD5578E57596442B5A1567239F',10007312,'2023-01-25 12:03:21'),('192.168.1.111','5710639BE81C415CB75DF1DC6D7A020C',10007312,'2023-01-27 10:37:01'),('192.168.1.111','5D9CBA6241157E5B90A68C8122CEEF06',10007312,'2023-01-27 16:55:56'),('192.168.1.111','5DD445FFDD4142B9AD5C3BF88471A5A2',10007312,'2023-01-25 10:13:48'),('192.168.1.111','5DFCF9DA73A3FB6BC1E4E2FCB826E37C',10007312,'2023-01-25 14:35:50'),('192.168.1.111','5ED83A72746C70B071E2AA4F048950CC',10007312,'2023-01-31 12:06:54'),('192.168.1.111','5F4631D7078D0276911A2E10F6573060',10007312,'2023-01-25 14:29:04'),('192.168.1.111','68CBDD8B619C023E48F10386711E37D8',10007312,'2023-02-03 14:33:55'),('192.168.1.111','68DF4FD966ADF8009D309A1146BD1D98',10007312,'2023-02-03 11:53:08'),('192.168.1.111','735041092808DEA6E4FC68BBFE672CC7',10007312,'2023-02-01 12:52:12'),('192.168.1.111','7B06BDA0F46847108F0049969943D0EE',10007312,'2023-01-30 18:25:53'),('192.168.1.111','7DCA029FA1E0381A7869017F5061AFD0',10007312,'2023-01-25 13:03:04'),('192.168.1.111','82DA225D4039AF2A0A5C470987DE27AA',10007312,'2023-01-30 12:18:53'),('192.168.1.111','831FAAC65BA353AA3B29EA1AF019B656',10007312,'2023-01-27 12:01:25'),('192.168.1.111','86FB0624C5E08A5E35E2D173101F9635',10007312,'2023-01-28 18:39:04'),('192.168.1.111','8A42BB7652489642077E3643F820B62F',10007312,'2023-02-01 10:44:59'),('192.168.1.111','93B669FFA933E77C63E570E063A9761A',10007312,'2023-01-30 15:55:26'),('192.168.1.111','9A735A6500830D4334A0C62EE86FC3C0',10007312,'2023-02-01 13:47:22'),('192.168.1.111','9D9FE091C118E18007E5CE1295D7F274',10007304,'2023-01-24 13:34:44'),('192.168.1.111','A04DC4C5B75BB3E895FC3B5966BE5672',10007312,'2023-01-25 19:16:21'),('192.168.1.111','A0EEA4CB5B6721B3769FF3271567C1D2',10007312,'2023-01-28 17:41:45'),('192.168.1.111','A7D066BAE7573D38CE943FF6733B640D',10007312,'2023-01-25 21:51:45'),('192.168.1.111','A9C7B0328B92CA2E17F01ADD9B297E0F',10007312,'2023-02-03 14:25:44'),('192.168.1.111','AB886DBD541620BBFD17BC88C3FD0AA4',10007312,'2023-01-25 15:07:24'),('192.168.1.111','B48F614FC59726BD84982137827F5109',10007312,'2023-01-30 11:46:01'),('192.168.1.111','BED07FAE39B907495372B0CFB328509E',10007312,'2023-01-31 17:07:50'),('192.168.1.111','BF3AE9858788F21475A94402DA7B5E56',10007312,'2023-01-31 10:07:34'),('192.168.1.111','CA29548ED42EB21E366AC84CC233FCE4',10007312,'2023-01-27 14:45:25'),('192.168.1.111','CD84712F574DC2D706A0E26E53B47741',10007312,'2023-01-30 10:13:55'),('192.168.1.111','DAF369E655238D19D50D13075A349B48',10007312,'2023-01-31 09:45:33'),('192.168.1.111','DB28D7E881D89AA235096DE6F00D6138',10007312,'2023-02-03 13:39:53'),('192.168.1.111','DE30C71477D8F315A9D9914708250E78',10007312,'2023-01-25 16:43:52'),('192.168.1.111','ED46C15CFB13DC7CCDA89CC57022DC82',10007312,'2023-01-27 09:53:49'),('192.168.1.111','EF7CF09E88F1CA35276B78A2B54D7B04',10007312,'2023-01-25 15:32:55'),('192.168.1.111','EF914917EB727ABF796E9DA33ED8A2F7',10007312,'2023-02-03 14:22:17'),('192.168.1.111','F43EF5AFE249C013DFDB7937298DD174',10007312,'2023-02-03 10:36:18'),('192.168.1.114','02EBD7B0D66AF7464A578BBC7CD3797E',10007304,'2023-02-08 10:00:35'),('192.168.1.114','06B6911209D8E578E67C5594E351C261',10007304,'2023-02-08 15:04:47'),('192.168.1.114','2028584B474161DAB4C4870F4C52BE1E',10007304,'2023-02-10 09:55:32'),('192.168.1.114','283EE2D00B0DE42BCBF51039ADDD0EFA',10007304,'2023-02-09 14:52:07'),('192.168.1.114','2B3649785CA506486E8A4F55DF3D29BA',10007304,'2023-02-04 09:35:31'),('192.168.1.114','62FE9D3166A669C3BAFB3FD16930C254',10007304,'2023-02-04 13:31:05'),('192.168.1.114','65ADE98CEDD476B8C9CE2390A58B3FAC',10007304,'2023-02-04 17:22:37'),('192.168.1.114','682C0DDC89CBC3303F80CEA3181C20CE',10007304,'2023-02-04 13:28:58'),('192.168.1.114','6BBC6E7246353BFF0ECDC0E9AAB5DA36',10007304,'2023-02-07 10:33:41'),('192.168.1.114','81193E28E3790A70A5EADD17BBED8D8E',10007304,'2023-02-09 09:50:23'),('192.168.1.114','8A21AAAEF1BB85F1637892CD3F7D537C',10007304,'2023-02-11 09:53:27'),('192.168.1.114','8AEC21A56D76FE506E7EDF95F721C4C0',10007304,'2023-02-04 17:25:51'),('192.168.1.114','901B58C5DEFAA2A1824E40D3AE0C1300',10007304,'2023-02-10 15:17:45'),('192.168.1.114','95C3B3D1343CFDBE2668A059220E33CB',10007304,'2023-02-07 10:26:59'),('192.168.1.114','F3BE024E91F2DB71749C43F00A892CD9',10007304,'2023-02-09 14:45:15'),('192.168.1.114','F86AF11DD97637E2DA0913521596D7DB',10007304,'2023-02-04 13:26:41'),('192.168.1.114','F9EBBE90C1EEC21D33068A84B08D6624',10007304,'2023-02-06 16:06:34'),('192.168.1.30','368407AEFE69F8638C20DB31BA99D57E',10007304,'2023-04-21 13:33:43'),('192.168.1.37','18BFA1C90F15B26B3BDB7DE8D4FAB7BC',10007304,'2023-04-18 15:30:16'),('192.168.1.37','546918838966F94CFBF741A2C2DAD6EF',10007304,'2023-04-18 15:38:48'),('192.168.1.41','301EBC7D762628A7FE8E57AE6BB58368',10007304,'2022-12-15 15:23:22'),('192.168.1.41','3783D8586EA48625E5F237CB95B9C821',10007304,'2022-12-15 15:21:59'),('192.168.1.41','3E38832E276B49390A516CE5AC43B92F',10007304,'2022-12-15 14:54:03'),('192.168.1.41','87E5101877F68B9330431C57AB6BBF69',10007304,'2022-12-15 12:46:31'),('192.168.1.41','C3689D094E4C78947B63D0B895A5E00C',10007304,'2022-12-15 14:04:09'),('192.168.1.41','E8E1BD813F7A23C7210AC9B458CCFC8D',10007304,'2022-12-15 16:15:39'),('192.168.1.42','087EC3CDF6431D39006F53F1338084D9',10007304,'2023-03-06 18:18:01'),('192.168.1.42','1C05FE7ED5CDB52B9D5564F11EAEFDB5',10007304,'2023-03-03 10:05:27'),('192.168.1.42','28BED98F7C36F07803685DFCEC9E1D23',10007304,'2023-03-01 13:40:04'),('192.168.1.42','3E53F92E0845B460D9F3BA4945BB2FB9',10007304,'2023-03-02 17:13:00'),('192.168.1.42','6A74B6CA8C6B526771444FE056443F39',10007304,'2023-03-03 18:11:22'),('192.168.1.42','9633BF81FCBC48951F99C77AF228E793',10007304,'2023-03-01 09:57:57'),('192.168.1.42','983D4FB1EBD7CE26C0493D6EF51AD47F',10007304,'2023-03-04 09:50:31'),('192.168.1.42','B25D8A7D04C753302F5D04A5DEC60563',10007304,'2023-03-02 13:43:50'),('192.168.1.42','BD3509E0F310B9BDD8776E94ABB91176',10007304,'2023-02-28 16:27:18'),('192.168.1.42','BDCE3920A546AE43647CF257BDBCF5FF',10007304,'2023-03-02 17:54:51'),('192.168.1.42','D710439665276296EA46B268404FA31E',10007304,'2023-03-06 10:10:56'),('192.168.1.42','DDC639586F065C439483CBE8E92ABC3F',10007304,'2023-03-01 13:55:53'),('192.168.1.42','ED6929DABF7AB6930AA1555AD848F371',10007304,'2023-03-07 09:42:27'),('192.168.1.42','F2515DF92EC67A7986C89C9C8E3BCF05',10007304,'2023-03-02 11:13:27'),('192.168.1.8','567BC54E04BBC0641FC9955524FBE885',10007304,'2023-04-21 12:17:07'),('192.168.1.8','E0A023FC624D6628D5D7AEDE273144CE',10007304,'2023-04-21 12:54:31'),('192.168.105.144','19A4DB3BC2227767281DAD6C38434800',10007312,'2023-03-04 14:58:50'),('192.168.105.144','3EBBE84BF3211967F5B6C8398A218D53',10007312,'2023-03-04 19:06:35'),('192.168.117.144','632348FF1EF402EA085552A2F502E652',10007312,'2023-02-08 12:48:53'),('192.168.121.144','1D4C65DBA5CD72D1FF11213888056C43',10007312,'2023-02-07 09:47:39'),('192.168.121.144','3DA77F1662DDE12C707CEB05B77CEB38',10007312,'2023-02-07 09:43:48'),('192.168.121.144','3FA06AE7B7E8B6774E9088F9EFBEDE29',10007312,'2023-02-07 13:27:58'),('192.168.121.144','4131A1AA6EC9A7EDB16135DDDEA7BFAE',10007312,'2023-02-07 11:34:46'),('192.168.121.144','6A349F51BE0DA0C94AEA59EA6BDC05F1',10007312,'2023-02-07 12:05:45'),('192.168.121.144','7EC973902A36A66281876DC5D950D2C8',10007312,'2023-02-07 12:22:04'),('192.168.121.144','979A9E315A7D68BD6B6976716352EF0B',10007312,'2023-02-07 09:38:15'),('192.168.121.144','A77A3FE155A33CF6804E1F46BF77D689',10007312,'2023-02-07 09:31:04'),('192.168.121.144','C2CD50159A4D66C7941DCCFDC7E22B81',10007312,'2023-02-07 09:47:09'),('192.168.121.144','F77E50E940CCB445DE9EDD7986F0686D',10007312,'2023-02-07 10:15:55'),('192.168.134.33','4A9BAD369CC202EF5B369C63D1FC6571',10007304,'2023-01-11 12:58:37'),('192.168.146.1','003EB861F23EEC95DCB09D1D7C18867C',10007304,'2023-02-11 15:33:29'),('192.168.146.1','00F453B166108A1A265E0CBD9DCCC8AE',10007304,'2023-01-03 17:58:20'),('192.168.146.1','013197B978DC9E2183F415B3A1741960',10007304,'2023-01-06 10:48:18'),('192.168.146.1','02FEBCB3807C00242131BB13845E3AED',10007304,'2023-01-18 10:23:01'),('192.168.146.1','07B7D0E19539A912B45CB10D9D33CD8B',10007304,'2023-02-20 09:40:26'),('192.168.146.1','0BA39F29BD09FC27F4627EE3941590DF',10007304,'2023-01-17 15:44:52'),('192.168.146.1','0D41EB73D8BC1A17D770ACF891034024',10007304,'2022-12-31 10:43:09'),('192.168.146.1','10D671B2D158CE7CC3B60E181CB2F9D2',10007304,'2023-01-28 12:04:20'),('192.168.146.1','1135624262000F9902D43E76C9BB89C4',10007304,'2023-02-11 09:58:49'),('192.168.146.1','129E4B12ADB76F823E60E6DC15AF7612',10007304,'2022-12-31 10:41:44'),('192.168.146.1','15C325B992F7082EB46F300E46501EE2',10007304,'2023-02-10 09:47:49'),('192.168.146.1','17EF752AEEF0D4F709ED547BE1A33D15',10007304,'2023-02-09 10:52:11'),('192.168.146.1','1ACFA26EAE1207867835886EC8F4AA13',10007304,'2023-01-24 15:32:15'),('192.168.146.1','23E26D18DC07689346565C5D6C62D45E',10007304,'2023-02-07 13:50:13'),('192.168.146.1','245A5E17D629C06F92855EEA1A351534',10007304,'2023-02-17 10:53:49'),('192.168.146.1','26FCB171B4926F752080C8FCCB805425',10007304,'2023-01-25 09:54:21'),('192.168.146.1','2877FCD7F02794C84968C65272093804',10007304,'2023-01-17 11:21:00'),('192.168.146.1','28B1B072E9071BEB386E08FD137B257C',10007304,'2023-01-22 15:20:19'),('192.168.146.1','2AAF086E31245D0448048946F2091065',10007304,'2023-02-16 09:51:31'),('192.168.146.1','2AD782784E78A2CA37392635344DB490',10007304,'2023-02-10 10:46:37'),('192.168.146.1','2F22B3E8EBE210243CA21B416C00506E',10007304,'2023-01-25 17:02:08'),('192.168.146.1','31E57387FD678AE2917F7A1F298B2F52',10007304,'2023-01-18 16:35:40'),('192.168.146.1','34B7959D0F6F39C1E82A271A1D156961',10007304,'2023-01-19 10:46:37'),('192.168.146.1','353C96B2DCEA52422AF8759B5FA5C737',10007304,'2023-01-16 10:49:12'),('192.168.146.1','37302A7326EEA0C34F1C4995729AA2E3',10007304,'2023-01-16 18:54:24'),('192.168.146.1','3F2731798CA5DE62C0296216DF937CBD',10007304,'2022-12-30 17:27:54'),('192.168.146.1','422A5ECB3614A6551A46698A4207EA2F',10007304,'2023-02-17 09:46:50'),('192.168.146.1','46CB2D73B2994C10BB8034A2DF08ED11',10007304,'2023-02-11 10:24:40'),('192.168.146.1','496AF66B4203CEF2D445967C7F184844',10007304,'2023-02-15 09:47:07'),('192.168.146.1','49BA20FB520A3001392CD822673FE5F9',10007304,'2023-01-16 12:17:51'),('192.168.146.1','4C464292F3BAF318D08E26A5B07D864C',10007304,'2022-12-30 16:57:20'),('192.168.146.1','4C755A84970F06E3071F57927EA4BBB6',10007304,'2023-02-07 09:46:28'),('192.168.146.1','5097332EC89E65B5D744263C44244B6A',10007304,'2023-01-21 10:45:41'),('192.168.146.1','51B7A388E7D3319D1F2545017C21D554',10007304,'2023-02-15 10:57:37'),('192.168.146.1','57BBA048A0FCB0592F82636C4248C3A0',10007304,'2023-01-18 10:23:51'),('192.168.146.1','59647738150F75EC659460FB549A8E77',10007304,'2023-01-21 10:02:43'),('192.168.146.1','5A57A0DEAD964063478161E7B6894A73',10007304,'2023-01-23 10:05:24'),('192.168.146.1','5FFBE4AE0027D0440317C11C1A581644',10007304,'2023-02-14 09:49:36'),('192.168.146.1','61A1E93688F4B04BE7B511DCC4DB2855',10007304,'2022-12-31 14:36:16'),('192.168.146.1','62490FE52BD10AD5393628538D55C206',10007304,'2023-02-13 10:18:36'),('192.168.146.1','631E0AA0FC5B8B2DE57DBE1F196CA411',10007304,'2023-02-09 16:43:24'),('192.168.146.1','6722CEC0216B65CC255D989B9DF4A591',10007304,'2023-01-20 10:02:04'),('192.168.146.1','6904222F9345530F71CCFD712C49F0E0',10007304,'2023-01-03 17:43:59'),('192.168.146.1','6F9173D0C991C80975FEE9F1BBCCC261',10007304,'2023-02-09 16:42:26'),('192.168.146.1','6FC56759EE0D40C9199360101F4E5957',10007304,'2023-01-18 12:16:58'),('192.168.146.1','7329F0B89E7587A0CBB15D47C981EA29',10007304,'2023-01-24 09:51:32'),('192.168.146.1','7336949F77885D422ED4D0EE5351A4C2',10007304,'2023-01-17 09:54:46'),('192.168.146.1','77C8F1E54A42BF9BBE49E04A794A83CA',10007304,'2023-01-10 10:02:53'),('192.168.146.1','790E440D65BAFBD29828EE577F6BC8AB',10007304,'2023-01-16 19:10:38'),('192.168.146.1','7BDCD0603E102352D69D0CA03DA15742',10007304,'2023-01-06 11:01:31'),('192.168.146.1','7BEE83EB8BAF97B2861732AC3F5960D4',10007304,'2023-01-17 18:56:14'),('192.168.146.1','820D07D267FFC8C2FA8D6A5CDF1420A6',10007304,'2023-01-10 10:14:46'),('192.168.146.1','834E216293F5013E45EAA3243F48333D',10007304,'2023-01-16 19:04:44'),('192.168.146.1','863BEE409C1B148C5384676039A2BE90',10007304,'2023-02-10 16:31:04'),('192.168.146.1','86C18AF2D5523404013770B6191587C3',10007304,'2023-02-16 11:32:41'),('192.168.146.1','8CBB5F82E6FADF8BB5E48D35CB9A7249',10007304,'2023-02-09 09:53:47'),('192.168.146.1','8EE81463EE73B69180AF52673845C975',10007304,'2023-01-24 17:08:56'),('192.168.146.1','8F6DE6F9B3B318CE789EE4CEA4160598',10007304,'2023-02-28 11:32:08'),('192.168.146.1','906D24F94ED95E55DE0BA1BE142F7F69',10007304,'2023-01-27 10:01:53'),('192.168.146.1','90D7C0D3B444D372043E264C4724A848',10007304,'2023-01-19 10:45:59'),('192.168.146.1','90FF2987C6AD2DD1B08809286571751C',10007304,'2023-01-17 15:46:42'),('192.168.146.1','92ECF6571031EA0AD64A721E3512365E',10007304,'2023-02-09 18:48:10'),('192.168.146.1','94913E7CE8FC7978D61B37F8DB414D38',10007304,'2023-01-16 17:39:23'),('192.168.146.1','9E6BFA582D472ABDAA02891E7A94E30C',10007304,'2023-02-18 10:04:04'),('192.168.146.1','9F892E7ADFB7F15D9FFC0D71126FCB9B',10007304,'2023-01-17 10:30:04'),('192.168.146.1','9F9805052F70614E2106FA2B78AE99A5',10007304,'2023-01-25 11:59:12'),('192.168.146.1','A2DC81891FFFA6B04688A6C5B659D863',10007304,'2023-02-13 16:04:26'),('192.168.146.1','A6C4B8C96F5E30AE089938E42089E797',10007304,'2023-01-17 15:46:05'),('192.168.146.1','A7DE6CF46BCCDBC44EC2376D8CAC1E3D',10007304,'2023-02-16 17:35:58'),('192.168.146.1','AE39EFA22394F8FDF394B60D1CD14C0B',10007304,'2023-02-08 10:50:02'),('192.168.146.1','AFBD4609CB5D34DF9E39BDEA7A2D550D',10007304,'2022-12-31 09:29:59'),('192.168.146.1','B2734E9BBE7EE889992D8CC5A94B3317',10007304,'2023-01-16 11:30:11'),('192.168.146.1','B2847CF4AE23EECAC54855E85396D9FE',10007304,'2022-12-31 15:39:38'),('192.168.146.1','B66C9C4BDF822B03D066253510DFD0F5',10007304,'2023-01-16 11:26:46'),('192.168.146.1','B6C7F2654ED90699FDD9034066C44B79',10007304,'2023-01-20 15:52:01'),('192.168.146.1','B71B6B332548F1468330A968485BFBB6',10007304,'2023-01-07 11:19:51'),('192.168.146.1','B80FC9E1AA932BF599800FFE46410483',10007304,'2023-01-17 09:58:00'),('192.168.146.1','BBCE1CECCCAFB0B489AEE928DA6B1CB4',10007304,'2022-12-30 18:32:04'),('192.168.146.1','BCB8C943D66FB6750B356163A5140B9C',10007304,'2022-12-31 11:00:55'),('192.168.146.1','C04D7BD31C8B7E4E600CD58440B8E81B',10007304,'2023-02-09 16:42:32'),('192.168.146.1','C11A87A3BE40D81A0A201315802FBEC6',10007304,'2022-12-30 16:58:33'),('192.168.146.1','C1BC0658DDE8193EBBF66BB74E134C00',10007304,'2023-02-16 11:30:58'),('192.168.146.1','C3AE7021BD85157C6D1741009F09123F',10007304,'2023-01-17 18:56:19'),('192.168.146.1','C53CB27C440E07AC45DF8491FF6CD6AE',10007304,'2022-12-30 16:56:45'),('192.168.146.1','C6058C33ACA21A61F1F204DF7D57E8D2',10007304,'2023-01-21 15:51:52'),('192.168.146.1','CA8832AF9C28AAE3F0B7AAAD93E65C4A',10007304,'2023-02-08 10:06:38'),('192.168.146.1','D0D316656E0BA53FD0ED8ABA3D3D3D0B',10007304,'2023-01-17 15:47:04'),('192.168.146.1','D3DD947A64BD9461E1F5766C95E2A3D2',10007304,'2023-02-15 10:49:17'),('192.168.146.1','D3F1EDE349F76E7911338DF05090E8AE',10007304,'2023-01-17 15:44:07'),('192.168.146.1','D6641FB93DC7EDCE1B7F84897E26514C',10007304,'2023-02-22 10:06:36'),('192.168.146.1','E29AC3122EF30B119251F63D4572EE4D',10007304,'2023-02-07 15:00:22'),('192.168.146.1','E3A0F3AB899BF4E384FE954C95516E22',10007304,'2023-01-19 10:04:08'),('192.168.146.1','E7071C0CBA3155C8A14CDBCD8D15DBEE',10007304,'2023-01-19 15:48:16'),('192.168.146.1','ED8202478E5A25D3C99D5EBE5716EFEB',10007304,'2023-01-17 15:44:11'),('192.168.146.1','F0B731A1B7DF426136DCAB9F7CD767F6',10007304,'2023-01-17 15:44:31'),('192.168.146.1','F3D003848A81861ACA4FCCE1B2CED04D',10007304,'2023-01-16 11:22:29'),('192.168.146.1','F6FFD844763DE01434B7FE613BAA129A',10007304,'2023-02-04 11:02:13'),('192.168.146.1','FC03E4C081D8E4DC52327D66BF90D973',10007304,'2023-02-08 15:56:27'),('192.168.146.1','FCEC70E56273E44640DB6B6074A385BF',10007304,'2023-01-06 10:47:12'),('192.168.146.1','FF3E1FE998A83EC7B0BD45F59765A29C',10007304,'2023-01-28 12:37:53'),('192.168.146.1','FF456D7112CDF2E5F7C77DCE2AC9931C',10007304,'2023-02-21 09:48:49'),('192.168.148.33','2C825B7E6B70941084CAF10B71391C27',10007304,'2023-04-14 11:39:28'),('192.168.16.144','47FC3CBDFD78343C584A1690CE409777',10007312,'2023-02-07 16:01:44'),('192.168.16.144','4A438E506AFA0681F87A004A4B50D856',10007312,'2023-02-07 15:24:32'),('192.168.16.144','5B7BEFCB105E3B589573984B14F84394',10007312,'2023-02-07 16:49:09'),('192.168.161.189','1FAF59CFAA6B27A12D8FE7E7B2413119',10007304,'2022-12-23 21:53:09'),('192.168.161.189','6135B5CDA04161E01B94861B82ECDE35',10007304,'2023-01-05 10:10:40'),('192.168.161.189','816E2512692D67E056255287CE9ACEC5',10007304,'2022-12-23 21:53:03'),('192.168.161.189','D37282180CB519CB463EE5A2998FABAE',10007304,'2022-12-23 21:54:03'),('192.168.167.144','1F033E0E1A8B23B543221BE56EACACB7',10007312,'2023-02-11 13:23:12'),('192.168.167.144','9F5F0881B453A8E6683CFE80C3A03FEC',10007312,'2023-02-11 11:51:21'),('192.168.167.189','000B60B77DFF91675CF09EF64EF4FF6C',10007304,'2023-01-11 10:05:46'),('192.168.167.189','010E486C0C2629254222D44CB33D9805',10007304,'2022-12-20 10:26:31'),('192.168.167.189','026151EB9757E555DF031CB21C4774F3',10007304,'2022-12-26 16:44:13'),('192.168.167.189','043FB0BDA292DF9F43D4F8D8DBD768A0',10007304,'2023-01-14 15:25:04'),('192.168.167.189','044B94302EFCBCB53AC06BA43EE69BE3',10007304,'2023-02-21 14:26:06'),('192.168.167.189','04A707A5EE36B003D3F4CA15262B1235',10007304,'2023-02-21 18:24:52'),('192.168.167.189','060C51C75709FF5E5F9890A615A3CDFE',10007304,'2022-12-22 17:25:32'),('192.168.167.189','0698BE45332BEEE07F5163E0AB2C1979',10007304,'2023-02-20 18:29:28'),('192.168.167.189','070EFA14F6AEF5472F79938456B17523',10007304,'2023-02-22 11:17:59'),('192.168.167.189','07A156286AEA961655B225BFF49BE09C',10007304,'2023-01-02 18:31:07'),('192.168.167.189','07D0DBAF4E35AE60E2EFBDB036B9C7AB',10007304,'2023-01-24 18:08:25'),('192.168.167.189','086C9D42296CD9859FACD1D0726F672F',10007304,'2022-12-28 13:57:09'),('192.168.167.189','08E276AC17CE4EF10DCCA1148860F733',10007304,'2023-02-02 13:54:29'),('192.168.167.189','09A05A170EC5C6AB7E0BCC4192671F3E',10007304,'2023-01-03 15:34:34'),('192.168.167.189','0B501EE53F68BB7940B9F9C5B7267133',10007304,'2023-02-08 09:40:41'),('192.168.167.189','0B8ADA685A8E75FDB60ED9E1D6905E0E',10007304,'2022-12-20 09:37:49'),('192.168.167.189','0B9FE3EDE8A96952DF9E396BAC3929D7',10007304,'2023-02-04 09:41:56'),('192.168.167.189','0CF128FA31194D602E0D6DDDDFB577F7',10007304,'2023-02-03 17:17:02'),('192.168.167.189','0D1D427F36D0ED4FD5FB4C30778ED351',10007304,'2022-12-24 14:27:55'),('192.168.167.189','0D31DF1C40B96E953F77D9AFB3FA3EEC',10007304,'2022-12-24 15:38:10'),('192.168.167.189','0DD8561AF844F1554FFC0A03036F7D4C',10007304,'2023-02-20 13:32:14'),('192.168.167.189','0E6C9ECB2E6C53230F755AC0389184F1',10007304,'2023-01-24 17:43:56'),('192.168.167.189','0E91AACFB7EEF227827B4F9998CAF53A',10007304,'2023-01-05 16:32:02'),('192.168.167.189','0EB2E8F0B08CA041A27F9CA8DFA5E7B7',10007304,'2023-01-13 13:26:59'),('192.168.167.189','0F301B69576118B43454508411BA2546',10007304,'2022-12-21 13:53:18'),('192.168.167.189','0F5726FA7BC053B4A78137D6B7322F4F',10007304,'2023-02-17 17:05:22'),('192.168.167.189','0F61EC5265EAD393B55CE4E80ADCB9A5',10007304,'2023-02-27 09:33:31'),('192.168.167.189','0FBAF40AAD3A72AA66249C1972D4ED8F',10007304,'2022-12-22 17:19:56'),('192.168.167.189','129C69AF19A8258F8772E18B3B48BA71',10007304,'2023-02-15 15:12:36'),('192.168.167.189','1367AA064D35C9D61593BC616E267F08',10007304,'2022-12-19 17:02:45'),('192.168.167.189','14C3E0364E298F81C47227ECD523F52E',10007304,'2023-02-14 10:03:14'),('192.168.167.189','151BDE67396291F7C3706F552893E20D',10007304,'2023-02-03 09:47:10'),('192.168.167.189','169007EEE2E6D5C8866B8C058DCBA936',10007304,'2023-02-16 12:33:34'),('192.168.167.189','172DC07B671F0A643FCBD8D9B16A9C3B',10007304,'2023-01-30 12:59:51'),('192.168.167.189','1761619DFDE1A1AE4192B691E17EE395',10007304,'2023-01-05 15:09:17'),('192.168.167.189','1942038005CA480E95017B36E3F3F4C0',10007304,'2023-01-04 12:22:10'),('192.168.167.189','1984F49A1378EB5294FD190A8EFC41D5',10007304,'2023-01-28 12:29:31'),('192.168.167.189','1A109CBB8BD677892401A43ED92222D3',10007304,'2023-02-16 11:04:22'),('192.168.167.189','1B292D068AFCDBFAC76FD54654245CA3',10007304,'2023-01-28 11:29:34'),('192.168.167.189','1C1C7B003E9E51A95933D170FDB98504',10007304,'2022-12-22 17:26:15'),('192.168.167.189','1C3BE9813B87D43898BFBD0FD7FE9D0A',10007304,'2023-01-23 12:06:53'),('192.168.167.189','1D69AB94AE4B8CE8055637FBB64F4A5C',10007304,'2023-01-12 15:31:53'),('192.168.167.189','1D8F231FFF021E304CEE91177850FFCE',10007304,'2022-12-19 16:35:21'),('192.168.167.189','1DD80CC1F4C8970528B99A9A25FE5CAA',10007304,'2023-01-05 12:35:02'),('192.168.167.189','1E111FEBE58B831249A51817CFA4BEEA',10007304,'2023-02-17 18:50:07'),('192.168.167.189','1E1E855F3CDF89A81F780ADCE26344FD',10007304,'2022-12-23 10:08:07'),('192.168.167.189','1E5EA6C710BF055D5BF4B3C81A55E4EB',10007304,'2023-03-02 18:21:16'),('192.168.167.189','1FAB9FD7CA8496A71BD0E1ADB1281F6F',10007304,'2022-12-23 18:55:25'),('192.168.167.189','20B8FDF7A517FE44609CC43DEFA90FF9',10007304,'2022-12-28 17:10:35'),('192.168.167.189','20E3030A5D0154E577318E95A580118A',10007304,'2023-02-13 17:32:21'),('192.168.167.189','21006E557F15633B823515811EBA8402',10007304,'2023-03-04 13:35:11'),('192.168.167.189','215A414C73C5C3AE353E4AF034F6AABE',10007304,'2022-12-30 09:34:40'),('192.168.167.189','22AEC65C325C97D8AD1D9B80486E95FC',10007304,'2023-01-05 16:00:44'),('192.168.167.189','246E49CD35AE3BB05515011014728265',10007304,'2022-12-30 11:41:01'),('192.168.167.189','25E27C4658CFD8F56E4D02E9176A708B',10007304,'2023-01-24 10:19:31'),('192.168.167.189','26AAF0DBAB292DD74A208B57A449B0DA',10007304,'2022-12-19 16:37:00'),('192.168.167.189','26B5B1F698F4016B9EE53E6F6AE466E1',10007304,'2023-01-11 13:51:36'),('192.168.167.189','27B66372D76C6FDB57D91D032E9A6AD6',10007304,'2023-01-27 11:24:54'),('192.168.167.189','27C5A587503FE1F446D6DB9DE00B0448',10007304,'2023-01-28 11:21:31'),('192.168.167.189','27DCF600897720376AE20AC252AEE5C5',10007304,'2022-12-19 14:50:41'),('192.168.167.189','28B6B40847D128761175404E821FFFD4',10007304,'2023-01-24 10:09:19'),('192.168.167.189','291695430EAB525AEC1EDD6EFCAA8578',10007304,'2023-01-23 17:17:20'),('192.168.167.189','2928666CD643BFD2EA50FA8D484C7AAB',10007304,'2022-12-22 17:07:43'),('192.168.167.189','2B8A483BC38F30B17958B6627D4EA56F',10007304,'2022-12-20 18:34:14'),('192.168.167.189','2D997C14403E8309671EF77341A4A9CB',10007304,'2023-01-02 11:58:12'),('192.168.167.189','2F7116A6CC8D5152FAA8B1AE0BA52AEE',10007304,'2023-01-31 13:51:27'),('192.168.167.189','2FEAE27B8DE0FE6597681733E5C750BC',10007304,'2022-12-28 14:54:25'),('192.168.167.189','3016097656D776F1EF45B4D760A536DF',10007304,'2023-01-10 15:37:41'),('192.168.167.189','315A3176E5197774016A14AD219D3C4D',10007304,'2023-02-13 14:54:43'),('192.168.167.189','33D4E993D121CB2E2DD3A9ECDC323358',10007304,'2023-01-11 15:38:02'),('192.168.167.189','33EE49CFD0A748D69B49A956B07CE429',10007304,'2022-12-28 09:41:30'),('192.168.167.189','33FEC21567469FAA316C9FE5E6724160',10007304,'2022-12-26 10:42:09'),('192.168.167.189','340A71E1FDBEC657BE8B64F696A990CB',10007304,'2023-01-05 09:41:11'),('192.168.167.189','3498703D2F0838B8F8968CF1A36E88E6',10007304,'2022-12-21 11:13:43'),('192.168.167.189','34CFD269E0FF2EC577F0A281561DF33D',10007304,'2023-02-16 12:35:04'),('192.168.167.189','34FAA8B6351DFFF1D79803D3242AA0AA',10007304,'2023-01-24 17:00:01'),('192.168.167.189','351567E7B2415BDF089D651C023C72FA',10007304,'2023-01-11 15:26:36'),('192.168.167.189','35B77DEF08E0EC45D8E768D2B61F99B5',10007304,'2023-02-02 09:36:18'),('192.168.167.189','368CBC552EFF560DDF0B0428807D8D64',10007304,'2023-01-23 12:50:31'),('192.168.167.189','36B71717D154ADFBC0097216AD2E31B2',10007304,'2022-12-19 09:38:30'),('192.168.167.189','36E3C1F009B287EF9838BF9C037608BF',10007304,'2023-02-03 17:25:30'),('192.168.167.189','380054623E593A4C02BC7EEF532E1FAC',10007304,'2023-01-12 13:50:55'),('192.168.167.189','389386AC049CF8C6C3E7BD3E5B8485A8',10007308,'2023-01-23 17:10:46'),('192.168.167.189','389962D5F08385F07ADA827ECFAD9391',10007304,'2023-02-24 15:37:43'),('192.168.167.189','3A06CF538351953984E629974C605CD1',10007304,'2023-01-03 17:48:26'),('192.168.167.189','3A9B0F190381385722EFA703AFA1D997',10007304,'2023-02-15 09:36:37'),('192.168.167.189','3C41629BEECE8CC51D2360910837F164',10007304,'2023-02-15 18:32:37'),('192.168.167.189','3C916F36BF8800A73160155EBEF25700',10007304,'2023-01-11 09:37:11'),('192.168.167.189','3CBDC6BB34B2B1B426BCEF59C1708DC9',10007304,'2023-01-03 17:43:44'),('192.168.167.189','3CC497B5F5D5162F484470B629D897E0',10007304,'2023-01-28 16:41:14'),('192.168.167.189','3D15F9F869EA234797316D1FACE91D20',10007304,'2023-02-11 11:31:28'),('192.168.167.189','3D1891FB254817627E5EB3FBE9E48EDB',10007304,'2022-12-24 10:47:56'),('192.168.167.189','3D24193117709891DDA231D20AA89AA3',10007304,'2022-12-23 17:12:09'),('192.168.167.189','3EF99034B39DEDCABB050C1B1A4158D4',10007304,'2022-12-24 11:48:51'),('192.168.167.189','3F407CF8062272B3F4222656516A83A1',10007304,'2022-12-24 09:37:28'),('192.168.167.189','40E9D3864F470C325DB7AF3342DC4D7B',10007304,'2023-02-21 17:54:23'),('192.168.167.189','40FBCF0D0415AEAA408FA47523AF58ED',10007304,'2023-01-03 11:30:37'),('192.168.167.189','42725848FC7B607FF14F6331B600D273',10007304,'2023-02-13 10:11:52'),('192.168.167.189','42994F969F56B7EBEE396B237BC4FE14',10007304,'2023-03-04 14:37:47'),('192.168.167.189','46C099A278887709D1EBC9FBF8B3E9EE',10007304,'2023-02-14 11:08:49'),('192.168.167.189','46F2E2AB0326FCBA7D4F84DBDC15392F',10007304,'2022-12-22 15:56:33'),('192.168.167.189','47ACAB31C390F603D12A464D8EFBC2FA',10007304,'2023-02-11 10:34:08'),('192.168.167.189','47FF42AB0F2E06D78368DADF221C1077',10007304,'2023-01-05 12:24:39'),('192.168.167.189','48D9BBB11F80620E87417A3450D3390B',10007304,'2023-02-23 09:37:36'),('192.168.167.189','4B3460FF63B2606583A6D4C6AF703FBA',10007304,'2023-01-05 12:39:12'),('192.168.167.189','4B620EC02412B3950F28FA82753CE764',10007304,'2023-01-05 15:56:49'),('192.168.167.189','4BFD45C22AC7CF87BE0D7579BB3D4C1D',10007304,'2023-01-13 14:32:05'),('192.168.167.189','4C2234CCD2CE1F8BD64824EBAA51B676',10007304,'2023-02-21 20:06:45'),('192.168.167.189','4C626362D1408CB4CFD0A2BEA39ED0DA',10007304,'2023-01-02 16:31:25'),('192.168.167.189','4CEB8C11C34DF5141E405D1BFAE46379',10007304,'2023-01-27 09:56:42'),('192.168.167.189','4E66661262A13BEC2C73E98CFF347303',10007304,'2023-02-13 09:45:27'),('192.168.167.189','4E9F020F6CF66C206DAC7F24F54365F7',10007304,'2023-01-31 10:45:09'),('192.168.167.189','4ED4C1B631B332DACA8C1D2AD7E03861',10007304,'2023-01-02 16:26:43'),('192.168.167.189','4F9E2BEBEEEBB62FF392780F5CF33B16',10007304,'2022-12-28 10:53:21'),('192.168.167.189','50C31BEF8663147FC33F856712674CA6',10007304,'2023-02-24 15:37:45'),('192.168.167.189','5273358009BD3E212C0812093B267793',10007304,'2022-12-22 17:25:29'),('192.168.167.189','54DD13972B8F63C7F90FB318C7817ED3',10007304,'2023-01-30 13:27:43'),('192.168.167.189','55D3D281B36323945C694367955175AC',10007304,'2023-01-14 15:39:49'),('192.168.167.189','55DFEDCB5A4D122A524AE59BE2CC16DC',10007304,'2023-01-23 11:52:41'),('192.168.167.189','5606D41A2996C78F05FBAF0BAD2348C4',10007304,'2023-01-24 16:59:44'),('192.168.167.189','565890D57314E23D381E2210DF664E74',10007304,'2023-01-03 15:27:02'),('192.168.167.189','56E5F6D7EF22EA9BD2FD3D471FD476E8',10007304,'2022-12-24 10:45:56'),('192.168.167.189','57F92CD11D97D8B6869147A69E40299E',10007304,'2023-01-04 12:31:14'),('192.168.167.189','58047193DF8ABEC88CB0B244E4322051',10007304,'2023-01-11 15:41:12'),('192.168.167.189','59033685A4E19648644CDB3DE6991C36',10007304,'2023-01-05 12:58:38'),('192.168.167.189','5970384018FC63064A19F3A2F3A95EA4',10007304,'2022-12-24 15:06:18'),('192.168.167.189','5A02A7C7B6F7DC596DA7BBEA418F7DC9',10007304,'2022-12-19 16:07:12'),('192.168.167.189','5A9E00E908021E0D65DBD96D792C33D1',10007304,'2022-12-24 12:18:31'),('192.168.167.189','5AA738E61F9419A5A2562C9B6BF996AC',10007304,'2023-02-17 11:57:20'),('192.168.167.189','5DB10509FDAFA074BC267F283AD04E09',10007304,'2023-01-11 15:38:00'),('192.168.167.189','5DD332F7CC8A073BF0EF918D3F4E7EDD',10007304,'2023-02-14 18:00:33'),('192.168.167.189','60272854F154FB833F53293DC5E2DDA9',10007304,'2023-02-22 09:55:31'),('192.168.167.189','60343EB2EBCAD9CCA22936DB2AF12417',10007304,'2022-12-21 09:39:11'),('192.168.167.189','60F08BCACBB93FAF3D35AA49FAFD375C',10007304,'2022-12-26 01:11:45'),('192.168.167.189','61313356A9BB98DCE968B9A89D8A5BA0',10007312,'2023-01-23 18:29:00'),('192.168.167.189','618807A13352AB0B4E150D23100DE11C',10007304,'2022-12-24 15:15:21'),('192.168.167.189','62A9D0E7859327394E0592798E99923D',10007304,'2022-12-24 12:16:29'),('192.168.167.189','63442317A278317529D48625801A55CD',10007304,'2023-02-16 17:36:42'),('192.168.167.189','636D5E0F9E8F88977FB9B83CCC075A7C',10007304,'2023-01-05 15:56:47'),('192.168.167.189','63F563B07FE79E2417AB7AC84BB51D2B',10007304,'2023-01-13 16:18:02'),('192.168.167.189','6471E618614F22A37007CD18EC4E3507',10007304,'2023-02-21 12:21:13'),('192.168.167.189','64CBC0254BF38F20292C94D97A59D04B',10007304,'2022-12-26 16:14:25'),('192.168.167.189','64EBD6E1FC4CE5568A6B43462CB1EA47',10007304,'2023-01-31 10:55:32'),('192.168.167.189','650874930DADAB7CE4C4583A5E3BB1C9',10007304,'2023-01-23 12:06:59'),('192.168.167.189','66228753363A07776E2064AE74A9CF46',10007304,'2023-01-03 14:07:47'),('192.168.167.189','66D15A821564C03D3DA48C1CAC2FE10D',10007304,'2023-01-03 11:30:34'),('192.168.167.189','66E61782A677EC80598C3E661A7B33FE',10007304,'2023-01-28 12:29:40'),('192.168.167.189','6857EB19867A1DFE1809B9FF359EF36B',10007304,'2022-12-24 15:16:55'),('192.168.167.189','692B0BB7B984486E066EDAF5BD0F9F15',10007304,'2023-01-03 17:09:58'),('192.168.167.189','69F6BDB890C30B2478F120A590F84EE3',10007304,'2023-02-20 09:23:00'),('192.168.167.189','6B5A5347E1C44E64F19C12568995B539',10007304,'2022-12-19 18:01:34'),('192.168.167.189','6BD074973FBD857A1CA90B4A6BFEDA9F',10007304,'2023-01-31 09:41:28'),('192.168.167.189','6BDF89CE5CC1636A0B5109675AC02646',10007304,'2023-01-23 11:57:04'),('192.168.167.189','6C93B8E76DF1250A0CC4FD1C02CB7F31',10007304,'2022-12-30 10:11:33'),('192.168.167.189','6D28E2E8D77719A64A4F0D0717A52B99',10007304,'2022-12-27 09:36:10'),('192.168.167.189','6E95908C97E4072ADDD5D20C62E2DA20',10007304,'2023-02-21 10:47:08'),('192.168.167.189','6F8A856931D6CFD34A88EA732D8583F6',10007304,'2023-01-03 13:53:22'),('192.168.167.189','6FAF12E8F3B51E2289BE29955985404F',10007304,'2023-02-28 16:53:43'),('192.168.167.189','6FF77E41FC41F768A89FA337E1F36845',10007304,'2023-01-10 17:12:49'),('192.168.167.189','7059F83CB9ECBD01F1FACF827AA4990D',10007304,'2023-02-11 10:42:23'),('192.168.167.189','70CBFA6663C7910B3FC8236F577D7B43',10007304,'2022-12-30 15:51:26'),('192.168.167.189','71A96A2BD219D272DCB080817726F240',10007304,'2022-12-31 11:44:28'),('192.168.167.189','72507B8A56BC7D09D6A935CEDAA7F926',10007304,'2023-01-02 16:31:21'),('192.168.167.189','74B05A3D60A2B867F9103FC92F3AFECF',10007304,'2023-01-13 13:22:52'),('192.168.167.189','7556FA3A42A0B275F831D5FD95CD03E3',10007304,'2023-02-22 11:12:34'),('192.168.167.189','757DA1F4F818CFA84EDE9EC2E51A61F2',10007304,'2023-01-11 15:00:00'),('192.168.167.189','75B4875A977B56285A302B18E396D87C',10007304,'2023-01-23 12:07:06'),('192.168.167.189','76385CD7B012325141D667C327F1BFB9',10007304,'2023-01-11 15:57:09'),('192.168.167.189','768E6E8658314506B9AF4156CD65B560',10007304,'2023-01-12 13:19:31'),('192.168.167.189','773BBF30B37EF825D88C62E7F56CBE89',10007304,'2023-01-05 15:47:24'),('192.168.167.189','77F723EA89C1DCF1B3E5D144502E308A',10007304,'2023-01-11 10:04:48'),('192.168.167.189','79686951E6B9A26A76829C362FB1E349',10007304,'2023-03-01 18:15:15'),('192.168.167.189','79C12B384556537492EB41A1998C60A7',10007304,'2022-12-31 13:29:00'),('192.168.167.189','7AB3D4017DFB8FE1E152AAA8B1A8FAE2',10007304,'2023-03-01 09:40:17'),('192.168.167.189','7B4404B14A44E5FA796955D2AC667AE6',10007304,'2023-01-13 14:23:56'),('192.168.167.189','7BA24E1CB07A11162CA39DA26BAFCFF8',10007304,'2023-01-24 16:24:22'),('192.168.167.189','7BA773DC1445469E98E525FE85ECC8AE',10007304,'2023-02-01 14:46:28'),('192.168.167.189','7D1E89F7FCD784E8694BDDF04ACB7C48',10007304,'2023-01-27 18:30:33'),('192.168.167.189','7D636352DFF42E49249D1BEB5A94A79D',10007304,'2023-01-02 11:51:27'),('192.168.167.189','7DB46EF4E17D90226D5443F595407ADA',10007304,'2023-02-01 09:31:20'),('192.168.167.189','7E58C1958F5E4E857A36A4CFCFD6ED39',10007304,'2022-12-28 18:06:01'),('192.168.167.189','7EA54274B44B9A93551F1E77E4F3EBDE',10007304,'2023-02-15 13:12:50'),('192.168.167.189','7FAF3B7FBA137DC8BA5F0BF9EBBDEF05',10007312,'2023-01-23 17:45:51'),('192.168.167.189','7FDDB9CB9468F2A60061E44700C3034B',10007304,'2023-01-27 18:28:30'),('192.168.167.189','7FE294876C44BDFBB656017F888795FC',10007304,'2023-01-31 13:51:31'),('192.168.167.189','8068C3095B3C869E39929267DEBA62D5',10007304,'2022-12-31 09:38:23'),('192.168.167.189','806B55965745974F03B8902B35B2D083',10007304,'2023-03-01 10:50:23'),('192.168.167.189','810185795A5FBB216ED6F42D700E7B85',10007304,'2023-02-23 17:39:07'),('192.168.167.189','8104CAE5209D6F5F393269F2E54D19BA',10007304,'2023-01-23 14:34:19'),('192.168.167.189','835CBD14F31F46374FA214E895D0E872',10007304,'2023-01-24 13:10:08'),('192.168.167.189','8403EED95DD293BB02DAD5F947BF05A3',10007304,'2023-02-25 17:14:02'),('192.168.167.189','84787BD63F7B07AC643215C91FC42FA0',10007304,'2023-01-05 12:09:31'),('192.168.167.189','847D513772021579A0DD72A2E354E7FD',10007304,'2023-01-03 15:42:21'),('192.168.167.189','8483E158EFE49E5E80949BEDB885101D',10007304,'2023-03-01 11:58:55'),('192.168.167.189','864E510BCF1EF190B39DAFE944382249',10007304,'2023-01-05 15:40:50'),('192.168.167.189','8656ED4A9EA8F428F6D3CFD6F44FC7DD',10007304,'2023-01-03 12:29:45'),('192.168.167.189','886510DAFDD9837020C3B89648FDD342',10007304,'2023-02-16 10:14:58'),('192.168.167.189','89D8643D21A3BCBB7B353B89B5CDFBE6',10007304,'2023-01-30 12:59:01'),('192.168.167.189','89F2898FD3B4A5FF0980850DA56493A3',10007304,'2023-02-03 12:16:20'),('192.168.167.189','8B74F04ED587432A695A3BEC1512D43E',10007304,'2022-12-26 01:10:41'),('192.168.167.189','8B9AD9090D88A522CF499806913B538C',10007304,'2023-02-20 09:23:00'),('192.168.167.189','8C119DFC063B4B7CFD1D397CD21976D8',10007304,'2022-12-24 10:41:49'),('192.168.167.189','8CA1AD73CE4593CFE04715E0AC83B407',10007304,'2023-01-27 13:28:42'),('192.168.167.189','8CFEB9260A40E148FF9E116051A62F0A',10007304,'2023-01-24 17:00:01'),('192.168.167.189','8D82650F6EAB4B091289AA8F76EA314A',10007304,'2023-01-02 09:33:49'),('192.168.167.189','8DF5FDEA041486FD3DE65C51C5D0B9F9',10007316,'2023-01-24 11:49:45'),('192.168.167.189','8E3E994BD26D1EA5C93FC210CBB286D4',10007304,'2023-02-28 17:59:50'),('192.168.167.189','8ECA0EA9F0DD7BBDD777901FD045DC54',10007304,'2022-12-24 10:48:05'),('192.168.167.189','8F66DF1D0FB0004ACA486D59F7735DBF',10007304,'2023-01-23 13:30:38'),('192.168.167.189','906E66ECAB9786E3AA1B05E735EF7B82',10007304,'2022-12-24 12:54:34'),('192.168.167.189','90B78A4EA1F69C027DCEBC2B8B9CE138',10007304,'2023-02-25 12:02:44'),('192.168.167.189','90DCB7773F0FE93A7AD65727310A0867',10007304,'2023-01-31 16:21:34'),('192.168.167.189','91007E2FBDCB754D0C00058F76AB30E1',10007304,'2023-01-27 09:57:13'),('192.168.167.189','91FAE45FA69D32EB26AE8668051CA7F7',10007304,'2022-12-23 10:09:41'),('192.168.167.189','923DFFC34ECC21542FE1896263EF2E31',10007304,'2023-03-01 12:16:16'),('192.168.167.189','926AC2F92290B3BF546EBEAAB69D5099',10007304,'2023-02-04 16:34:07'),('192.168.167.189','94C260CD1C34513207D1DA620C48DB94',10007304,'2022-12-27 13:19:40'),('192.168.167.189','9552EF1C013B64D0C3E37F7D62DCA2EE',10007304,'2022-12-24 11:50:47'),('192.168.167.189','9748B450F79EC10172007DA2BD9000A3',10007304,'2023-01-10 10:49:32'),('192.168.167.189','975FD464669381E4B1121FF61AB8B818',10007304,'2023-01-27 13:50:31'),('192.168.167.189','976B24D596A10011CAC8F044C9717019',10007304,'2023-02-01 10:09:46'),('192.168.167.189','979355E6F9BDE3918F3B2CC0130DB400',10007304,'2023-01-05 16:07:58'),('192.168.167.189','979A0E65409F250F52E67AF5FB6ECA86',10007304,'2023-01-05 12:24:37'),('192.168.167.189','97DFBAED2018C575AD19FEA505C095C4',10007304,'2023-01-24 12:20:37'),('192.168.167.189','9820A3F1E7A1201AAB4665C90BC19A83',10007304,'2023-02-22 11:09:40'),('192.168.167.189','992C2B309A8861C24E585B12485F1041',10007304,'2023-01-27 18:34:44'),('192.168.167.189','99837C5D27E9DCF014DD59992DE7EDD2',10007304,'2022-12-20 11:49:31'),('192.168.167.189','99AE348B6C1FAC7767A94C822C7AD900',10007304,'2023-01-04 09:39:38'),('192.168.167.189','9A5E6EF6B47FA2D2D9BD1F6B3E15C920',10007304,'2022-12-20 18:57:21'),('192.168.167.189','9A96332F085015D846E73B5C50C7F5DB',10007304,'2023-01-23 11:54:17'),('192.168.167.189','9AC712C73804C58D82CABB728B1903EC',10007304,'2023-01-24 15:30:10'),('192.168.167.189','9AE572D9C3BAE3A3B47E69B04DDAE7CA',10007304,'2023-01-30 09:45:11'),('192.168.167.189','9B03489DFE9A2FCEC4C5A0445192AEAA',10007304,'2022-12-24 14:35:38'),('192.168.167.189','9B3F5E5C589C6B362179DC8FF1BFF95D',10007304,'2023-01-10 09:49:57'),('192.168.167.189','9BD1C0E7C19E00AB6B0C993E81CBD9C7',10007304,'2023-02-16 11:14:13'),('192.168.167.189','9D0D7DB5FB73BB50E89D994FF6835E7C',10007304,'2023-02-11 10:12:51'),('192.168.167.189','9E7B4CE03DD372F61330A84E9683C24B',10007311,'2023-01-23 17:43:07'),('192.168.167.189','9F434269BA57F4CE874CEEC943B2ED10',10007304,'2023-01-05 12:37:18'),('192.168.167.189','9F9BA8B8187B5D3383D6D6FA927982B8',10007304,'2023-02-06 15:59:18'),('192.168.167.189','A0A4DEAA8E48466CB94F965BF273BC98',10007304,'2023-01-24 18:21:38'),('192.168.167.189','A20962DEB8A7881D3A80FB1E2981E098',10007304,'2022-12-24 15:39:00'),('192.168.167.189','A221034BB8EDA22EC8405E0C3FB00D3D',10007304,'2023-01-24 17:21:48'),('192.168.167.189','A282312578D70F75EA4948AEEAC0A44B',10007304,'2023-01-11 12:06:18'),('192.168.167.189','A2CAFD59C5815F0FC5C4A62E617A0BA8',10007304,'2023-02-23 09:48:55'),('192.168.167.189','A520D27D5257AA5F63DB6C33F73FD306',10007304,'2023-01-13 13:32:35'),('192.168.167.189','A5326308271531305BA9A9E927949412',10007304,'2023-02-17 09:44:35'),('192.168.167.189','A55050B4908D1FE10A9A376BC000A895',10007304,'2023-01-05 12:32:46'),('192.168.167.189','A5D1383B5199FECA4669D733D6948484',10007304,'2022-12-24 15:36:34'),('192.168.167.189','A6ED302480CF4DA7CF43F1AE13B649CB',10007304,'2022-12-30 13:40:47'),('192.168.167.189','A6FA1967DCC500B6D265EFE56AA8A9EB',10007304,'2023-01-11 17:37:30'),('192.168.167.189','A7A13C23A40BD66F6602BACE93680AAE',10007304,'2023-01-05 09:51:53'),('192.168.167.189','A8949C9544DA8D8105107480937A8461',10007304,'2022-12-26 01:14:11'),('192.168.167.189','A8ED7C1DF4D3322A543478B0471B7A45',10007304,'2022-12-21 13:53:18'),('192.168.167.189','A9B96B19B74D7D9E4158959ECDA35131',10007304,'2023-01-23 14:53:22'),('192.168.167.189','A9DDEC35C61B72377C984F9CD43A6BF6',10007304,'2022-12-23 11:50:44'),('192.168.167.189','AA7F836C98E8EC57D4D453159A0C9F4C',10007304,'2023-02-24 09:34:05'),('192.168.167.189','AB32038CDC95EEDEE4F05E386D1ED096',10007304,'2023-02-27 11:48:45'),('192.168.167.189','AD555EF424EDB0BF7F3E4B6575615EC6',10007304,'2023-01-02 11:03:54'),('192.168.167.189','AD8A732AE30B2845FC6673E3D3B1C190',10007304,'2023-01-10 09:40:03'),('192.168.167.189','ADEC3969AA2E34EF78207B465ED20DD2',10007304,'2023-02-13 15:01:05'),('192.168.167.189','AE1542F71F4292FAE08F5BC16125DADB',10007304,'2023-01-05 16:11:48'),('192.168.167.189','AEC3FE1B7981DFD9AAE9632EE2194D32',10007304,'2022-12-26 02:29:59'),('192.168.167.189','AF0B9866E5C36F81CDBC134E102B69B3',10007304,'2023-02-16 11:12:59'),('192.168.167.189','AFFE18E48527D358EF67536277DBD4A7',10007304,'2023-01-05 16:32:33'),('192.168.167.189','B07FAA08B489F1AA660355590429D4A4',10007304,'2023-01-24 14:17:58'),('192.168.167.189','B082284AD81284109E4B1C798BB752ED',10007304,'2022-12-23 10:07:13'),('192.168.167.189','B43C8D0C0ED442C3932BCE71F86A9FC4',10007304,'2023-01-05 12:24:39'),('192.168.167.189','B4B9F6D577437D623F36D56AF1ADE6B3',10007304,'2023-02-21 17:42:05'),('192.168.167.189','B4DE0C1B3E83032DB82F7254E461F90A',10007304,'2023-01-10 18:03:57'),('192.168.167.189','B4F760EF18D961EFEDB1093399DA0828',10007304,'2022-12-20 10:27:59'),('192.168.167.189','B64A4B338227D46261870352AFF2D270',10007304,'2022-12-27 17:39:34'),('192.168.167.189','B662F4670EA70C0CB3D745965A5350D1',10007304,'2023-02-24 16:10:18'),('192.168.167.189','B6A6716D1438F0627483BF6445A231F2',10007304,'2022-12-24 15:48:38'),('192.168.167.189','B762580A89C679713E090C257421B409',10007304,'2022-12-20 13:02:51'),('192.168.167.189','B78DBF25BCA3A8C02227A5932F95F0AE',10007304,'2023-02-23 12:29:27'),('192.168.167.189','B86F2327535BE5FB6CA7AB3249C0A5C2',10007304,'2023-01-23 15:43:24'),('192.168.167.189','B8B4D8376B9A807D464A456985153255',10007304,'2023-01-04 12:38:50'),('192.168.167.189','B9B3D44AA83AC2B92665E6297C3975D3',10007304,'2022-12-27 13:18:25'),('192.168.167.189','BAAAE29842F7EDAEDDB6D81DC5709255',10007304,'2023-01-05 09:37:30'),('192.168.167.189','BD470317B4B72F47D7E6262BA8E1F785',10007304,'2023-02-14 11:02:28'),('192.168.167.189','BD4C7ABA2F5EF3FFB9DA6A939831C79B',10007304,'2023-02-16 10:38:18'),('192.168.167.189','BDB99535CBB4477FF0EED5D6F63E215F',10007304,'2022-12-20 15:07:20'),('192.168.167.189','BDC2ABDFD2523537321A13FE3A6C532A',10007304,'2023-02-22 11:14:25'),('192.168.167.189','BE8EBE496E53E9A4BC3145BD204FBD96',10007304,'2023-01-31 10:45:07'),('192.168.167.189','C0C019914F68EB7BB283C6A55C4D76E0',10007304,'2023-02-06 12:19:42'),('192.168.167.189','C0C028640532BC533851CD7815BDF89C',10007308,'2023-01-23 17:10:47'),('192.168.167.189','C19A2518F6323C61FC6F84A63720D5ED',10007304,'2023-01-11 11:47:20'),('192.168.167.189','C1DC935342E3CDC8E272B4B6F3311B70',10007304,'2023-03-01 17:19:24'),('192.168.167.189','C1F275A371AA676AC13D3CBE9D32329B',10007304,'2022-12-20 18:35:26'),('192.168.167.189','C3B907B240921A420B863460CBA730C4',10007304,'2023-02-21 10:38:32'),('192.168.167.189','C4CB9653BF2A2DAD8A201545D8A21E99',10007304,'2023-01-05 12:12:30'),('192.168.167.189','C517AA6C1A35AB99898171576444AFF1',10007304,'2022-12-24 14:33:45'),('192.168.167.189','C538FC4C69DED20D6AB6CE47208AC727',10007304,'2023-01-28 11:44:30'),('192.168.167.189','C547F17EF44CDA65B83A1DC88958763D',10007304,'2022-12-19 16:35:21'),('192.168.167.189','C6AC20CA09D1F54E41C4B6322374DBE8',10007304,'2022-12-30 10:12:35'),('192.168.167.189','C6C6613D936894976ADEDE4B985158F0',10007304,'2023-02-21 12:16:20'),('192.168.167.189','C8D090CFDF465C9C4161FA0F601B7E7A',10007304,'2023-02-21 09:59:09'),('192.168.167.189','CC5228FAA5EA7AAC19702CB4C87B0417',10007304,'2023-02-17 11:24:07'),('192.168.167.189','CC6622D28C5411C5DFE4C68765E6413F',10007304,'2023-02-21 17:54:21'),('192.168.167.189','CCB132F8982CFD3F733D139DF3CB2B33',10007304,'2023-01-24 17:30:17'),('192.168.167.189','CD8A0D2A8B17C3751FBD49F3AED7A2D1',10007304,'2023-01-05 12:49:57'),('192.168.167.189','CD95D6F2C787F526A79C6F045DD71A0E',10007304,'2023-02-28 09:36:02'),('192.168.167.189','CDFA5330A215B53AE5CC179EC1DC974A',10007304,'2023-01-12 11:14:31'),('192.168.167.189','CE568F69CDDA5B8B568AC896EC933D2E',10007304,'2023-01-03 09:47:43'),('192.168.167.189','CF548E39CFD61CCBD2304EA7B1C36632',10007304,'2023-01-24 17:27:18'),('192.168.167.189','CF97B42FB92CEFCC709F32072FC1E24B',10007304,'2023-01-05 10:26:15'),('192.168.167.189','CFEA534CDAF3EAD83659C8C4EC8E206B',10007304,'2022-12-27 14:40:19'),('192.168.167.189','D0025BCC4A6D8ED2959FC981B3682B6B',10007304,'2023-02-21 13:34:48'),('192.168.167.189','D07C13C5AED43756D1ACC28825E065E7',10007304,'2023-01-23 12:06:52'),('192.168.167.189','D12F48853CB05C29FD5B954ADF03AC9B',10007304,'2022-12-26 09:41:01'),('192.168.167.189','D1592AE54D7972CB4499119E2D9C4367',10007304,'2022-12-22 10:32:10'),('192.168.167.189','D1A2C699CC01539B5F14836E5FFA03BE',10007304,'2023-01-24 16:59:53'),('192.168.167.189','D1C4804B698E3D6FEBFDB5B3818249A6',10007304,'2023-01-24 17:42:17'),('192.168.167.189','D1FE6086FE4445D934301DE2FC8E3C55',10007304,'2022-12-24 15:15:13'),('192.168.167.189','D482729AC3151D83917DC0F87F777BDA',10007304,'2023-02-06 09:40:01'),('192.168.167.189','D4C7C07CFD39595F7C23CA46E9BFB0C7',10007304,'2023-01-23 17:17:17'),('192.168.167.189','D4E0C053D20A415F12E470CEAF123A84',10007304,'2023-02-22 09:47:50'),('192.168.167.189','D5D8D5EEB33FC3064756F943DD95D7D3',10007304,'2023-03-02 18:02:24'),('192.168.167.189','D65F556DAC4272525CCF65259353092C',10007304,'2023-01-05 15:11:28'),('192.168.167.189','D678C2EDA6722CF2A659D2E94361550B',10007304,'2023-01-14 12:08:25'),('192.168.167.189','D681A72CFCBD12D173592D5FEF93CCE9',10007304,'2023-03-01 15:05:39'),('192.168.167.189','D777EA3F44EBF66A915075A673AB8A67',10007304,'2023-01-24 12:02:07'),('192.168.167.189','D78976F1AC81384441384C2D8F6296F9',10007304,'2023-02-16 17:41:22'),('192.168.167.189','D7FFC91E572A82116007CE9DB419B21C',10007304,'2023-01-27 14:23:34'),('192.168.167.189','D8ACA9DFD0D1CFD2A458C359195BA1FB',10007304,'2023-01-03 14:30:41'),('192.168.167.189','DA980069202A1D238FAABA5D4DCF1A19',10007304,'2023-03-02 18:21:41'),('192.168.167.189','DB2EDF5E29EA2DD3372A8B7B40044CDF',10007304,'2023-02-02 09:51:49'),('192.168.167.189','DBECAD15E72D358CE8C8A71641AAD8AF',10007304,'2023-01-24 17:43:54'),('192.168.167.189','DCFBD430E75A79235708CDF0B7DC3DFC',10007304,'2023-01-12 09:43:49'),('192.168.167.189','DDA6FAEF0A46136CBE68B312328B5FF3',10007304,'2023-02-24 15:01:09'),('192.168.167.189','DE5CD149BFE52C4C9F24050429D49B6C',10007304,'2023-02-21 18:53:20'),('192.168.167.189','DF2E7606AECBE043FE0319958F77FEF7',10007304,'2023-03-02 09:25:17'),('192.168.167.189','DF8E2C37791B72B5EA32E2C7991EA090',10007304,'2023-02-06 18:46:52'),('192.168.167.189','E09225662900B95C26EBF1AD56DC55DC',10007304,'2023-01-11 12:06:28'),('192.168.167.189','E2660CC425A96F088324E245368AB367',10007304,'2023-03-01 18:44:31'),('192.168.167.189','E348FF9CB68F8A52DA1FD7B80E5A64DF',10007304,'2022-12-30 16:02:46'),('192.168.167.189','E4959646223454EC3909E88D437D089B',10007304,'2022-12-24 11:48:49'),('192.168.167.189','E4F76A0DB129AE6D9AE2B9111A9B5677',10007304,'2022-12-22 17:25:14'),('192.168.167.189','E501102CDC2E8237DE08F30898CED2E4',10007304,'2023-01-10 10:25:40'),('192.168.167.189','E58486DDFC22F8DD06E9BF6586636203',10007304,'2023-02-21 18:24:53'),('192.168.167.189','E5BC61863681B5F1FFCF4EC95EC7B220',10007304,'2023-01-12 13:41:02'),('192.168.167.189','E6540F8DAB72824165AAE39E28598518',10007304,'2023-02-22 09:30:06'),('192.168.167.189','E788DED5C5FB8591A43203D364BE3C36',10007304,'2023-01-24 16:59:46'),('192.168.167.189','E83AAA46E2BB32A42791DF6AEC5CCDA3',10007304,'2023-02-21 16:53:04'),('192.168.167.189','E969A3C6C64E4DE7CF98113690D0F07F',10007304,'2023-02-06 12:21:23'),('192.168.167.189','E986DCD5342A62EC897D5280BFB12D10',10007304,'2023-01-24 17:00:00'),('192.168.167.189','EA2548D89564970E038992B7A616F986',10007304,'2023-02-15 14:58:10'),('192.168.167.189','EB40725D6E36C03F00373918B0676285',10007304,'2022-12-24 09:36:33'),('192.168.167.189','EB64DFC152FE2EC71224266852CB92B1',10007304,'2023-02-21 17:03:33'),('192.168.167.189','EBABAFDEA380F5AB60E5BCDF49FA51DE',10007304,'2023-01-27 13:00:44'),('192.168.167.189','EC0275847BF935616105472F48F0AC15',10007304,'2023-02-22 18:00:10'),('192.168.167.189','EC1DEFF379810E0387DF483BA4070AA1',10007304,'2023-02-16 11:13:06'),('192.168.167.189','EC2C0B557A0641D2354BBBB29392513A',10007304,'2023-02-14 10:01:46'),('192.168.167.189','EEE6FC4631CA096D595D41B151721542',10007304,'2022-12-24 14:40:05'),('192.168.167.189','F2CBB4402CEA631F403C9F59C39C2419',10007304,'2023-01-04 11:39:08'),('192.168.167.189','F2E8D9954E72C85CB7A0D57E873A6D34',10007304,'2022-12-30 09:34:40'),('192.168.167.189','F33C259DEE4097989C02C3F7A1939967',10007304,'2023-02-28 09:36:02'),('192.168.167.189','F3A36167D12607D33E09F3E1B92854DE',10007304,'2022-12-22 17:24:52'),('192.168.167.189','F3B4691A858D28FF922C5836FB8AE88B',10007304,'2023-01-03 14:07:45'),('192.168.167.189','F47D505465E1BEF672FF619B70724338',10007304,'2023-02-06 12:23:34'),('192.168.167.189','F532F4709BBC555DD1F7E256BCC6829A',10007304,'2022-12-23 09:35:05'),('192.168.167.189','F5AC9562A1823BAA9BB44C13AE5B91EA',10007304,'2023-01-30 09:45:11'),('192.168.167.189','F66173FC48D612131FE1F0A097BDA1E5',10007304,'2022-12-20 18:44:51'),('192.168.167.189','F67EEFC16F0B8F4B56A9CD3461F0EF2E',10007304,'2023-03-02 15:42:31'),('192.168.167.189','F6B99C2C19F41C927334CC7EA67FE0F3',10007304,'2023-02-04 17:16:51'),('192.168.167.189','F87DAC7276BE25923BE6CA0351A92425',10007304,'2023-01-24 09:34:15'),('192.168.167.189','F8B35180720FB9923997540B27535082',10007304,'2023-01-03 17:07:08'),('192.168.167.189','FA67227BD2949261513476D851CBFE0C',10007304,'2023-01-04 10:52:32'),('192.168.167.189','FACFB39BA64E348AA66B54A7F80ED9FF',10007304,'2022-12-29 19:45:04'),('192.168.167.189','FAED2445C58DB594A4784658B2837FC9',10007304,'2023-02-24 15:37:44'),('192.168.167.189','FB3014F77FCAF90F038670EAB5D37B0B',10007304,'2022-12-31 12:27:04'),('192.168.167.189','FB63BC9FA02C16906C5345DC43621C5E',10007304,'2023-01-02 11:09:49'),('192.168.167.189','FB73E63C3372CA13ECE56475F481F131',10007304,'2023-01-24 12:20:28'),('192.168.167.189','FC496913A010931ED3B06E63B7574F2E',10007304,'2023-02-28 18:00:21'),('192.168.167.189','FC5ED3963DDDE39D064D7B7F4FA4E30E',10007304,'2023-02-23 18:45:24'),('192.168.167.189','FC8BFD05E5E503CE28A597B6484FD829',10007304,'2023-01-24 17:42:15'),('192.168.167.189','FCA1C7CDD551B07589A13D4E2D83453A',10007304,'2023-02-14 10:03:13'),('192.168.167.189','FCF5694D7A2BF2CB1A067E02041D78DD',10007304,'2023-01-05 16:03:00'),('192.168.167.189','FCF9CFBEDC9CDF586CF25CE693425F83',10007304,'2023-01-04 17:59:34'),('192.168.167.189','FD084C5182D169E76DDD0DEB0AC648C8',10007304,'2023-01-12 14:54:41'),('192.168.167.189','FEFE9B640DDD26A0B77E2EA8B91F026C',10007304,'2023-02-20 09:31:30'),('192.168.167.189','FFDBA69FDE184695AEC3A9E10970E497',10007304,'2022-12-24 10:45:46'),('192.168.178.144','78C3D94F9E6DEFA037094BD9F53E30EE',10007312,'2023-03-01 10:29:26'),('192.168.178.144','9E7DFCF05CFA492DA0E83274EC38933C',10007312,'2023-03-01 12:24:26'),('192.168.180.144','C12A9824A5AC439ED5F52F45A39D50AB',10007312,'2023-03-02 13:08:11'),('192.168.194.33','4F6375AC8E128984F82ED1424654D655',10007304,'2023-01-05 17:02:16'),('192.168.194.33','658DA2E3D2986370A6FE5E790196F9EF',10007304,'2023-01-02 11:53:27'),('192.168.194.33','827B98907D7B466BFE039AB88E515799',10007304,'2023-01-03 12:31:04'),('192.168.194.33','F0F13E048FA8B049812D68EB5117FD67',10007304,'2023-01-10 17:05:09'),('192.168.202.144','2D19E40D9E68007ADFE7A3C2975D5872',10007312,'2023-02-25 12:47:34'),('192.168.221.144','49E44BF22D33551F0DEFF1B89C50961E',10007312,'2023-03-01 14:00:54'),('192.168.221.144','CBC5A9F3A723DD41405A2EA2646F53D3',10007312,'2023-03-01 14:02:56'),('192.168.223.144','344186ED122E4289EE68A8F2B2F9CE25',10007312,'2023-02-10 17:51:15'),('192.168.223.144','8F8D9890DFFF67A57CA29DD83520C2B9',10007312,'2023-02-10 16:26:04'),('192.168.223.144','9469BD47B1463BF20BE5C0A2D673A8F2',10007312,'2023-02-10 16:02:02'),('192.168.223.144','BDC5C89E74A171C070E19A42442EAB89',10007312,'2023-02-10 15:23:27'),('192.168.228.118','1A9BD01D73C420ED568512B16BC085DA',10007304,'2023-04-22 09:46:41'),('192.168.228.118','3EFE66E6518F0FEB41E749BE98482A35',10007304,'2023-04-21 12:23:23'),('192.168.228.118','4A843CBAA7E6242AA021202E3B87071C',10007304,'2023-04-21 11:06:41'),('192.168.228.118','D9423B615BAC3DBA396FB3CEFD366EE9',10007304,'2023-04-21 12:23:23'),('192.168.228.118','E64FB118A39223B5EFEFE35D9DE7BD21',10007304,'2023-04-21 20:29:59'),('192.168.230.144','7E39C3D17C02D014684C9ACBC3655811',10007312,'2023-02-10 12:08:39'),('192.168.236.33','D4601A3C4879944B9640BE60185928EC',10007304,'2022-12-14 18:28:06'),('192.168.241.144','0E4E862A15FC5FE778AEB48B87D3E7AA',10007312,'2023-02-06 17:33:25'),('192.168.243.144','1B7BF1C9D29C7AEC97949D8207DE9813',10007312,'2023-02-06 10:22:21'),('192.168.243.144','50CBAAE0EA02758C512F80667471C423',10007312,'2023-02-06 12:24:00'),('192.168.243.144','BF74C9D6271E81157A9C85EC3F321FDF',10007312,'2023-02-06 13:10:33'),('192.168.244.189','28B94FAFAA29F95B4F5D0EA49299A0AD',10007304,'2023-03-06 10:07:18'),('192.168.244.189','468533E27BAA60DB6D8E96DCD525D59E',10007304,'2023-03-06 15:42:06'),('192.168.244.189','B033491190F0A949279C7E2A7AE18110',10007304,'2023-03-06 17:39:54'),('192.168.244.189','E3D161767C0E9089027E57BECA086616',10007304,'2023-03-06 09:53:33'),('192.168.253.144','16D99D8DB8BAB8CC7F829784A0DB856D',10007312,'2023-03-01 16:54:21'),('192.168.253.144','731805F530E9D163AADAE5FFAAFB4D76',10007312,'2023-03-01 17:01:10'),('192.168.253.144','7C270E49180E4BFAF33EB889303199D3',10007312,'2023-02-09 11:04:48'),('192.168.253.144','7EC08707E33DB114BC6451A46BB84CCE',10007312,'2023-03-01 17:03:34'),('192.168.253.144','A207166A92539F71DB43F22B80091A19',10007312,'2023-03-01 16:19:43'),('192.168.253.144','B417547970C7C29B5782C39B3FA016D7',10007312,'2023-03-01 17:29:13'),('192.168.253.33','13DA12C5034974F0F8C3E475CD7CBC2E',10007304,'2023-02-08 10:40:52'),('192.168.253.33','168CBAA440D150D0119B188F4490FC8C',10007307,'2023-02-06 13:23:16'),('192.168.253.33','55DDA88F10DC9BB1C5E5ECE4EAC6ACE2',10007307,'2023-02-07 13:34:49'),('192.168.253.33','B2C737AA8F9AEDF146B72A9B628B0CDB',10007304,'2023-02-04 13:00:14'),('192.168.253.33','EF17EEA5BE5CF5ABD66A2C65D325AD61',10007307,'2023-02-04 14:12:51'),('192.168.254.189','04122B6F98DC36CA3D947019A048AFBA',10007304,'2022-12-17 10:45:17'),('192.168.254.189','04222CF2755E01EBF7E8ADEFF8D0C2E2',10007304,'2022-12-19 01:07:35'),('192.168.254.189','13E29D1A9D7A57DCF407B5995A4DFA2A',10007304,'2022-12-17 13:57:02'),('192.168.254.189','322F900422101BBE7DA771DE1BB3A501',10007304,'2022-12-14 18:30:37'),('192.168.254.189','3E4E36172E3F2B3115358245057D127B',10007304,'2022-12-14 18:30:38'),('192.168.254.189','44EF2DDA0FFFC030B0642188C31C73FA',10007304,'2022-12-14 18:30:38'),('192.168.254.189','46E7F184FE17077036CCC1A5D28CBF99',10007304,'2022-12-18 23:00:44'),('192.168.254.189','535BABECBD0092071EF7E58737EF417C',10007304,'2022-12-14 19:26:58'),('192.168.254.189','5B2456E9B5519611768F81B1951A9867',10007304,'2022-12-16 09:35:28'),('192.168.254.189','62B25D51FF626F39DACD68421D123F0C',10007304,'2022-12-17 12:42:47'),('192.168.254.189','6FA3B3F2F0BFCF13FABFF226322D459C',10007304,'2022-12-17 16:36:08'),('192.168.254.189','7D9036A7EB8FA50390120D77AE074D29',10007304,'2022-12-14 18:30:38'),('192.168.254.189','8502127A9304DA1998CBFC05729868F2',10007304,'2022-12-14 18:30:38'),('192.168.254.189','93ADB3D32045143B64B20426E98BDF43',10007304,'2022-12-15 09:45:01'),('192.168.254.189','B54446975373A723166BABD5C6FE120E',10007304,'2022-12-16 12:23:35'),('192.168.254.189','BD18892DC3BF02C8F9ADD3128AE52009',10007304,'2022-12-17 09:48:46'),('192.168.254.189','C0CD822E28BBFB45F6BC7A45986C9FAC',10007304,'2022-12-18 22:53:52'),('192.168.254.189','CE50C2818BE59F144FF50FB0946E0D26',10007304,'2022-12-16 14:55:09'),('192.168.254.189','D45D6C90BA2A4C475EA3C2C22CD23738',10007304,'2022-12-17 17:55:16'),('192.168.254.189','F87E9566003C15B7A3714DE2284C75CB',10007304,'2022-12-14 18:30:38'),('192.168.29.6','0A3D55EC07B91CF4E7EB9607D0D9C59E',10007312,'2023-02-20 09:27:38'),('192.168.29.6','0BF19292B9746C40A2CC393D6851D466',10007312,'2023-02-24 22:32:02'),('192.168.29.6','0DC0CE39402B019B681461F20AC3EF1D',10007312,'2023-02-17 12:23:08'),('192.168.29.6','1C577E7D97BAE9EDE8FBC17D9998BE1D',10007312,'2023-02-18 16:49:53'),('192.168.29.6','2266D9B7C318243D9CDE0CCF3BA86F3C',10007312,'2023-02-20 10:52:56'),('192.168.29.6','2A80B1BBE928BBA6C801BB05026CECDD',10007312,'2023-02-18 11:48:08'),('192.168.29.6','3B31F2A443B760B4D3E822DD76C22B27',10007312,'2023-02-19 21:40:48'),('192.168.29.6','4157BC03F3BE320E774A959431218AAB',10007312,'2023-02-16 23:04:53'),('192.168.29.6','43E858F8312BD8468EE4CD0DD6ACAD9E',10007312,'2023-02-19 22:17:47'),('192.168.29.6','49371A151D2F7DAB7D3C7507DA9D3297',10007312,'2023-02-19 22:16:26'),('192.168.29.6','4D82EA95957624F48FEF8F7E0454F2B6',10007312,'2023-02-18 12:47:24'),('192.168.29.6','4DDE4542AEA516A49F13ECB6C6C2EE81',10007312,'2023-02-17 17:13:37'),('192.168.29.6','55A86489C17B422F7488FC47FFC09CEC',10007312,'2023-02-14 17:43:31'),('192.168.29.6','67567759C5C8A56F6EC2E52F39148EA7',10007312,'2023-02-16 10:19:25'),('192.168.29.6','680A961527AF767BD21801F6AD28D440',10007312,'2023-02-23 15:40:43'),('192.168.29.6','715174D86580F41EEE895B3B0CCE4ED0',10007312,'2023-02-18 16:15:51'),('192.168.29.6','777D275CF407DF7EEDC4BD24C09E0A05',10007312,'2023-02-15 14:25:01'),('192.168.29.6','78DBEFD24B2B463C0E94CC8B2DB6FF63',10007312,'2023-02-15 12:21:30'),('192.168.29.6','79FBDD3A163D5666A2F122C20F82B4DA',10007312,'2023-02-16 18:36:32'),('192.168.29.6','7CD6BE7D97ED3E4423A5BA64F12A3596',10007312,'2023-02-20 09:45:23'),('192.168.29.6','901A7455D551947E08D53B449507C2E9',10007307,'2023-04-21 13:49:56'),('192.168.29.6','9B399CD127C72FF26B2F0807A9E549C4',10007312,'2023-02-18 15:16:22'),('192.168.29.6','9B88E62DC5B0C1107A24A71FCB2A9314',10007307,'2023-04-21 11:42:32'),('192.168.29.6','A541B47A1DA5FCA4ACECAD59B52D70C1',10007312,'2023-02-14 23:49:26'),('192.168.29.6','A55D3A978858B724706632C9B4E2B399',10007312,'2023-02-15 13:28:45'),('192.168.29.6','ABB9602854617201DC2C07181F8BB4EE',10007312,'2023-02-18 17:49:40'),('192.168.29.6','B1EA61778DFAE3585EEBBD8E8072F998',10007312,'2023-02-20 10:29:26'),('192.168.29.6','B436F4698FCAAF9C35F145ABCFB9CB26',10007312,'2023-02-22 18:17:12'),('192.168.29.6','BCBA8E2C4223FC41B3BFE24AD6EDA9A8',10007312,'2023-02-18 17:11:14'),('192.168.29.6','CC8137F49513D395AA0F9EB7B4B38E12',10007312,'2023-02-18 17:14:57'),('192.168.29.6','CD695123F470556E8F68B544CE3DA129',10007312,'2023-02-15 16:49:13'),('192.168.29.6','ECF1BAE4E0235E8F6DBEEA1809D50E7A',10007312,'2023-02-16 17:43:29'),('192.168.29.6','EF2B6E4A72612120B6E34D1DF5FB6B26',10007312,'2023-02-15 15:59:07'),('192.168.29.6','F0EEAC036D4725BEDF287BA64E7810BC',10007312,'2023-02-22 17:02:12'),('192.168.29.6','F65119A254725AE65AC42B4C337E57B9',10007312,'2023-02-14 18:34:04'),('192.168.29.6','FB4A13122F02CF52DC7C8F7D399F3C97',10007312,'2023-02-18 18:30:19'),('192.168.31.144','7CA02D7BCD5E298D38006496D069316D',10007312,'2023-02-27 12:02:17'),('192.168.31.33','5D44DADE37BC20627DE6C4AB393CC33F',10007307,'2023-02-17 11:20:17'),('192.168.38.33','DFCA9A302928769171716AC9145787DD',10007304,'2023-01-14 17:11:06'),('192.168.39.144','8A42BB7652489642077E3643F820B62F',10007312,'2023-02-01 10:21:14'),('192.168.43.174','3EBAE8D7A946E39CFBCECF7B22BDB6B2',10007304,'2023-02-28 22:14:43'),('192.168.43.6','2ED44F6CD0E2CCB9874493D21413BFB4',10007312,'2023-01-31 12:55:51'),('192.168.43.6','8AED3CCC33EBEF7CFFFE79983E36C6D6',10007312,'2023-01-31 13:01:48'),('192.168.43.6','95255F539A9572DB9EEC6541D4381106',10007312,'2023-01-31 13:07:32'),('192.168.43.6','B51CFBE1B27ACC2A67FF955C981C79A5',10007312,'2023-03-01 13:06:40'),('192.168.43.7','04E4F89E1B5C92180B6B3330D12342F1',10007304,'2023-01-13 18:14:51'),('192.168.43.7','70D5F7818B82E4E557EF7CE0CAF5D6D9',10007304,'2023-01-13 18:14:53'),('192.168.43.82','1574E9DF24606BE8BF220E4A5ABBE0A0',10007304,'2023-02-03 10:21:23'),('192.168.43.82','23DA70D354A4B1A1547991AAF8AA9BA4',10007304,'2023-02-03 09:50:21'),('192.168.43.82','2BF735C734AA56EDF4A0790B7D377EE2',10007304,'2023-01-31 15:09:19'),('192.168.43.82','2CDEF5BC4EFF9E17B73D7491605BAF7E',10007304,'2023-01-25 16:57:55'),('192.168.43.82','35E49CA36014797BEC77D389D9CDB7BD',10007304,'2023-01-30 17:43:52'),('192.168.43.82','399C9AAD90960C8A8325FA3A25DE78ED',10007304,'2023-01-27 17:03:04'),('192.168.43.82','3D2962153097C9C88B6E18608BFF320D',10007304,'2023-02-01 09:41:19'),('192.168.43.82','55D64F3C317F8DED5B2938A8F70235B4',10007304,'2023-01-24 10:02:07'),('192.168.43.82','57A593B8CF50969E3E902EE5CBEEF01F',10007304,'2023-01-31 10:06:34'),('192.168.43.82','7C13F20A58C179742C2BE5DFA81990BD',10007304,'2023-01-30 18:00:12'),('192.168.43.82','7D5002FEA2662C6E53261040B79125E8',10007304,'2023-02-02 09:48:43'),('192.168.43.82','D80ADAE96DB095A612D26D1AA1B10BA9',10007304,'2023-01-27 17:28:39'),('192.168.43.82','E4405C719440D9743CB828680E26BDA9',10007304,'2023-01-24 16:40:19'),('192.168.43.82','E7647A8502157937F025F8C6D7B8795E',10007304,'2023-01-25 09:42:31'),('192.168.43.82','FEE8E0870070BEF7DFE1BF77A03CB8AA',10007304,'2023-02-01 14:59:32'),('192.168.45.144','0196A890A4416717CB04CABF3A482B40',10007312,'2023-01-31 13:40:20'),('192.168.47.144','CF305229D4662432B1F9A10793BCB65D',10007312,'2023-03-06 09:42:49'),('192.168.59.144','7F8B20D82EF2BA09AACED7F1EE417E1C',10007312,'2023-03-05 18:34:27'),('192.168.64.33','104314AE6FA696610708DF789E8D866B',10007304,'2023-04-18 00:19:09'),('192.168.64.33','1D45ABA5C7FAA87D8799A6A628F394CB',10007304,'2023-04-18 11:42:12'),('192.168.64.33','40139763B588E80151D13E00F04D3B54',10007304,'2023-04-17 23:55:49'),('192.168.64.33','4AE3BD2D62C1F00B68B35B76B3AD6322',10007304,'2023-04-18 12:07:07'),('192.168.64.33','79A700514FE1F14A88BA4A64D4E3E01F',10007304,'2023-04-18 11:27:32'),('192.168.64.33','86FD7C2D6E88D2B587DAB0F583E7842E',10007304,'2023-04-18 16:07:42'),('192.168.64.33','C18C5EF42D3E7BCBA9246BB6D4F9DECE',10007304,'2023-04-18 12:01:48'),('192.168.64.33','CCBABCCE68CCBD3D62867491EC0273BE',10007304,'2023-04-18 15:28:54'),('192.168.64.33','DD88CAA3DB6B42179275FBC5BEF64165',10007304,'2023-04-18 15:26:32'),('192.168.64.33','F6193521096384CFB7C612F8686DFA8C',10007304,'2023-04-17 23:54:51'),('192.168.76.13','4ABC95ECBAECBE244AC5FCE9C5B6BCFB',10007304,'2023-02-02 14:06:13'),('192.168.76.13','6E33F48254348A6AAB432CC05C7BF56B',10007304,'2023-02-01 10:52:04'),('192.168.76.13','C43D83EDE88DDF52F2450C0B2D8AA768',10007304,'2023-01-30 22:09:22'),('192.168.78.144','7A8CAF355FA7E9183554AA952D146444',10007312,'2023-03-04 13:01:42'),('192.168.78.144','CCFE8980EBC7637D98834AC4733C448E',10007312,'2023-03-04 13:59:24'),('192.168.83.144','66AB54BEE27BFB058BA6FD1DC563B878',10007312,'2023-01-31 12:30:07'),('192.168.83.144','EEC9B6DBF7256D79178FC06830611EEC',10007312,'2023-01-31 12:25:04'),('192.168.85.33','86A19A7E871FCC5C464C1AE588B27485',10007304,'2023-01-24 12:56:36'),('192.168.88.2','03E586DB2EACFDF4C5C030614A8AC294',10007304,'2023-02-06 17:13:15'),('192.168.88.2','08F6E1B80811C64B2AAAB00CA14A04DD',10007304,'2023-02-08 10:09:24'),('192.168.88.2','0B30072518BDC0E2537DDC55F205BD42',10007304,'2023-02-07 13:21:26'),('192.168.88.2','45776CD76D50E4F1DEA99E9C5E0EF01F',10007304,'2023-02-08 10:44:29'),('192.168.88.2','49F2044ED562398EE0C532925CCE9C2D',10007304,'2023-02-04 01:54:26'),('192.168.88.2','4E4910FE050DF3A28FFD6F74391903C6',10007304,'2023-02-06 18:47:46'),('192.168.88.2','6B52033EEDF2B23122CD9B6C9E8D479B',10007304,'2023-02-07 15:53:43'),('192.168.88.2','B1AC8EC418365614936193BAA4BA669D',10007304,'2023-02-04 12:36:34'),('192.168.88.2','F5E96D74301143596352504DC7571FAB',10007304,'2023-02-06 18:07:16'),('192.168.92.144','5ABD8FF70ED112BA6816DE907E10A7FC',10007312,'2023-02-09 15:25:16'),('192.168.92.144','A3753F90A67068952E4986C6DD2C5590',10007312,'2023-02-09 13:48:22'),('192.168.92.144','CAC3F93DBC7F4503A67036FD28E6093B',10007312,'2023-02-09 18:29:52'),('192.168.95.121','C8D680FF30143A68ED79E97FE69D565D',10007304,'2023-04-22 10:51:10'),('210.16.92.0','796FC928BBDA0F4EC19324D211ACC32A',10007304,'2023-04-18 13:58:42'),('210.16.92.0','DA6469F51FBFA5A93F6DE9485B3ABFF8',10007304,'2023-04-19 06:08:14'),('49.248.197.50','219DE66BCBE7B30CCEB26BFDEEC949E6',10007304,'2023-04-20 12:28:36'),('49.248.197.50','AE7A5DF9E2B2CCEF09A5557583963F32',10007304,'2023-04-21 08:40:42'),('49.37.117.176','AE4F0C383248D61BC414CBA1F7DB26F4',10007304,'2023-04-19 06:08:27'); +/*!40000 ALTER TABLE `sec_user_sessions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_users` +-- + +DROP TABLE IF EXISTS `sec_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_users` ( + `user_id` bigint NOT NULL, + `is_complete` bit(1) NOT NULL, + `about` varchar(255) DEFAULT NULL, + `access_duration` bigint DEFAULT NULL, + `change_passw` varchar(255) DEFAULT NULL, + `checknumber` bigint DEFAULT NULL, + `country` varchar(255) DEFAULT NULL, + `createby` varchar(255) DEFAULT NULL, + `createdate` datetime DEFAULT NULL, + `customer_id` bigint DEFAULT NULL, + `days_mth` varchar(255) DEFAULT NULL, + `dep_string` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `expiry_date` datetime DEFAULT NULL, + `first_login` varchar(255) DEFAULT NULL, + `full_name` varchar(255) DEFAULT NULL, + `is_blocked` bit(1) NOT NULL, + `lang_code` varchar(255) DEFAULT NULL, + `last_pwd_changed_date` datetime DEFAULT NULL, + `mob_no` bigint DEFAULT NULL, + `no_days_mth` bigint DEFAULT NULL, + `notification` varchar(255) DEFAULT NULL, + `password1` varchar(255) DEFAULT NULL, + `password2` varchar(255) DEFAULT NULL, + `password3` varchar(255) DEFAULT NULL, + `password4` varchar(255) DEFAULT NULL, + `photo` longblob, + `photo_name` varchar(255) DEFAULT NULL, + `provider` varchar(255) DEFAULT NULL, + `pwd_changed_cnt` bigint DEFAULT NULL, + `random_no` varchar(255) DEFAULT NULL, + `short_name` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `title` varchar(255) DEFAULT NULL, + `updateby` varchar(255) DEFAULT NULL, + `updatedate` datetime DEFAULT NULL, + `user_passw` varchar(255) DEFAULT NULL, + `user_name` varchar(255) DEFAULT NULL, + `usr_grp_id` bigint DEFAULT NULL, + `working` varchar(255) DEFAULT NULL, + `account_id` bigint DEFAULT NULL, + `department_code` varchar(255) DEFAULT NULL, + `position_code` varchar(255) DEFAULT NULL, + `usr_grp` bigint DEFAULT NULL, + PRIMARY KEY (`user_id`), + UNIQUE KEY `UK_fw34bx9q2ss6bto160uppxg9t` (`user_name`), + KEY `FKs6u4j3tx3oafeuph5ou29qwd9` (`account_id`), + KEY `FK755v9w0tyoeq5v61egs6jsvv8` (`department_code`), + KEY `FKnuiei3fcu2t6k16v1dthw5bvh` (`position_code`), + KEY `FKl26vrpflaga4edp953i7c7i7` (`usr_grp`), + CONSTRAINT `FK755v9w0tyoeq5v61egs6jsvv8` FOREIGN KEY (`department_code`) REFERENCES `department` (`department_code`), + CONSTRAINT `FKl26vrpflaga4edp953i7c7i7` FOREIGN KEY (`usr_grp`) REFERENCES `sec_user_group` (`usr_grp`), + CONSTRAINT `FKnuiei3fcu2t6k16v1dthw5bvh` FOREIGN KEY (`position_code`) REFERENCES `position` (`position_code`), + CONSTRAINT `FKs6u4j3tx3oafeuph5ou29qwd9` FOREIGN KEY (`account_id`) REFERENCES `sys_accounts` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_users` +-- + +LOCK TABLES `sec_users` WRITE; +/*!40000 ALTER TABLE `sec_users` DISABLE KEYS */; +INSERT INTO `sec_users` VALUES (10007304,_binary '',NULL,NULL,'test',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'admin',NULL,NULL,'admin',_binary '\0',NULL,NULL,123,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$Z/qB46BXJC.15psWvLA6wuRsKhnDyHgHNLzOs9tlE70AnCZTjo4IW','admin123',1,NULL,1,NULL,NULL,1),(10007307,_binary '',NULL,NULL,'test3',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'sysadmin',NULL,NULL,'piya khose',_binary '\0',NULL,NULL,76756765,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$y0hwswpMqYRtlMJoNzpYBe45VDI8SQX/4K4OjzKYX9NHmN1HPZmIu','sysadmin',NULL,NULL,1,NULL,NULL,1),(10007308,_binary '',NULL,NULL,'test5',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'sysadmin',NULL,NULL,'siya jfhjd',_binary '\0',NULL,NULL,7654645784,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$CBo5GAvkdD6p/rUmUDcd6uRVLEyw104hl3RJ72KfU6uDiwGZG/itu','siya@gmail.com',NULL,NULL,1,NULL,NULL,1),(10007311,_binary '',NULL,NULL,'ash1',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ash@gmail.com',NULL,NULL,'ash1 ka',_binary '\0',NULL,NULL,7649345683,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$7C48mZGQwGEtY.6UzyABA.D1CB3Tj75DChkEYhrWrLMihyfit6bLG','ash@gmail.com',NULL,NULL,1,NULL,NULL,1),(10007312,_binary '',NULL,NULL,'gaurav',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'gaurav@gmail.com',NULL,NULL,'gaurav kumar',_binary '\0',NULL,NULL,9856875635,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$WmNZeqBaDJJu0KaIFc01g.tVuIDe5XXFvKY.MrI1PYSIfwf/PqeJq','gaurav@gmail.com',NULL,NULL,1,NULL,NULL,1),(10007316,_binary '',NULL,NULL,'ashwini',NULL,NULL,NULL,NULL,NULL,NULL,NULL,'ashwini@gmail.com',NULL,NULL,'ashwini kad',_binary '\0',NULL,NULL,8796456785,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,'$2a$10$T0kd.0Z3a3I7IZwgRN65RO7EJWLmNT2CFuXN7aPojXq/GVYsC0152','ashwini@gmail.com',NULL,NULL,1,NULL,NULL,1); +/*!40000 ALTER TABLE `sec_users` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sec_users_sequencs` +-- + +DROP TABLE IF EXISTS `sec_users_sequencs`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sec_users_sequencs` ( + `next_val` bigint DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sec_users_sequencs` +-- + +LOCK TABLES `sec_users_sequencs` WRITE; +/*!40000 ALTER TABLE `sec_users_sequencs` DISABLE KEYS */; +INSERT INTO `sec_users_sequencs` VALUES (10007317),(10007300),(10007300),(10007300),(10007300),(10007300); +/*!40000 ALTER TABLE `sec_users_sequencs` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `secuser_roles` +-- + +DROP TABLE IF EXISTS `secuser_roles`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `secuser_roles` ( + `secuser_id` bigint NOT NULL, + `role_id` bigint NOT NULL, + PRIMARY KEY (`secuser_id`,`role_id`), + KEY `FKqori0nm574l1ipruo5f47crex` (`role_id`), + CONSTRAINT `FK321c4ykolkm3cy98bxmf4kn05` FOREIGN KEY (`secuser_id`) REFERENCES `sec_users` (`user_id`), + CONSTRAINT `FKqori0nm574l1ipruo5f47crex` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `secuser_roles` +-- + +LOCK TABLES `secuser_roles` WRITE; +/*!40000 ALTER TABLE `secuser_roles` DISABLE KEYS */; +INSERT INTO `secuser_roles` VALUES (10007304,1),(10007307,1),(10007308,1),(10007311,1),(10007316,1); +/*!40000 ALTER TABLE `secuser_roles` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_accounts` +-- + +DROP TABLE IF EXISTS `sys_accounts`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_accounts` ( + `id` bigint NOT NULL AUTO_INCREMENT, + `company_name` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `gst_no` varchar(255) DEFAULT NULL, + `mobile` varchar(255) DEFAULT NULL, + `pancard` varchar(255) DEFAULT NULL, + `working` varchar(255) DEFAULT NULL, + `workspace` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_accounts` +-- + +LOCK TABLES `sys_accounts` WRITE; +/*!40000 ALTER TABLE `sys_accounts` DISABLE KEYS */; +INSERT INTO `sys_accounts` VALUES (1,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +/*!40000 ALTER TABLE `sys_accounts` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `sys_accounts_users` +-- + +DROP TABLE IF EXISTS `sys_accounts_users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `sys_accounts_users` ( + `sys_accounts_id` bigint NOT NULL, + `users_user_id` bigint NOT NULL, + UNIQUE KEY `UK_8dxppqkque5ehofdy83bntgks` (`users_user_id`), + KEY `FKs9o1t4hyiyq2y330p0d2evf2a` (`sys_accounts_id`), + CONSTRAINT `FKdkc60wy8v55ylspegueinngjx` FOREIGN KEY (`users_user_id`) REFERENCES `sec_users` (`user_id`), + CONSTRAINT `FKs9o1t4hyiyq2y330p0d2evf2a` FOREIGN KEY (`sys_accounts_id`) REFERENCES `sys_accounts` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `sys_accounts_users` +-- + +LOCK TABLES `sys_accounts_users` WRITE; +/*!40000 ALTER TABLE `sys_accounts_users` DISABLE KEYS */; +/*!40000 ALTER TABLE `sys_accounts_users` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `user_list` +-- + +DROP TABLE IF EXISTS `user_list`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_list` ( + `id` bigint NOT NULL, + `about` varchar(255) DEFAULT NULL, + `account_id` varchar(255) DEFAULT NULL, + `address1` varchar(255) DEFAULT NULL, + `address2` varchar(255) DEFAULT NULL, + `checknumber` varchar(255) DEFAULT NULL, + `company` varchar(255) DEFAULT NULL, + `country` varchar(255) DEFAULT NULL, + `created_at` varchar(255) DEFAULT NULL, + `created_by` varchar(255) DEFAULT NULL, + `default_customer_id` varchar(255) DEFAULT NULL, + `department` varchar(255) DEFAULT NULL, + `dob` varchar(255) DEFAULT NULL, + `email` varchar(255) DEFAULT NULL, + `enable_beta_testing` bit(1) NOT NULL, + `enable_renewal` bit(1) NOT NULL, + `firstname` varchar(255) DEFAULT NULL, + `fullname` varchar(255) DEFAULT NULL, + `gender` varchar(255) DEFAULT NULL, + `is_active` bit(1) NOT NULL, + `is_blocked` bit(1) NOT NULL, + `lastname` varchar(255) DEFAULT NULL, + `managing_work` varchar(255) DEFAULT NULL, + `menu_group` int NOT NULL, + `name` varchar(255) DEFAULT NULL, + `other_roles` varchar(255) DEFAULT NULL, + `pancard` varchar(255) DEFAULT NULL, + `password` varchar(255) DEFAULT NULL, + `phone` varchar(255) DEFAULT NULL, + `photos` varchar(255) DEFAULT NULL, + `postal` varchar(255) DEFAULT NULL, + `role` varchar(255) DEFAULT NULL, + `secret_answer` varchar(255) DEFAULT NULL, + `secret_question` varchar(255) DEFAULT NULL, + `security_provider_id` varchar(255) DEFAULT NULL, + `status` varchar(255) DEFAULT NULL, + `updated_at` varchar(255) DEFAULT NULL, + `updated_by` varchar(255) DEFAULT NULL, + `user_id` varchar(255) DEFAULT NULL, + `username` varchar(255) DEFAULT NULL, + `working` varchar(255) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `user_list` +-- + +LOCK TABLES `user_list` WRITE; +/*!40000 ALTER TABLE `user_list` DISABLE KEYS */; +/*!40000 ALTER TABLE `user_list` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `userloginhist` +-- + +DROP TABLE IF EXISTS `userloginhist`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `userloginhist` ( + `create_by` varchar(255) DEFAULT NULL, + `create_date` datetime DEFAULT NULL, + `expiry_reminder` bigint DEFAULT NULL, + `last_login_date` datetime DEFAULT NULL, + `last_password_chg_date` datetime DEFAULT NULL, + `last_password_fail_no` bigint DEFAULT NULL, + `update_by` varchar(255) DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + `user_id` bigint NOT NULL, + PRIMARY KEY (`user_id`), + CONSTRAINT `FK2a2xifc15js82mjl20honhdfr` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `userloginhist` +-- + +LOCK TABLES `userloginhist` WRITE; +/*!40000 ALTER TABLE `userloginhist` DISABLE KEYS */; +/*!40000 ALTER TABLE `userloginhist` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `userpasswlog` +-- + +DROP TABLE IF EXISTS `userpasswlog`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `userpasswlog` ( + `create_date` datetime NOT NULL, + `user_id` bigint NOT NULL, + `user_passw` varchar(255) NOT NULL, + `create_by` varchar(255) DEFAULT NULL, + `update_by` varchar(255) DEFAULT NULL, + `update_date` datetime DEFAULT NULL, + PRIMARY KEY (`create_date`,`user_id`,`user_passw`), + KEY `FKpd759n25auh4bw5ri0xikikia` (`user_id`), + CONSTRAINT `FKpd759n25auh4bw5ri0xikikia` FOREIGN KEY (`user_id`) REFERENCES `sec_users` (`user_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `userpasswlog` +-- + +LOCK TABLES `userpasswlog` WRITE; +/*!40000 ALTER TABLE `userpasswlog` DISABLE KEYS */; +/*!40000 ALTER TABLE `userpasswlog` ENABLE KEYS */; +UNLOCK TABLES; +SET @@SESSION.SQL_LOG_BIN = @MYSQLDUMP_TEMP_LOG_BIN; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2023-04-22 18:52:13 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.editorconfig b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.editorconfig new file mode 100644 index 0000000..59d9a3a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.editorconfig @@ -0,0 +1,16 @@ +# Editor configuration, see https://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.ts] +quote_type = single + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.gitignore b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.gitignore new file mode 100644 index 0000000..aeb3006 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/.gitignore @@ -0,0 +1,38 @@ +# # Java Builds +# target/ +# build/ +# bin/ +# .gradle/ +# .classpath +# .metadata/ + +# WebUI Builds +tmp/ + +# WebUI dependencies +node_modules/ +bower_components/ + +# # Logs +# logs/ + +# # IDEs and editors +# **/.idea +# **/*.iml +# **/.vscode +# .settings/ +# **/metadata/* + +# # misc +# **/.sass-cache +# **/npm-debug.log +# typings/ + +# #System Files +# **/.DS_Store +# **/.project +# **/.settings +# **/.classpath +# **/.metadata +# **/Thumbs.db +# **/.log diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/README.md b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/README.md new file mode 100644 index 0000000..f2c5dd9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/README.md @@ -0,0 +1,54 @@ +# Angular-Clarity + +This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 11.2.12, [Angular.io](https://angular.io/) version 11.2.13 and [Clarity Design System](https://vmware.github.io/clarity/news) by VMware version 5.2.0 + +## Install +- clone project `git clone https://github.com/superpck/angular-clarity` +- goto project folder `cd angular-clarity` +- install necessary package `npm install` +- Fix some vulnerabilities (if founded) `npm audit fix --force` +- Run application with command `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. +- or Run `ng serve --port 8080 --open` with another port and open web browser. + +## Code scaffolding + +Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. + +## Build + +- Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `--prod` flag for a production build. +- or `ng build --base-href ./ --prod --output-hashing none` + +## Running unit tests + +Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). + +## Running end-to-end tests + +Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/). + +## Further help + +To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md). + +## Screenshot +About Page +![About](1.png) + +Datagrid +![Datagrid](2.png) + +Datagrid expand row and single action +![expand](3.jpg) + +Modal +![modal](4.png) + +sweetalert2 +![sweetalert2](5.png) + +---------------------------------- +open project run "npm install" +run project "ng serve" +*task* +open formbuilder in that 4 columns and card drag drop it another column and same column . diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/angular.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/angular.json new file mode 100644 index 0000000..e3c3f7e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/angular.json @@ -0,0 +1,138 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angularclarity": { + "projectType": "application", + "schematics": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "root": "", + "sourceRoot": "src", + "prefix": "app", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "allowedCommonJsDependencies": [ + "lodash", "xlsx", "file-saver","@swimlane/ngx-datatable","@swimlane/ngx-charts","jquery","highcharts","chart.js", + "clone-deep","@ckeditor/ckeditor5-build-classic","@ctrl/ngx-codemirror" + ], + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + + "src/styles.scss", + "node_modules/bootstrap/dist/css/bootstrap.min.css", + + "node_modules/ngx-toastr/toastr.css", + "src/app/modules/main/ngx-guided-tour/src/lib/guided-tour-base-theme.scss" + ], + "scripts": [ + "node_modules/bootstrap/dist/js/bootstrap.min.js", + "node_modules/jquery/dist/jquery.min.js", + "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js", + "node_modules/@webcomponents/webcomponentsjs/webcomponents-bundle.js" + + ], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, + "sourceMap": true, + "optimization": false, + "namedChunks": true + }, + "configurations": { + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "5mb", + "maximumError": "10mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb", + "maximumError": "10kb" + } + ] + } + }, + "defaultConfiguration": "" + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "angularclarity:build" + }, + "configurations": { + "production": { + "browserTarget": "angularclarity:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angularclarity:build" + } + }, + "test": { + "builder": "@angular-devkit/build-angular:karma", + "options": { + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "assets": [ + "src/favicon.ico", + "src/assets" + ], + "styles": [ + "src/styles.scss" + ], + "scripts": [] + } + }, + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "e2e/protractor.conf.js", + "devServerTarget": "angularclarity:serve" + }, + "configurations": { + "production": { + "devServerTarget": "angularclarity:serve:production" + } + } + } + } + } + }, + "cli": { + "analytics": "6e7a3b23-d894-47dd-8b4b-7fdeba9a5abd" + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/protractor.conf.js b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/protractor.conf.js new file mode 100644 index 0000000..7c798cf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/protractor.conf.js @@ -0,0 +1,32 @@ +// @ts-check +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +/** + * @type { import("protractor").Config } + */ +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './src/**/*.e2e-spec.ts' + ], + capabilities: { + browserName: 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + onPrepare() { + require('ts-node').register({ + project: require('path').join(__dirname, './tsconfig.json') + }); + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.e2e-spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.e2e-spec.ts new file mode 100644 index 0000000..98d296a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.e2e-spec.ts @@ -0,0 +1,23 @@ +import { AppPage } from './app.po'; +import { browser, logging } from 'protractor'; + +describe('workspace-project App', () => { + let page: AppPage; + + beforeEach(() => { + page = new AppPage(); + }); + + it('should display welcome message', () => { + page.navigateTo(); + expect(page.getTitleText()).toEqual('angularclarity app is running!'); + }); + + afterEach(async () => { + // Assert that there are no errors emitted from the browser + const logs = await browser.manage().logs().get(logging.Type.BROWSER); + expect(logs).not.toContain(jasmine.objectContaining({ + level: logging.Level.SEVERE, + } as logging.Entry)); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.po.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.po.ts new file mode 100644 index 0000000..b68475e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/src/app.po.ts @@ -0,0 +1,11 @@ +import { browser, by, element } from 'protractor'; + +export class AppPage { + navigateTo(): Promise { + return browser.get(browser.baseUrl) as Promise; + } + + getTitleText(): Promise { + return element(by.css('app-root .content span')).getText() as Promise; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/tsconfig.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/tsconfig.json new file mode 100644 index 0000000..39b800f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/e2e/tsconfig.json @@ -0,0 +1,13 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types": [ + "jasmine", + "jasminewd2", + "node" + ] + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/karma.conf.js b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/karma.conf.js new file mode 100644 index 0000000..26cf885 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/karma.conf.js @@ -0,0 +1,32 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/1.0/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client: { + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, './coverage/ang'), + reports: ['html', 'lcovonly', 'text-summary'], + fixWebpackSourcePaths: true + }, + reporters: ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false, + restartOnFileChange: true + }); +}; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package-lock.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package-lock.json new file mode 100644 index 0000000..3a123b3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package-lock.json @@ -0,0 +1,15123 @@ +{ + "name": "angular-clarity", + "version": "16.0.4", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "angular-clarity", + "version": "16.0.4", + "dependencies": { + "@angular/animations": "^16.0.4", + "@angular/cdk": "^16.2.4", + "@angular/common": "^16.0.4", + "@angular/compiler": "^16.0.4", + "@angular/core": "^16.0.4", + "@angular/forms": "^16.0.4", + "@angular/platform-browser": "^16.0.4", + "@angular/platform-browser-dynamic": "^16.0.4", + "@angular/router": "^16.0.4", + "@auth0/angular-jwt": "^5.1.2", + "@cds/core": "^6.9.0", + "@ckeditor/ckeditor5-angular": "^7.0.1", + "@ckeditor/ckeditor5-build-classic": "^40.0.0", + "@clr/angular": "^16.0.0", + "@clr/icons": "^13.0.0", + "@clr/ui": "^16.0.0", + "@ctrl/ngx-codemirror": "^7.0.0", + "@swimlane/ngx-charts": "^20.4.1", + "@webcomponents/custom-elements": "^1.6.0", + "@webcomponents/webcomponentsjs": "^2.8.0", + "angular-gridster2": "^16.0.0", + "angularx-qrcode": "^16.0.2", + "bootstrap": "^5.3.2", + "bootstrap-icons": "^1.11.2", + "boxicons": "^2.1.4", + "chart.js": "^3.4.0", + "dom-to-image": "^2.6.0", + "express": "^4.18.2", + "file-saver": "^2.0.5", + "highcharts": "^11.1.0", + "highcharts-angular": "^3.1.2", + "jquery": "^3.7.1", + "jspdf": "^2.5.1", + "jszip": "^3.10.1", + "lit-html": "^3.1.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "ng-dynamic-component": "^10.1.1", + "ng-multiselect-dropdown": "^1.0.0", + "ng2-charts": "^4.1.0", + "ng2-ckeditor": "^1.3.7", + "ng2-search-filter": "^0.5.1", + "ngx-chips": "^3.0.0", + "ngx-cookie-service": "^16.0.0", + "ngx-drag-drop": "^16.1.0", + "ngx-filter-pipe": "^3.0.0", + "ngx-image-cropper": "^7.0.2", + "ngx-toastr": "^17.0.2", + "numeral": "^2.0.6", + "rxjs": "^7.8.1", + "sweetalert2": "^11.4.8", + "tslib": "^2.5.2", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.0.4", + "@angular/cli": "^16.0.4", + "@angular/compiler-cli": "^16.0.4", + "@types/jasmine": "~4.3.2", + "@types/jasminewd2": "~2.0.10", + "@types/node": "^20.2.5", + "jasmine-core": "~5.0.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.2", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "ts-node": "^10.9.1", + "tslint": "~6.1.3", + "typescript": "^5.1.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1602.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1602.14.tgz", + "integrity": "sha512-eSdONEV5dbtLNiOMBy9Ue9DdJ1ct6dH9RdZfYiedq6VZn0lejePAjY36MYVXgq2jTE+v/uIiaNy7caea5pt55A==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.14", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/build-angular": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-16.2.14.tgz", + "integrity": "sha512-bXQ6i7QPhwmYHuh+DSNkBhjTIHQF0C6fqZEg2ApJA3NmnzE98oQnmJ9AnGnAkdf1Mjn3xi2gxoZWPDDxGEINMw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.1", + "@angular-devkit/architect": "0.1602.14", + "@angular-devkit/build-webpack": "0.1602.14", + "@angular-devkit/core": "16.2.14", + "@babel/core": "7.22.9", + "@babel/generator": "7.22.9", + "@babel/helper-annotate-as-pure": "7.22.5", + "@babel/helper-split-export-declaration": "7.22.6", + "@babel/plugin-proposal-async-generator-functions": "7.20.7", + "@babel/plugin-transform-async-to-generator": "7.22.5", + "@babel/plugin-transform-runtime": "7.22.9", + "@babel/preset-env": "7.22.9", + "@babel/runtime": "7.22.6", + "@babel/template": "7.22.5", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "16.2.14", + "@vitejs/plugin-basic-ssl": "1.0.1", + "ansi-colors": "4.1.3", + "autoprefixer": "10.4.14", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.21.5", + "chokidar": "3.5.3", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.20", + "css-loader": "6.8.1", + "esbuild-wasm": "0.18.17", + "fast-glob": "3.3.1", + "guess-parser": "0.4.22", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "magic-string": "0.30.1", + "mini-css-extract-plugin": "2.7.6", + "mrmime": "1.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "2.3.1", + "piscina": "4.0.0", + "postcss": "8.4.31", + "postcss-loader": "7.3.3", + "resolve-url-loader": "5.0.0", + "rxjs": "7.8.1", + "sass": "1.64.1", + "sass-loader": "13.3.2", + "semver": "7.5.4", + "source-map-loader": "4.0.1", + "source-map-support": "0.5.21", + "terser": "5.19.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.6.1", + "vite": "4.5.3", + "webpack": "5.88.2", + "webpack-dev-middleware": "6.1.2", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.9.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.18.17" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "@angular/localize": "^16.0.0", + "@angular/platform-server": "^16.0.0", + "@angular/service-worker": "^16.0.0", + "jest": "^29.5.0", + "jest-environment-jsdom": "^29.5.0", + "karma": "^6.3.0", + "ng-packagr": "^16.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.9.3 <5.2" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/platform-server": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "jest": { + "optional": true + }, + "jest-environment-jsdom": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.1.tgz", + "integrity": "sha512-t0hLfiEKfMUoqhG+U1oid7Pva4bbDPHYfJNiB7BiIjRkj1pyC++4N3huJfqY6aRH6VTB0rvtzQwjM4K6qpfOig==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1602.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1602.14.tgz", + "integrity": "sha512-f+ZTCjOoA1SCQEaX3L/63ubqr/vlHkwDXAtKjBsQgyz6srnETcjy96Us5k/LoK7/hPc85zFneqLinfqOMVWHJQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.14", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/core": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-16.2.14.tgz", + "integrity": "sha512-Ui14/d2+p7lnmXlK/AX2ieQEGInBV75lonNtPQgwrYgskF8ufCuN0DyVZQUy9fJDkC+xQxbJyYrby/BS0R0e7w==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "picomatch": "2.3.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/schematics": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-16.2.14.tgz", + "integrity": "sha512-B6LQKInCT8w5zx5Pbroext5eFFRTCJdTwHN8GhcVS8IeKCnkeqVTQLjB4lBUg7LEm8Y7UHXwzrVxmk+f+MBXhw==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.14", + "jsonc-parser": "3.2.0", + "magic-string": "0.30.1", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/animations": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-16.2.12.tgz", + "integrity": "sha512-MD0ElviEfAJY8qMOd6/jjSSvtqER2RDAi0lxe6EtUacC1DHCYkaPrKW4vLqY+tmZBg1yf+6n+uS77pXcHHcA3w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12" + } + }, + "node_modules/@angular/cdk": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-16.2.14.tgz", + "integrity": "sha512-n6PrGdiVeSTEmM/HEiwIyg6YQUUymZrb5afaNLGFRM5YL0Y8OBqd+XhCjb0OfD/AfgCUtedVEPwNqrfW8KzgGw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^7.1.2" + }, + "peerDependencies": { + "@angular/common": "^16.0.0 || ^17.0.0", + "@angular/core": "^16.0.0 || ^17.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-16.2.14.tgz", + "integrity": "sha512-0y71jtitigVolm4Rim1b8xPQ+B22cGp4Spef2Wunpqj67UowN6tsZaVuWBEQh4u5xauX8LAHKqsvy37ZPWCc4A==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1602.14", + "@angular-devkit/core": "16.2.14", + "@angular-devkit/schematics": "16.2.14", + "@schematics/angular": "16.2.14", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.2.0", + "npm-package-arg": "10.1.0", + "npm-pick-manifest": "8.0.1", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "15.2.0", + "resolve": "1.22.2", + "semver": "7.5.4", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-16.2.12.tgz", + "integrity": "sha512-B+WY/cT2VgEaz9HfJitBmgdk4I333XG/ybC98CMC4Wz8E49T8yzivmmxXB3OD6qvjcOB6ftuicl6WBqLbZNg2w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-16.2.12.tgz", + "integrity": "sha512-6SMXUgSVekGM7R6l1Z9rCtUGtlg58GFmgbpMCsGf+VXxP468Njw8rjT2YZkf5aEPxEuRpSHhDYjqz7n14cwCXQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-16.2.12.tgz", + "integrity": "sha512-pWSrr152562ujh6lsFZR8NfNc5Ljj+zSTQO44DsuB0tZjwEpnRcjJEgzuhGXr+CoiBf+jTSPZKemtSktDk5aaA==", + "dev": true, + "dependencies": { + "@babel/core": "7.23.2", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/compiler": "16.2.12", + "typescript": ">=4.9.3 <5.2" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.2.tgz", + "integrity": "sha512-n7s51eWdaWZ3vGT2tD4T7J6eJs3QoBXydv7vkUM06Bf1cbVD2Kc2UrkzhiQwobfV7NwOnQXYL7UBJ5VPU+RGoQ==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.0", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.0", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.0", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.2", + "@babel/types": "^7.23.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.4.tgz", + "integrity": "sha512-NFtZmZsyzDPJnk9Zg3BbTfKKc9UlHYzD0E//p2Z3B9nCwwtJW9T0gVbCz8+fBngnn4zf1Dr3IK8PHQQHq0lDQw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/core": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-16.2.12.tgz", + "integrity": "sha512-GLLlDeke/NjroaLYOks0uyzFVo6HyLl7VOm0K1QpLXnYvW63W9Ql/T3yguRZa7tRkOAeFZ3jw+1wnBD4O8MoUA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.13.0" + } + }, + "node_modules/@angular/forms": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-16.2.12.tgz", + "integrity": "sha512-1Eao89hlBgLR3v8tU91vccn21BBKL06WWxl7zLpQmG6Hun+2jrThgOE4Pf3os4fkkbH4Apj0tWL2fNIWe/blbw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-16.2.12.tgz", + "integrity": "sha512-NnH7ju1iirmVEsUq432DTm0nZBGQsBrU40M3ZeVHMQ2subnGiyUs3QyzDz8+VWLL/T5xTxWLt9BkDn65vgzlIQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/animations": "16.2.12", + "@angular/common": "16.2.12", + "@angular/core": "16.2.12" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-16.2.12.tgz", + "integrity": "sha512-ya54jerNgreCVAR278wZavwjrUWImMr2F8yM5n9HBvsMBbFaAQ83anwbOEiHEF2BlR+gJiEBLfpuPRMw20pHqw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/compiler": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12" + } + }, + "node_modules/@angular/router": { + "version": "16.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-16.2.12.tgz", + "integrity": "sha512-aU6QnYSza005V9P3W6PpkieL56O0IHps96DjqI1RS8yOJUl3THmokqYN4Fm5+HXy4f390FN9i6ftadYQDKeWmA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0" + }, + "peerDependencies": { + "@angular/common": "16.2.12", + "@angular/core": "16.2.12", + "@angular/platform-browser": "16.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", + "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", + "dev": true + }, + "node_modules/@auth0/angular-jwt": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.2.0.tgz", + "integrity": "sha512-9FS2L0QwGNlxA/zgeehCcsR9CZscouyXkoIj1fODM36A8BLfdzg9k9DWAXUQ2Drjk0AypGAFzeNZR4vsLMhdeQ==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=14.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.9.tgz", + "integrity": "sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.5", + "@babel/generator": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-module-transforms": "^7.22.9", + "@babel/helpers": "^7.22.6", + "@babel/parser": "^7.22.7", + "@babel/template": "^7.22.5", + "@babel/traverse": "^7.22.8", + "@babel/types": "^7.22.5", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.9.tgz", + "integrity": "sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.4.tgz", + "integrity": "sha512-ro/bFs3/84MDgDmMwbcHgDa8/E6J3QKNTk4xJJnVeFtGE+tL0K26E3pNxhYz2b67fJpt7Aphw5XcploKXuCvCQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/traverse": "^7.25.4", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", + "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", + "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-wrap-function": "^7.25.0", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", + "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", + "dev": true, + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", + "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", + "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers/node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.4.tgz", + "integrity": "sha512-nq+eWrOgdtu3jG5Os4TQP3x3cLA8hR8TvJNjD8vnPa20WGycimcparWnLK4jJhElTK6SDyuJo1weMKO/5LpmLA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.4" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.25.0.tgz", + "integrity": "sha512-lXwdNZtTmeVOOFtwM/WDe7yg1PL8sYhRk/XH0FzbR2HDQ0xC+EnQ/JHeoMYSavtU115tnUk0q9CDyq8si+LMAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.25.4.tgz", + "integrity": "sha512-jz8cV2XDDTqjKPwVPJBIjORVEmSGYhdRa8e5k5+vN+uwcjSrSxUaebBRa4ko1jqNF2uxyg8G6XYk30Jv285xzg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-remap-async-to-generator": "^7.25.0", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/traverse": "^7.25.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.22.5.tgz", + "integrity": "sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", + "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.4.tgz", + "integrity": "sha512-nZeZHyCWPfjkdU5pA/uHiTaDAFUEqkpzf1YoQT2NeSynCGYq9rxfyI3XpQbfx/a0hSnFH6TGlEXvae5Vi7GD8g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.4.tgz", + "integrity": "sha512-oexUfaQle2pF/b6E0dwsxQtAol9TLSO88kQvym6HHBWFliV2lGdrPieX+WgMRLSJDVzdYywk7jXbLPuO2KLTLg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.25.0", + "@babel/traverse": "^7.25.4", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties/node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", + "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/traverse": "^7.25.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", + "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.0.tgz", + "integrity": "sha512-YPJfjQPDXxyQWg/0+jHKj1llnY5f/R6a0p/vP4lPymxLu7Lvl4k2WMitqi08yxwQcCVUUdG9LCUj4TNEgAp3Jw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.25.0", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.4.tgz", + "integrity": "sha512-ao8BG7E2b/URaUQGqN3Tlsg+M3KlHY6rJ1O1gXAEUnZoyNQnvKyH87Kfg+FoxSeyWUB8ISZZsC91C44ZuBFytw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.4", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.22.9.tgz", + "integrity": "sha512-9KjBH61AGJetCPYp/IEyLEp47SyybZb0nDRpBvmtEkm+rUIwxdlKpyNHI1TmsGkeuLclJdleQHRZ8XLBnnh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.4.tgz", + "integrity": "sha512-qesBxiWkgN1Q+31xUE9RcMk79eOXXDCv6tfyGMRSs4RGlioSg2WVyQAm07k726cSE56pa+Kb0y9epX2qaXzTvA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.2", + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.22.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.22.9.tgz", + "integrity": "sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-compilation-targets": "^7.22.9", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.5", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.22.5", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.22.5", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.22.5", + "@babel/plugin-syntax-import-attributes": "^7.22.5", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.22.5", + "@babel/plugin-transform-async-generator-functions": "^7.22.7", + "@babel/plugin-transform-async-to-generator": "^7.22.5", + "@babel/plugin-transform-block-scoped-functions": "^7.22.5", + "@babel/plugin-transform-block-scoping": "^7.22.5", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-class-static-block": "^7.22.5", + "@babel/plugin-transform-classes": "^7.22.6", + "@babel/plugin-transform-computed-properties": "^7.22.5", + "@babel/plugin-transform-destructuring": "^7.22.5", + "@babel/plugin-transform-dotall-regex": "^7.22.5", + "@babel/plugin-transform-duplicate-keys": "^7.22.5", + "@babel/plugin-transform-dynamic-import": "^7.22.5", + "@babel/plugin-transform-exponentiation-operator": "^7.22.5", + "@babel/plugin-transform-export-namespace-from": "^7.22.5", + "@babel/plugin-transform-for-of": "^7.22.5", + "@babel/plugin-transform-function-name": "^7.22.5", + "@babel/plugin-transform-json-strings": "^7.22.5", + "@babel/plugin-transform-literals": "^7.22.5", + "@babel/plugin-transform-logical-assignment-operators": "^7.22.5", + "@babel/plugin-transform-member-expression-literals": "^7.22.5", + "@babel/plugin-transform-modules-amd": "^7.22.5", + "@babel/plugin-transform-modules-commonjs": "^7.22.5", + "@babel/plugin-transform-modules-systemjs": "^7.22.5", + "@babel/plugin-transform-modules-umd": "^7.22.5", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.22.5", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.22.5", + "@babel/plugin-transform-numeric-separator": "^7.22.5", + "@babel/plugin-transform-object-rest-spread": "^7.22.5", + "@babel/plugin-transform-object-super": "^7.22.5", + "@babel/plugin-transform-optional-catch-binding": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.22.6", + "@babel/plugin-transform-parameters": "^7.22.5", + "@babel/plugin-transform-private-methods": "^7.22.5", + "@babel/plugin-transform-private-property-in-object": "^7.22.5", + "@babel/plugin-transform-property-literals": "^7.22.5", + "@babel/plugin-transform-regenerator": "^7.22.5", + "@babel/plugin-transform-reserved-words": "^7.22.5", + "@babel/plugin-transform-shorthand-properties": "^7.22.5", + "@babel/plugin-transform-spread": "^7.22.5", + "@babel/plugin-transform-sticky-regex": "^7.22.5", + "@babel/plugin-transform-template-literals": "^7.22.5", + "@babel/plugin-transform-typeof-symbol": "^7.22.5", + "@babel/plugin-transform-unicode-escapes": "^7.22.5", + "@babel/plugin-transform-unicode-property-regex": "^7.22.5", + "@babel/plugin-transform-unicode-regex": "^7.22.5", + "@babel/plugin-transform-unicode-sets-regex": "^7.22.5", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.4", + "babel-plugin-polyfill-corejs3": "^0.8.2", + "babel-plugin-polyfill-regenerator": "^0.5.1", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6.tgz", + "integrity": "sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", + "dev": true + }, + "node_modules/@babel/runtime": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", + "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "dependencies": { + "regenerator-runtime": "^0.13.11" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.5.tgz", + "integrity": "sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.22.5", + "@babel/parser": "^7.22.5", + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.4.tgz", + "integrity": "sha512-VJ4XsrD+nOvlXyLzmLzUs/0qjFS4sK30te5yEFlvbbUNEgKaVb2BHZUpAL+ttLPQAHNrsI3zZisbfha5Cvr8vg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.4", + "@babel/parser": "^7.25.4", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.4", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.4.tgz", + "integrity": "sha512-NFtZmZsyzDPJnk9Zg3BbTfKKc9UlHYzD0E//p2Z3B9nCwwtJW9T0gVbCz8+fBngnn4zf1Dr3IK8PHQQHq0lDQw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.4", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.4.tgz", + "integrity": "sha512-zQ1ijeeCXVEh+aNL0RlmkPkG8HUiDcU2pzQQFjtbntgAczRASFzj4H+6+bV+dy1ntKR14I/DypeuRG1uma98iQ==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cds/city": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@cds/city/-/city-1.1.0.tgz", + "integrity": "sha512-S9K+Q39BGOghyLHmR0Wdcmu1i1noSUk8HcvMj+3IaohZw02WFd99aPTQDHJeseXrXZP3CNovaSlePI0R11NcFg==", + "optional": true + }, + "node_modules/@cds/core": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/@cds/core/-/core-6.13.0.tgz", + "integrity": "sha512-Zq6LMfaGNGXpjZdPu0rbb7T41FNVVyNi2D7VUtn+0s2g76liLH1DyWpVYfI2eM7AithlB0SHEhb9Cc6hHAdhZw==", + "dependencies": { + "lit": "^2.1.3", + "ramda": "^0.29.0", + "tslib": "^2.3.1" + }, + "optionalDependencies": { + "@cds/city": "^1.1.0", + "modern-normalize": "1.1.0" + } + }, + "node_modules/@ckeditor/ckeditor5-adapter-ckfinder": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-adapter-ckfinder/-/ckeditor5-adapter-ckfinder-40.2.0.tgz", + "integrity": "sha512-YKdydg4DzaMk91saOL55KBNQE3St2NEj1E9hlk9CzHKQaHc79dYzHDNBolSE7ZmzkNJ4ToVbY7kRW5CDGfG5Rg==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-angular": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-angular/-/ckeditor5-angular-7.0.1.tgz", + "integrity": "sha512-bHBmBMa9PAXk1MMjeq+9nV/HVWdwv36kRjpOr4JUiYYxRFdtPBXWj+3Jb9TUymyWchhxMA440iYJVoYgVw3lOA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0", + "@angular/forms": ">=13.0.0", + "@ckeditor/ckeditor5-core": ">=37.0.0", + "@ckeditor/ckeditor5-engine": ">=37.0.0", + "@ckeditor/ckeditor5-utils": ">=37.0.0", + "@ckeditor/ckeditor5-watchdog": ">=37.0.0", + "rxjs": ">=6.0.0" + } + }, + "node_modules/@ckeditor/ckeditor5-autoformat": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-autoformat/-/ckeditor5-autoformat-40.2.0.tgz", + "integrity": "sha512-F3w5k7ti5l6V8U07eSQ3gup3ivltRZQXdtvstBXMmTzDb2ceazNcUDLb6TKSHp5y30ETN0dRGgbhx9xiDL0TXg==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-basic-styles": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-40.2.0.tgz", + "integrity": "sha512-P7jYddLnRpaR4zVCqDa8InsZ6YNRHdF0RrX6+Uz81+A1IfyfmSd+5IaiLxxdnFWQ4JlEhJutjy9vMwSmOhZocQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-block-quote": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-40.2.0.tgz", + "integrity": "sha512-t03Yp+MeAyQhwdGZqUlkJEx25VSiigpzkIGGOhccSaTIIZ9XcWDkrTevDhwA4Pq4Q9IRQ8Loj3KCVSBuAqkBgw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-build-classic": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-40.2.0.tgz", + "integrity": "sha512-b9zt1kU0S2Azco8mXraxj56pctHRs9y/XfdVrpFzxiRbbzyBZ42WgX1ThJNTqH6WkXCxDPYSbqPhNIvPHpuEyg==", + "dependencies": { + "@ckeditor/ckeditor5-adapter-ckfinder": "40.2.0", + "@ckeditor/ckeditor5-autoformat": "40.2.0", + "@ckeditor/ckeditor5-basic-styles": "40.2.0", + "@ckeditor/ckeditor5-block-quote": "40.2.0", + "@ckeditor/ckeditor5-ckbox": "40.2.0", + "@ckeditor/ckeditor5-ckfinder": "40.2.0", + "@ckeditor/ckeditor5-cloud-services": "40.2.0", + "@ckeditor/ckeditor5-easy-image": "40.2.0", + "@ckeditor/ckeditor5-editor-classic": "40.2.0", + "@ckeditor/ckeditor5-essentials": "40.2.0", + "@ckeditor/ckeditor5-heading": "40.2.0", + "@ckeditor/ckeditor5-image": "40.2.0", + "@ckeditor/ckeditor5-indent": "40.2.0", + "@ckeditor/ckeditor5-link": "40.2.0", + "@ckeditor/ckeditor5-list": "40.2.0", + "@ckeditor/ckeditor5-media-embed": "40.2.0", + "@ckeditor/ckeditor5-paragraph": "40.2.0", + "@ckeditor/ckeditor5-paste-from-office": "40.2.0", + "@ckeditor/ckeditor5-table": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-ckbox": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckbox/-/ckeditor5-ckbox-40.2.0.tgz", + "integrity": "sha512-w/A3RA7qpR7Scl4hgUTt8j+oV7oD9IFPNGTpp0xoyfWEV8Ymm2NrMAvV0PAJiavYS3+FT4GO4RBOM6BvLHuV3w==", + "dependencies": { + "blurhash": "2.0.5", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ckfinder": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ckfinder/-/ckeditor5-ckfinder-40.2.0.tgz", + "integrity": "sha512-kiW5TZOLHYd6hhWeDIrep8FXLo0q14b0e0Jit0XSi3z4PQfdDSRk9UuMJPkkf4EdF3PUSdMJ9bccJG76DYXzFQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-40.2.0.tgz", + "integrity": "sha512-8/xPH9/i86ukcEiHdmTgNuPVJeYTrivbx5ZYqycPO4Eem7VM99gIbOe7pIYpuV+klr9ymVxIHbGyTJDJ3oUO8A==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "@ckeditor/ckeditor5-widget": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-cloud-services": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-cloud-services/-/ckeditor5-cloud-services-40.2.0.tgz", + "integrity": "sha512-xrPQjFGGy1ZfXyKIMw0uzn7OIriSv13YMw0M2ZTh+V1jRN1HW9KzzNb2DlQc+6wQfRk0bq69XGLp3M296/cVTQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-core": { + "version": "43.0.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-43.0.0.tgz", + "integrity": "sha512-UbOnWwB8RIjipDTuFCPVqJtSnIhuCf5DCUa+05JqMdKzlqj3pJC+iBsvGbxtk6DdzSr8q1CUHwhJxlXfs3BSLg==", + "peer": true, + "dependencies": { + "@ckeditor/ckeditor5-engine": "43.0.0", + "@ckeditor/ckeditor5-utils": "43.0.0", + "@ckeditor/ckeditor5-watchdog": "43.0.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-easy-image": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-easy-image/-/ckeditor5-easy-image-40.2.0.tgz", + "integrity": "sha512-bE9YHGYEY1ql5mIqZSI2fkoBA4th28M0GDaJutwJYKM3t+Bost3Zh1UfmYKE2kvYgmeLY1L3hjQpN9w7NYyLpw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-editor-classic": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-40.2.0.tgz", + "integrity": "sha512-dftfDBxANOgqgQZ4SB3YTsEV/XX1u0g9jopbOBwqIABnVVa8zoGcktgFdGnLUFk51sL65baSx2z8Z1NNYdZcFQ==", + "dependencies": { + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-engine": { + "version": "43.0.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-43.0.0.tgz", + "integrity": "sha512-0CcNbxxNjrmxytBPjh49ZELwyoE8lFSCFx+44CGRicY+GYeg45+sIUiyY0rWiBaxukfVajl1sYlctDVGezP9Bg==", + "peer": true, + "dependencies": { + "@ckeditor/ckeditor5-utils": "43.0.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-40.2.0.tgz", + "integrity": "sha512-GjTRaKNX8QEDJ3YYKG3GfPZfGHrcigGBxbo+1WDT7NaOsR2DA/CIZfHlAPfgJDAMV17bhWsT3gy3+oQZsExtnQ==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-enter/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-essentials": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-40.2.0.tgz", + "integrity": "sha512-7iUUy0Uwiei4yLrn145SOcyzriMeVFVc5ontQkxQE5b9alFdAc/6ZoDPZqwD7V0zi5RQ/2YsoVMRLFa4hbPfNA==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-heading": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-40.2.0.tgz", + "integrity": "sha512-uDT1sttMy+KrKi90jnqEI43886o1wfKrROWqaMbmKOerTbIi58GNH9LvX04sf1RyHV3+3566RRmB248fsLkYjA==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-image": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-image/-/ckeditor5-image-40.2.0.tgz", + "integrity": "sha512-0Dunw1o5k2+5Q5XiWLDG1r8k9awosfIFuDZwqKJGWtDaNE4QQbJ9+iJSwiiRw2QjcGr7D3JdH7xwJZFra7kYmA==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-indent": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-40.2.0.tgz", + "integrity": "sha512-gSlRGoyAslB2OpqghimIY6Oiflf3Z2/MdLBzvFipU5N4X66cL29HuWZc/bOkcFzWwNeDK5LgzfLdvXNzkdv5Xw==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-link": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-link/-/ckeditor5-link-40.2.0.tgz", + "integrity": "sha512-/r4Ti9USdrURBX+qutvyDGOb75sNuSgtXdI8xK503EVfx5yBIi6qsYIYWoFvnGJKkLYkVo+940ilduhwzq0M7g==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-list": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-list/-/ckeditor5-list-40.2.0.tgz", + "integrity": "sha512-lsQWSLSFRHRQ2AxA6vgTib9YELjF2J5jpR6H4RDW1gM//dL3FjvLxKPPN/V7rMcp15rrpSiOya+qB99l24DEpQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-media-embed": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-media-embed/-/ckeditor5-media-embed-40.2.0.tgz", + "integrity": "sha512-ORY7VebL7UTuBG/4++UxzqEKjnlZZKAFqUrIom7xXpQNfo6oJFtZLnKYwESZ6iNk7NBOAeiHEecP2tKWyFQd1g==", + "dependencies": { + "@ckeditor/ckeditor5-ui": "40.2.0", + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-40.2.0.tgz", + "integrity": "sha512-NotxWP1cKvbJSY1UwdTe/Oy1NnAj9Etsi4Z7XA908EvCsNSnFtzdMhYzLhFZJ18avrQFDa7PpSKSyN3M64CbSA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-paste-from-office": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-40.2.0.tgz", + "integrity": "sha512-kdk7uJlSa9mvyuNAwmIfV6Kc1tfWI6DbCs19jyseA/F0vySKibb0DsBVSZ7xa5ihcjphfJvwpypWYL0BYdYKLQ==", + "dependencies": { + "ckeditor5": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-40.2.0.tgz", + "integrity": "sha512-yaYCqhdMcoEH3BsilhweNdbOfuO/cexQ1r1/mYoBoW4CypIuAeq8J/3qLpvFaThmCRPzJBn1J7v2Yjs/0UnamA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-table": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-table/-/ckeditor5-table-40.2.0.tgz", + "integrity": "sha512-yODne7az/aJ9lsuI7w476pgGV2QBoH2tOKp3JFh/e2DdHC20637LCVd0cx8sUe3zk61X/eYPY+wOiRJx/mIUqg==", + "dependencies": { + "ckeditor5": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-40.2.0.tgz", + "integrity": "sha512-2E7LkmC4RHdenMUwow0EZDKxlbX00c5UHysUVT51EBGrXiJcN++0cqxQaeJzQ262oTDpk94qE5IZdGXt3ntzrw==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-typing/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-40.2.0.tgz", + "integrity": "sha512-K8oC9zrJokZD5Nl4uQjJMo8Couds0eHmfNI/go6iU4A4OAdDzph+W50QnyMed4etKnMdhvUSbnuZnPtQjnsvFA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "color-convert": "2.0.1", + "color-parse": "1.4.2", + "lodash-es": "4.17.21", + "vanilla-colorful": "0.7.2" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-ui/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-40.2.0.tgz", + "integrity": "sha512-k2VZS5x4SJtYk3zhdwHYg+D00DgD0iWR0H4qQgcWmQMFRipYvXJRixP3hSLZGJciQanPFeYcjZgxNQ+rU1s8ug==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-undo/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-40.2.0.tgz", + "integrity": "sha512-AdJSKvWEQbSSyA/DfxbCHRhFN6S4ew4kuYETO57e6AS3aOuYGLBRdu9Mub7IAQcOyy1LL6ktr9u5WEOoWS2h0w==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-upload/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-utils": { + "version": "43.0.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-43.0.0.tgz", + "integrity": "sha512-xupNfpUX3EGVVRycijYGOZXTaWEebHPwEMAfI5rduYAUAf63AbTpL4s7sakxFaHp1SS3bQWN+j1QiXh/TBhRAw==", + "peer": true, + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-watchdog": { + "version": "43.0.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-43.0.0.tgz", + "integrity": "sha512-sS+mnuWGZWpe04YbpGZWy3MpMzZ2eFDn911jo0+7nGbypuH8cqrFSZBCUZ4DyE7ghsZ2P6CgMTsUtz4G+kjeZw==", + "peer": true, + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-40.2.0.tgz", + "integrity": "sha512-okeUSwbnu6TUKvwBOl0YdED6Me0/vvs1ybfKZPNEJNwGl989iG0LQO4oYUye8BTCZvzCZ2cBTb1Cvnwr8KRcbg==", + "dependencies": { + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-enter": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/@ckeditor/ckeditor5-widget/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/@clr/angular": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@clr/angular/-/angular-16.0.0.tgz", + "integrity": "sha512-nEkRPnPBZWi+w6uV/eQefBRApcUZvCKEaktB2Me9JOhrXm1W6mR/HmSETe6rKZLvl+uHzu3H6XNk/tiNqDfRyg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "15 || 16", + "@angular/common": "15 || 16", + "@angular/core": "15 || 16", + "@cds/core": ">= 6.7.0", + "@clr/ui": "16.0.0" + } + }, + "node_modules/@clr/icons": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@clr/icons/-/icons-13.0.0.tgz", + "integrity": "sha512-cpxbGXm6LgyZBwZvphzOJ75N/vz4qVRiln0h/ENHxjwer1/zRTkjhH3/VB5gZ5N6qC6jlX5r9ieKmDQ4aJkxxQ==", + "peerDependencies": { + "@webcomponents/custom-elements": "^1.0.0" + } + }, + "node_modules/@clr/ui": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@clr/ui/-/ui-16.0.0.tgz", + "integrity": "sha512-W9qd8UzTQKzymRm8gw8bNjVdo9tDIU4bfzzQo6VU+WtoJTymwb6v6SB4oSW9dhquKCpnuvAdQmBzrOHdnwWbqw==", + "peerDependencies": { + "@cds/core": "^6.7.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@ctrl/ngx-codemirror": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@ctrl/ngx-codemirror/-/ngx-codemirror-7.0.0.tgz", + "integrity": "sha512-qvIWtSTw/8fdXDnofBTX6LmTW9646HhawG2+Qyagf1vH40jCy0ZbHnkC20UYOVpUX+QCd1e/PQpkvWQ/1iGFzQ==", + "dependencies": { + "@types/codemirror": "^5.60.7", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=16.0.0-0", + "@angular/forms": ">=16.0.0-0", + "codemirror": "^5.65.9" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.17.tgz", + "integrity": "sha512-wHsmJG/dnL3OkpAcwbgoBTTMHVi4Uyou3F5mf58ZtmUyIKfcdA7TROav/6tCzET4A3QW2Q2FC+eFneMU+iyOxg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.17.tgz", + "integrity": "sha512-9np+YYdNDed5+Jgr1TdWBsozZ85U1Oa3xW0c7TWqH0y2aGghXtZsuT8nYRbzOMcl0bXZXjOGbksoTtVOlWrRZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.17.tgz", + "integrity": "sha512-O+FeWB/+xya0aLg23hHEM2E3hbfwZzjqumKMSIqcHbNvDa+dza2D0yLuymRBQQnC34CWrsJUXyH2MG5VnLd6uw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.17.tgz", + "integrity": "sha512-M9uJ9VSB1oli2BE/dJs3zVr9kcCBBsE883prage1NWz6pBS++1oNn/7soPNS3+1DGj0FrkSvnED4Bmlu1VAE9g==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.17.tgz", + "integrity": "sha512-XDre+J5YeIJDMfp3n0279DFNrGCXlxOuGsWIkRb1NThMZ0BsrWXoTg23Jer7fEXQ9Ye5QjrvXpxnhzl3bHtk0g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.17.tgz", + "integrity": "sha512-cjTzGa3QlNfERa0+ptykyxs5A6FEUQQF0MuilYXYBGdBxD3vxJcKnzDlhDCa1VAJCmAxed6mYhA2KaJIbtiNuQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.17.tgz", + "integrity": "sha512-sOxEvR8d7V7Kw8QqzxWc7bFfnWnGdaFBut1dRUYtu+EIRXefBc/eIsiUiShnW0hM3FmQ5Zf27suDuHsKgZ5QrA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.17.tgz", + "integrity": "sha512-2d3Lw6wkwgSLC2fIvXKoMNGVaeY8qdN0IC3rfuVxJp89CRfA3e3VqWifGDfuakPmp90+ZirmTfye1n4ncjv2lg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.17.tgz", + "integrity": "sha512-c9w3tE7qA3CYWjT+M3BMbwMt+0JYOp3vCMKgVBrCl1nwjAlOMYzEo+gG7QaZ9AtqZFj5MbUc885wuBBmu6aADQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.17.tgz", + "integrity": "sha512-1DS9F966pn5pPnqXYz16dQqWIB0dmDfAQZd6jSSpiT9eX1NzKh07J6VKR3AoXXXEk6CqZMojiVDSZi1SlmKVdg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.17.tgz", + "integrity": "sha512-EvLsxCk6ZF0fpCB6w6eOI2Fc8KW5N6sHlIovNe8uOFObL2O+Mr0bflPHyHwLT6rwMg9r77WOAWb2FqCQrVnwFg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.17.tgz", + "integrity": "sha512-e0bIdHA5p6l+lwqTE36NAW5hHtw2tNRmHlGBygZC14QObsA3bD4C6sXLJjvnDIjSKhW1/0S3eDy+QmX/uZWEYQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.17.tgz", + "integrity": "sha512-BAAilJ0M5O2uMxHYGjFKn4nJKF6fNCdP1E0o5t5fvMYYzeIqy2JdAP88Az5LHt9qBoUa4tDaRpfWt21ep5/WqQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.17.tgz", + "integrity": "sha512-Wh/HW2MPnC3b8BqRSIme/9Zhab36PPH+3zam5pqGRH4pE+4xTrVLx2+XdGp6fVS3L2x+DrsIcsbMleex8fbE6g==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.17.tgz", + "integrity": "sha512-j/34jAl3ul3PNcK3pfI0NSlBANduT2UO5kZ7FCaK33XFv3chDhICLY8wJJWIhiQ+YNdQ9dxqQctRg2bvrMlYgg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.17.tgz", + "integrity": "sha512-QM50vJ/y+8I60qEmFxMoxIx4de03pGo2HwxdBeFd4nMh364X6TIBZ6VQ5UQmPbQWUVWHWws5MmJXlHAXvJEmpQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.17.tgz", + "integrity": "sha512-/jGlhWR7Sj9JPZHzXyyMZ1RFMkNPjC6QIAan0sDOtIo2TYk3tZn5UDrkE0XgsTQCxWTTOcMPf9p6Rh2hXtl5TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.17.tgz", + "integrity": "sha512-rSEeYaGgyGGf4qZM2NonMhMOP/5EHp4u9ehFiBrg7stH6BYEEjlkVREuDEcQ0LfIl53OXLxNbfuIj7mr5m29TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.17.tgz", + "integrity": "sha512-Y7ZBbkLqlSgn4+zot4KUNYst0bFoO68tRgI6mY2FIM+b7ZbyNVtNbDP5y8qlu4/knZZ73fgJDlXID+ohY5zt5g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.17.tgz", + "integrity": "sha512-bwPmTJsEQcbZk26oYpc4c/8PvTY3J5/QK8jM19DVlEsAB41M39aWovWoHtNm78sd6ip6prilxeHosPADXtEJFw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.17.tgz", + "integrity": "sha512-H/XaPtPKli2MhW+3CQueo6Ni3Avggi6hP/YvgkEe1aSaxw+AeO8MFjq8DlgfTd9Iz4Yih3QCZI6YLMoyccnPRg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.17.tgz", + "integrity": "sha512-fGEb8f2BSA3CW7riJVurug65ACLuQAzKq0SSqkY2b2yHHH0MzDfbLyKIGzHwOI/gkHcxM/leuSW6D5w/LMNitA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.2.1.tgz", + "integrity": "sha512-wx4aBmgeGvFmOKucFKY+8VFJSYZxs9poN3SDNQFF6lT6NrQUnHiPB2PWz2sc4ieEcAaYYzN+1uWahEeTq2aRIQ==" + }, + "node_modules/@lit/reactive-element": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", + "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.0.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.14.tgz", + "integrity": "sha512-3+zPP3Wir46qrZ3FEiTz5/emSoVHYUCH+WgBmJ57mZCx1qBOYh2VgllnPr/Yusl1sc/jUZjdwq/es/9ZNw+zDQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "typescript": ">=4.9.3 <5.2", + "webpack": "^5.54.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-4.1.0.tgz", + "integrity": "sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^6.0.0", + "lru-cache": "^7.4.4", + "npm-pick-manifest": "^8.0.0", + "proc-log": "^3.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/move-file/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-6.0.2.tgz", + "integrity": "sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==", + "dev": true, + "dependencies": { + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-6.0.2.tgz", + "integrity": "sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/promise-spawn": "^6.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^3.0.0", + "which": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/which/-/which-3.0.1.tgz", + "integrity": "sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@schematics/angular": { + "version": "16.2.14", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-16.2.14.tgz", + "integrity": "sha512-YqIv727l9Qze8/OL6H9mBHc2jVXzAGRNBYnxYWqWhLbfvuVbbldo6NNIIjgv6lrl2LJSdPAAMNOD5m/f6210ug==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "16.2.14", + "@angular-devkit/schematics": "16.2.14", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", + "integrity": "sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.2.1.tgz", + "integrity": "sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-1.0.0.tgz", + "integrity": "sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "make-fetch-happen": "^11.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@sigstore/sign/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@sigstore/sign/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@sigstore/sign/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/@sigstore/sign/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@sigstore/tuf": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-1.0.3.tgz", + "integrity": "sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.2.0", + "tuf-js": "^1.1.7" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true + }, + "node_modules/@swimlane/ngx-charts": { + "version": "20.5.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-20.5.0.tgz", + "integrity": "sha512-PNBIHdu/R3ceD7jnw1uCBVOj4k3T6IxfdW6xsDsglGkZyoWMEEq4tLoEurjLEKzmDtRv9c35kVNOXy0lkOuXeA==", + "dependencies": { + "d3-array": "^3.1.1", + "d3-brush": "^3.0.0", + "d3-color": "^3.1.0", + "d3-ease": "^3.0.1", + "d3-format": "^3.1.0", + "d3-hierarchy": "^3.1.0", + "d3-interpolate": "^3.0.1", + "d3-sankey": "^0.12.3", + "d3-scale": "^4.0.2", + "d3-selection": "^3.0.0", + "d3-shape": "^3.2.0", + "d3-time-format": "^3.0.0", + "d3-transition": "^3.0.1", + "rfdc": "^1.3.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/animations": ">=12.0.0", + "@angular/cdk": ">=12.0.0", + "@angular/common": ">=12.0.0", + "@angular/core": ">=12.0.0", + "@angular/forms": ">=12.0.0", + "@angular/platform-browser": ">=12.0.0", + "@angular/platform-browser-dynamic": ">=12.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tufjs/canonical-json": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-1.0.0.tgz", + "integrity": "sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-1.0.4.tgz", + "integrity": "sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "1.0.0", + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@tufjs/models/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/ckeditor": { + "version": "4.9.10", + "resolved": "https://registry.npmjs.org/@types/ckeditor/-/ckeditor-4.9.10.tgz", + "integrity": "sha512-dcOPCXM0Cr5Z0i6eF/aW5LvECrS+cdl2Gi7lU+rEUNWby0w9Yl6mBubjrs29OVAducpuZjB4mfDayE+o4/gGdQ==", + "peer": true + }, + "node_modules/@types/codemirror": { + "version": "5.60.15", + "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz", + "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==", + "dependencies": { + "@types/tern": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.0.tgz", + "integrity": "sha512-gi6WQJ7cHRgZxtkQEoyHMppPjq9Kxo5Tjn2prSKDSmZrCz8TZ3jSRCeTJm+WoM+oB0WG37bRqLzaaU3q7JypGg==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.15", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.15.tgz", + "integrity": "sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", + "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", + "dev": true + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.13.tgz", + "integrity": "sha512-aJ3wj8tXMpBrzQ5ghIaqMisD8C3FIrcO6sDKHqFbuqAsI7yOxj0fA7MrRCPLZHIVUjERIwsMmGn/vB0UQ9u0Hg==", + "dev": true, + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true + }, + "node_modules/@types/node": { + "version": "20.16.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.1.tgz", + "integrity": "sha512-zJDo7wEadFtSyNz5QITDfRcrhqDvQI1xQNQ0VoizPjM/dVAODqqIUWbJPkvsxmTI0MYRGRikcdjMPhOssnPejQ==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "dev": true + }, + "node_modules/@types/raf": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", + "optional": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "dev": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/tern": { + "version": "0.23.9", + "resolved": "https://registry.npmjs.org/@types/tern/-/tern-0.23.9.tgz", + "integrity": "sha512-ypzHFE/wBzh+BlH6rrBgS5I/Z7RD21pGhZ2rltb/+ZrVM1awdZwjx7hE5XfuYgHWk9uvV5HLZN3SloevCAp3Bw==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vitejs/plugin-basic-ssl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.0.1.tgz", + "integrity": "sha512-pcub+YbFtFhaGRTo1832FQHQSHvMrlb43974e2eS8EKleR3p1cDdkJFPci1UhwkEf1J9Bz+wKBSzqpKp7nNj2A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", + "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", + "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.6", + "@webassemblyjs/helper-api-error": "1.11.6", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", + "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/wasm-gen": "1.12.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.6", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", + "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/helper-wasm-section": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-opt": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1", + "@webassemblyjs/wast-printer": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", + "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", + "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-buffer": "1.12.1", + "@webassemblyjs/wasm-gen": "1.12.1", + "@webassemblyjs/wasm-parser": "1.12.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", + "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@webassemblyjs/helper-api-error": "1.11.6", + "@webassemblyjs/helper-wasm-bytecode": "1.11.6", + "@webassemblyjs/ieee754": "1.11.6", + "@webassemblyjs/leb128": "1.11.6", + "@webassemblyjs/utf8": "1.11.6" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", + "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.12.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webcomponents/custom-elements": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@webcomponents/custom-elements/-/custom-elements-1.6.0.tgz", + "integrity": "sha512-CqTpxOlUCPWRNUPZDxT5v2NnHXA4oox612iUGnmTUGQFhZ1Gkj8kirtl/2wcF6MqX7+PqqicZzOCBKKfIn0dww==" + }, + "node_modules/@webcomponents/webcomponentsjs": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/@webcomponents/webcomponentsjs/-/webcomponentsjs-2.8.0.tgz", + "integrity": "sha512-loGD63sacRzOzSJgQnB9ZAhaQGkN7wl2Zuw7tsphI5Isa0irijrRo6EnJii/GgjGefIFO8AIO7UivzRhFaEk9w==" + }, + "node_modules/@wessberg/ts-evaluator": { + "version": "0.0.27", + "resolved": "https://registry.npmjs.org/@wessberg/ts-evaluator/-/ts-evaluator-0.0.27.tgz", + "integrity": "sha512-7gOpVm3yYojUp/Yn7F4ZybJRxyqfMNf0LXK5KJiawbPfL0XTsJV+0mgrEDjOIR6Bi0OYk2Cyg4tjFu1r8MCZaA==", + "deprecated": "this package has been renamed to ts-evaluator. Please install ts-evaluator instead", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "jsdom": "^16.4.0", + "object-path": "^0.11.5", + "tslib": "^2.0.3" + }, + "engines": { + "node": ">=10.1.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/wessberg/ts-evaluator?sponsor=1" + }, + "peerDependencies": { + "typescript": ">=3.2.x || >= 4.x" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@wessberg/ts-evaluator/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", + "dev": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/angular-gridster2": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/angular-gridster2/-/angular-gridster2-16.0.0.tgz", + "integrity": "sha512-Us6nwxS+84W49nRXk/Dcm7KxgVmJNzkMwLDN2/FfoRlV1nhcv8j7kM2llhSpelwGPDyw/T64BePFw2Dx03QaTQ==", + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0", + "rxjs": "^7.0.0" + } + }, + "node_modules/angularx-qrcode": { + "version": "16.0.2", + "resolved": "https://registry.npmjs.org/angularx-qrcode/-/angularx-qrcode-16.0.2.tgz", + "integrity": "sha512-FztOM7vjNu88sGxUU5jG2I+A9TxZBXXYBWINjpwIBbTL+COMgrtzXnScG7TyQeNknv5w3WFJWn59PcngRRYVXA==", + "dependencies": { + "qrcode": "1.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": "^16.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ansi-styles/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.14.tgz", + "integrity": "sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.5", + "caniuse-lite": "^1.0.30001464", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.4", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", + "optional": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/blurhash": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/blurhash/-/blurhash-2.0.5.tgz", + "integrity": "sha512-cRygWd7kGBQO3VEhPiTgq4Wc43ctsM+o46urrmPOiuAe+07fzlSB9OJVdpgDL0jPqXUVQ9ht7aq7kxOeJHRK+w==" + }, + "node_modules/body-parser": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", + "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/bootstrap": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.3.tgz", + "integrity": "sha512-8HLCdWgyoMguSO9o+aH+iuZ+aht+mzW0u3HIMzVu7Srrpv7EBBxTnrFlSCskwdY1+EOFQSm7uMJhNQHkdPcmjg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ], + "peerDependencies": { + "@popperjs/core": "^2.11.8" + } + }, + "node_modules/bootstrap-icons": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.11.3.tgz", + "integrity": "sha512-+3lpHrCw/it2/7lBL15VR0HEumaBss0+f/Lb6ZvHISn1mlK83jjFpooTLsMWbIjJMDjDjOExMsTxnXSIT4k4ww==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } + ] + }, + "node_modules/boxicons": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/boxicons/-/boxicons-2.1.4.tgz", + "integrity": "sha512-BvJNfYfnE4g9WQ7GL91fftxMOTwAleWlPFwvQJPYb/Ju7aLjlQ/Eu55AH9JLNk/OR82z+ZSq4TbKzbV/e5Rr0A==", + "dependencies": { + "@webcomponents/webcomponentsjs": "^2.0.2", + "prop-types": "^15.6.0", + "react": "^16.0.0", + "react-dom": "^16.0.0", + "react-interactive": "^0.8.1", + "react-router-dom": "^4.2.2" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", + "bin": { + "btoa": "bin/btoa.js" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", + "integrity": "sha512-wxXCdllwGhI2kCC0MnvTGYTMvnVZTvqgypkiTI8Pa5tcz2i6VqsqwYGgqwXji+4RgCzms6EajE4IxiUH6HH8nQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "17.1.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-17.1.4.tgz", + "integrity": "sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^7.7.1", + "minipass": "^7.0.3", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/canvg": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", + "optional": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "@types/raf": "^3.4.0", + "core-js": "^3.8.3", + "raf": "^3.4.1", + "regenerator-runtime": "^0.13.7", + "rgbcolor": "^1.0.1", + "stackblur-canvas": "^2.0.0", + "svg-pathdata": "^6.0.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chart.js": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.4.0.tgz", + "integrity": "sha512-mJsRm2apQm5mwz2OgYqGNG4erZh/qljcRZkWSa0kLkFr3UC3e1wKRMgnIh6WdhUrNu0w/JT9PkjLyylqEqHXEQ==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ckeditor5": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-40.2.0.tgz", + "integrity": "sha512-JaFuY/6DX1wbA6yRB2xQVMr+9W1C3HvSX4AT10ccoKBKe9OctIatekDt2ztV+cMaVHLF1wocskS/Ql9XFRy2Eg==", + "dependencies": { + "@ckeditor/ckeditor5-clipboard": "40.2.0", + "@ckeditor/ckeditor5-core": "40.2.0", + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-enter": "40.2.0", + "@ckeditor/ckeditor5-paragraph": "40.2.0", + "@ckeditor/ckeditor5-select-all": "40.2.0", + "@ckeditor/ckeditor5-typing": "40.2.0", + "@ckeditor/ckeditor5-ui": "40.2.0", + "@ckeditor/ckeditor5-undo": "40.2.0", + "@ckeditor/ckeditor5-upload": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "@ckeditor/ckeditor5-watchdog": "40.2.0", + "@ckeditor/ckeditor5-widget": "40.2.0" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-core": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-40.2.0.tgz", + "integrity": "sha512-0fqIaN+ZhkXXA3mpBN+alycBzPMc8ruO8VrP0OnvCjowqZVS2HXC2AaXNBdxc75xGI3ScXIor7FsgFHxVJIYYQ==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "40.2.0", + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-engine": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-40.2.0.tgz", + "integrity": "sha512-sgboUX8Ps+LcEgywyT3BeK1nzLHjNVIiZU1qvRxR3ixzIw4w2xRNXCGfESWLW5Y5rv9+ypUCrX61oLnZU64PQQ==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "40.2.0", + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-utils": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-40.2.0.tgz", + "integrity": "sha512-f+kTJBwwk7Y/LXm8pEPxBTXVlJwQrH7Levzye9zxEDB0Jtj7+brGr87o666fPmL/ATQc5M+VPhbvnk2sOv7WKg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/ckeditor5/node_modules/@ckeditor/ckeditor5-watchdog": { + "version": "40.2.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-watchdog/-/ckeditor5-watchdog-40.2.0.tgz", + "integrity": "sha512-ets7o2dUR7l23G9o/RAbu+gJzUkc2Ul269E3TEhZnbQXFjshvEGK2kzuay7I+/waL3ADuYe4zuoBqsqdPoAhfg==", + "dependencies": { + "lodash-es": "4.17.21" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/codemirror": { + "version": "5.65.17", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.65.17.tgz", + "integrity": "sha512-1zOsUx3lzAOu/gnMAZkQ9kpIHcPYOc9y1Fbm2UVk5UBPkdq380nhkelG0qUwm1f7wPvTbndu9ZYlug35EwAZRQ==", + "peer": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-parse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.4.2.tgz", + "integrity": "sha512-RI7s49/8yqDj3fECFZjUI1Yi0z/Gq1py43oNJivAIIDSyJiOZLfYCRQEgn8HEVAj++PcRe8AnL2XF0fRJ3BTnA==", + "dependencies": { + "color-name": "^1.0.0" + } + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/connect/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/connect/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/core-js": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.38.1.tgz", + "integrity": "sha512-OP35aUorbU3Zvlx7pjsFdu1rGNnD4pgw/CWoYzRY3t2EzoVT7shKHY1dlAy3f41cGIO7ZDPQimhGFTlEYkG/Hw==", + "hasInstallScript": true, + "optional": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, + "dependencies": { + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/critters": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.20.tgz", + "integrity": "sha512-CImNRorKOl5d8TWcnAz5n5izQ6HFsvz29k327/ELy6UFcmbiZNOsinaKvzv16WZR0P6etfSWYzE47C4/56B3Uw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-line-break": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-sankey": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", + "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "dependencies": { + "d3-array": "1 - 2", + "d3-shape": "^1.2.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-sankey/node_modules/d3-path": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" + }, + "node_modules/d3-sankey/node_modules/d3-shape": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", + "dependencies": { + "d3-path": "1" + } + }, + "node_modules/d3-sankey/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/d3-time-format/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/d3-time-format/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/d3-time-format/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-hover": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-hover/-/detect-hover-1.0.3.tgz", + "integrity": "sha512-HtLoY+tClgYucJNiovNICGWFp9nOGVmHY44s7L62iPqORXM9vujeWFaVcqtA7XRvp/2Y+4RBUfHbDKFGN+xxZQ==" + }, + "node_modules/detect-it": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/detect-it/-/detect-it-3.0.7.tgz", + "integrity": "sha512-RxpgcdbatUX6epJE09K16iJqF7x6iEcEdoL18FR2zpBO4JhnL7aMOAUoUEyexdtbWOSfTmoDWmeD6mwRBQyRXg==", + "dependencies": { + "detect-hover": "^1.0.3", + "detect-passive-events": "^1.0.5", + "detect-pointer": "^1.0.3", + "detect-touch-events": "^2.0.2" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/detect-passive-events": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/detect-passive-events/-/detect-passive-events-1.0.5.tgz", + "integrity": "sha512-foW7Q35wwOCxVzW0xLf5XeB5Fhe7oyRgvkBYdiP9IWgLMzjqUqTvsJv9ymuEWGjY6AoDXD3OC294+Z9iuOw0QA==" + }, + "node_modules/detect-pointer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-pointer/-/detect-pointer-1.0.3.tgz", + "integrity": "sha512-d0o/Puo3fiGSCXy6H039h9Kwz+mmYCGKZ/qtPFnpN3WfsumjC1C9b5KKvRu+aYnfdI8peqN/iAe7dPd85qIt2g==" + }, + "node_modules/detect-touch-events": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/detect-touch-events/-/detect-touch-events-2.0.2.tgz", + "integrity": "sha512-g8GWBkJLiIDRJfRXEdrd1wMXpNyGId2DkbfuwFahSb4OCvn717hyRJtAcEDISfp3zkwEhZ4Y4woHPA6DeyB3Fw==" + }, + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dijkstrajs": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.3.tgz", + "integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==" + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "dev": true, + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-to-image": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/dom-to-image/-/dom-to-image-2.6.0.tgz", + "integrity": "sha512-Dt0QdaHmLpjURjU7Tnu3AgYSF2LuOmksSGsUcE6ItvJoCWTBEmiMXcqBdNSAm9+QbbwD7JMoVsuuKX6ZVQv1qA==" + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", + "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==", + "optional": true + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.13", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz", + "integrity": "sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encode-utf8": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/encode-utf8/-/encode-utf8-1.0.3.tgz", + "integrity": "sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.5.5.tgz", + "integrity": "sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA==", + "dev": true, + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "dev": true, + "dependencies": { + "punycode": "^1.4.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "devOptional": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "node_modules/esbuild": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.17.tgz", + "integrity": "sha512-1GJtYnUxsJreHYA0Y+iQz2UEykonY66HNWOb0yXYZi9/kNrORUEHVg87eQsCtqh59PEJ5YVZJO98JHznMJSWjg==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.17", + "@esbuild/android-arm64": "0.18.17", + "@esbuild/android-x64": "0.18.17", + "@esbuild/darwin-arm64": "0.18.17", + "@esbuild/darwin-x64": "0.18.17", + "@esbuild/freebsd-arm64": "0.18.17", + "@esbuild/freebsd-x64": "0.18.17", + "@esbuild/linux-arm": "0.18.17", + "@esbuild/linux-arm64": "0.18.17", + "@esbuild/linux-ia32": "0.18.17", + "@esbuild/linux-loong64": "0.18.17", + "@esbuild/linux-mips64el": "0.18.17", + "@esbuild/linux-ppc64": "0.18.17", + "@esbuild/linux-riscv64": "0.18.17", + "@esbuild/linux-s390x": "0.18.17", + "@esbuild/linux-x64": "0.18.17", + "@esbuild/netbsd-x64": "0.18.17", + "@esbuild/openbsd-x64": "0.18.17", + "@esbuild/sunos-x64": "0.18.17", + "@esbuild/win32-arm64": "0.18.17", + "@esbuild/win32-ia32": "0.18.17", + "@esbuild/win32-x64": "0.18.17" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.18.17", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.18.17.tgz", + "integrity": "sha512-9OHGcuRzy+I8ziF9FzjfKLWAPbvi0e/metACVg9k6bK+SI4FFxeV6PcZsz8RIVaMD4YNehw+qj6UMR3+qj/EuQ==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", + "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", + "dev": true + }, + "node_modules/express": { + "version": "4.19.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", + "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.6.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-saver": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/file-saver/-/file-saver-2.0.5.tgz", + "integrity": "sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, + "dependencies": { + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/foreground-child": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz", + "integrity": "sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/guess-parser": { + "version": "0.4.22", + "resolved": "https://registry.npmjs.org/guess-parser/-/guess-parser-0.4.22.tgz", + "integrity": "sha512-KcUWZ5ACGaBM69SbqwVIuWGoSAgD+9iJnchR9j/IarVI1jHVeXv+bUXBIMeqVMSKt3zrn0Dgf9UpcOEpPBLbSg==", + "dev": true, + "dependencies": { + "@wessberg/ts-evaluator": "0.0.27" + }, + "peerDependencies": { + "typescript": ">=3.7.5" + } + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", + "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", + "dev": true, + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", + "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", + "dev": true + }, + "node_modules/highcharts": { + "version": "11.4.7", + "resolved": "https://registry.npmjs.org/highcharts/-/highcharts-11.4.7.tgz", + "integrity": "sha512-4FQTaV/9DtYal6U8rCgGeFWzzoL5QoKowpzyGlG0sp+UJKjm9G9t4bvyz+odvXt+YcqUvK9GEspdLoBnKSWGVA==" + }, + "node_modules/highcharts-angular": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/highcharts-angular/-/highcharts-angular-3.1.2.tgz", + "integrity": "sha512-f168ZhRVVlV7vJ2g0gDH3IaTNv84c91z6GYRWuER0Ep5kLalAUH0KDtFhrTOb6+sjue7BK8M7aPY74fiC4bGXA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=11.0.0", + "@angular/core": ">=11.0.0", + "highcharts": ">=9.0.0" + } + }, + "node_modules/history": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz", + "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==", + "dependencies": { + "@babel/runtime": "^7.1.2", + "loose-envify": "^1.2.0", + "resolve-pathname": "^3.0.0", + "tiny-invariant": "^1.0.2", + "tiny-warning": "^1.0.0", + "value-equal": "^1.0.1" + } + }, + "node_modules/hoist-non-react-statics": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" + }, + "node_modules/hosted-git-info": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-6.1.1.tgz", + "integrity": "sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html2canvas": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", + "optional": true, + "dependencies": { + "css-line-break": "^2.1.0", + "text-segmentation": "^1.0.3" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "dev": true, + "dependencies": { + "minimatch": "^9.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "node_modules/immutable": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jasmine-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-5.0.1.tgz", + "integrity": "sha512-D4bRej8CplwNtNGyTPD++cafJlZUphzZNV+MSAnbD3er4D0NjL4x9V+mu/SI+5129utnCBen23JwEuBZA9vlpQ==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jspdf": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", + "dependencies": { + "@babel/runtime": "^7.14.0", + "atob": "^2.1.2", + "btoa": "^1.2.1", + "fflate": "^0.4.8" + }, + "optionalDependencies": { + "canvg": "^3.0.6", + "core-js": "^3.6.0", + "dompurify": "^2.2.0", + "html2canvas": "^1.0.0-rc.5" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/karma": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", + "dev": true, + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.7.2", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", + "dev": true, + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz", + "integrity": "sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-jasmine/node_modules/jasmine-core": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "dev": true + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", + "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", + "dev": true, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/karma/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/launch-editor": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.1.tgz", + "integrity": "sha512-elBx2l/tp9z99X5H/qev8uyDywVh0VXAwEbjk8kJhnc5grOFkGh7aW6q55me9xnYbss261XtnUrysZ+XvGbhQA==", + "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" + } + }, + "node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", + "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", + "dev": true, + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/lit": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz", + "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==", + "dependencies": { + "@lit/reactive-element": "^1.6.0", + "lit-element": "^3.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz", + "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==", + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.1.0", + "@lit/reactive-element": "^1.3.0", + "lit-html": "^2.8.0" + } + }, + "node_modules/lit-element/node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/lit-html": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.0.tgz", + "integrity": "sha512-pwT/HwoxqI9FggTrYVarkBKFN9MlTUpLrDHubTmW4SrkL3kkqW5gxwbxMMUnbbRHBC0WTZnYHcjDSCM559VyfA==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/lit/node_modules/lit-html": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz", + "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==", + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.5" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.1.tgz", + "integrity": "sha512-mbVKXPmS0z0G4XqFDCTllmDQ6coZzn94aMlb0o/A4HEHJCKcanlDZwYJgwnkmgD3jyWhUgj9VsPrfd972yPffA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "dev": true + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/make-fetch-happen/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/cacache": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/make-fetch-happen/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-fetch-happen/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/make-fetch-happen/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-fetch-happen/node_modules/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-filename": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", + "dev": true, + "dependencies": { + "unique-slug": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/unique-slug": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "dependencies": { + "fs-monkey": "^1.0.4" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-fetch/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-fetch/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-flush/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/modern-normalize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz", + "integrity": "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==", + "optional": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", + "engines": { + "node": "*" + } + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ng-dynamic-component": { + "version": "10.7.0", + "resolved": "https://registry.npmjs.org/ng-dynamic-component/-/ng-dynamic-component-10.7.0.tgz", + "integrity": "sha512-shkht4L2nA632qo5GNendZdQXoHUBuKz6SLLh20qi5oESBm3b5AWyhHu0fb/7tb+f+zAcwtVVe1M0819/bnK9A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=14.1.3", + "@angular/core": ">=14.1.3", + "rxjs": ">=6.0.0" + } + }, + "node_modules/ng-multiselect-dropdown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ng-multiselect-dropdown/-/ng-multiselect-dropdown-1.0.0.tgz", + "integrity": "sha512-7Dg2NQKiKTllfqidP7dQxe35aIvQQmbnUWXamhhuRzqbhKl/LQUeQoXxkYxFUwQPFBR9MVb5RJjS3d5Pds1KmQ==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/ng2-charts": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-4.1.0.tgz", + "integrity": "sha512-GipJ92/qNuY+UocMVPC2ZHrQ23AZ6ftdr14ID3kuvwsQhFa2jjCaGrgIlP7KldpHuQi213LRa+ABe/N48Zo+PQ==", + "dependencies": { + "lodash-es": "^4.17.15", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": ">=14.0.0", + "@angular/common": ">=14.0.0", + "@angular/core": ">=14.0.0", + "chart.js": "^3.4.0 || ^4.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/ng2-ckeditor": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ng2-ckeditor/-/ng2-ckeditor-1.3.7.tgz", + "integrity": "sha512-3VdJLc/MUlFBbLg0rDwO3L+G3ofIn/zulV8rz/L4QVScQHpbJXGLJe6hIYNnAWOPaYFoGpczPC03YR+px3oJdQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@types/ckeditor": "^4.9.10" + } + }, + "node_modules/ng2-material-dropdown": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/ng2-material-dropdown/-/ng2-material-dropdown-1.0.0.tgz", + "integrity": "sha512-waKgEkKQwGZT0dqRAd3ZW+wueYs5Xw9owiPBSMdg5jru5DcKDpUqFaADMqqI7HPuzJCxNJSln6nXX1tMYDbXGA==", + "dependencies": { + "tslib": "^2.0.0" + } + }, + "node_modules/ng2-search-filter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/ng2-search-filter/-/ng2-search-filter-0.5.1.tgz", + "integrity": "sha512-noN8R+Gyxo5ZuboEOvq+u0zKio6pEf1IVYQTCZfAfXm6ONmzWu/M2xK0di9oVUprDbPBQXCGUuvD5i2GD+35HA==" + }, + "node_modules/ngx-chips": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ngx-chips/-/ngx-chips-3.0.0.tgz", + "integrity": "sha512-hBJg4m9kCtCfersQef7vr2Ve6j9ntFSoB5ktF8MyOQnpONAriIp46c3Tb2wdf/lMEB2Xmc45snfJKnxKh3zimg==", + "dependencies": { + "ng2-material-dropdown": ">=1.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": ">=10.1.5", + "@angular/common": ">=10.1.5", + "@angular/compiler": ">=10.1.5", + "@angular/core": ">=10.1.5", + "@angular/forms": ">=10.1.5" + } + }, + "node_modules/ngx-cookie-service": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-16.1.0.tgz", + "integrity": "sha512-FrzMjsGCHZCd2sEucigMaGyzImBL0l6gwWn6jmLBhcNVx0D7P8Yvtgk9aUptlqBrVKy4c2upglSa3Ogv3679bw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0" + } + }, + "node_modules/ngx-drag-drop": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/ngx-drag-drop/-/ngx-drag-drop-16.1.0.tgz", + "integrity": "sha512-y2l9pJGD7OupsIRkCElN/JqTgzjg2V9ZxymKGQR7ZjjcdjaP1wKkiFWIgVEvLNtb8wgm10U+9tkGwLClGaHkQA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^16.0.0", + "@angular/core": "^16.0.0" + } + }, + "node_modules/ngx-filter-pipe": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ngx-filter-pipe/-/ngx-filter-pipe-3.0.0.tgz", + "integrity": "sha512-3e0O/mNesxrHc/iRydoQNwgcx2vknSM1sZtEIwZXJLCwdrMwzWOkmbBbQRkeuHhjEi6gaOCd5E2tdQ6DyqiAXw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "20.4.0", + "npm": "9.7.2" + }, + "peerDependencies": { + "@angular/core": ">=5.0.0" + } + }, + "node_modules/ngx-image-cropper": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/ngx-image-cropper/-/ngx-image-cropper-7.2.1.tgz", + "integrity": "sha512-SRsY9ar+sGbdzQ1D37PQicSkqaMX7n2ADvz8FdHUjGMGYbLjKe0o6fKhy5QKfV7dS6aD1VqhNr0fr486B1r2NA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0", + "@angular/core": ">=13.0.0" + } + }, + "node_modules/ngx-toastr": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/ngx-toastr/-/ngx-toastr-17.0.2.tgz", + "integrity": "sha512-KehiPx6bkbiUyJbabf0ZA04+ASumS8r/y4wPsUOMI9OrBvBcfq27UQmWuQKoVR8E+9y4Pq7eZkSg2kvxNvpxTA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=16.0.0-0", + "@angular/core": ">=16.0.0-0", + "@angular/platform-browser": ">=16.0.0-0" + } + }, + "node_modules/nice-napi": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", + "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "!win32" + ], + "dependencies": { + "node-addon-api": "^3.0.0", + "node-gyp-build": "^4.2.2" + } + }, + "node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-gyp": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.4.1.tgz", + "integrity": "sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.13 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "dev": true, + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-gyp/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-5.0.0.tgz", + "integrity": "sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-install-checks": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-package-arg": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-10.1.0.tgz", + "integrity": "sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^6.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-7.0.4.tgz", + "integrity": "sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-8.0.1.tgz", + "integrity": "sha512-mRtvlBjTsJvfCCdmPtiu2bdlx8d/KXtF7yNXNWe7G0Z36qWA9Ny5zXsI2PfBZEv7SXgoxTmNaTzGSbbzDZChoA==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^10.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "14.0.5", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-14.0.5.tgz", + "integrity": "sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^11.0.0", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^10.0.0", + "proc-log": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm-registry-fetch/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm-registry-fetch/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/npm-registry-fetch/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/numeral": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/numeral/-/numeral-2.0.6.tgz", + "integrity": "sha512-qaKRmtYPZ5qdw4jWJD6bxEf1FJEqllJrwxCLIm0sQU/A7v2/czigzOb+C2uSiFsa9lBUzeH7M1oK+Q+OLxL3kA==", + "engines": { + "node": "*" + } + }, + "node_modules/nwsapi": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.12.tgz", + "integrity": "sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==", + "dev": true + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-path": { + "version": "0.11.8", + "resolved": "https://registry.npmjs.org/object-path/-/object-path-0.11.8.tgz", + "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==", + "dev": true, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true + }, + "node_modules/pacote": { + "version": "15.2.0", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-15.2.0.tgz", + "integrity": "sha512-rJVZeIwHTUta23sIZgEIM62WYwbmGbThdbnkt81ravBplQv+HjyroqnLRNH2+sLJHcGZmLRmhPwACqhfTcOmnA==", + "dev": true, + "dependencies": { + "@npmcli/git": "^4.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^6.0.1", + "@npmcli/run-script": "^6.0.0", + "cacache": "^17.0.0", + "fs-minipass": "^3.0.0", + "minipass": "^5.0.0", + "npm-package-arg": "^10.0.0", + "npm-packlist": "^7.0.0", + "npm-pick-manifest": "^8.0.0", + "npm-registry-fetch": "^14.0.0", + "proc-log": "^3.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^6.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^1.3.0", + "ssri": "^10.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "devOptional": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", + "dev": true, + "dependencies": { + "entities": "^4.3.0", + "parse5": "^7.0.0", + "parse5-sax-parser": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-sax-parser": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", + "dev": true, + "dependencies": { + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "optional": true + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/piscina": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.0.0.tgz", + "integrity": "sha512-641nAmJS4k4iqpNUqfggqUBUMmlw0ZoM5VZKdQkV2e970Inn3Tk9kroCc1wpsYLD07vCwpys5iY0d3xI/9WkTg==", + "dev": true, + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/pngjs": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-5.0.0.tgz", + "integrity": "sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "dev": true, + "dependencies": { + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/proc-log": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true + }, + "node_modules/qjobs": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", + "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", + "dev": true, + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qrcode": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.5.3.tgz", + "integrity": "sha512-puyri6ApkEHYiVl4CFzo1tDkAZ+ATcnbJrJ6RiBM1Fhctdn/ix9MTE3hRph33omisEbC/2fcfemsseiKgBPKZg==", + "dependencies": { + "dijkstrajs": "^1.0.1", + "encode-utf8": "^1.0.3", + "pngjs": "^5.0.0", + "yargs": "^15.3.1" + }, + "bin": { + "qrcode": "bin/qrcode" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/qrcode/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/qrcode/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/qrcode/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + }, + "node_modules/qrcode/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/qrcode/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/raf": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", + "optional": true, + "dependencies": { + "performance-now": "^2.1.0" + } + }, + "node_modules/ramda": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.29.1.tgz", + "integrity": "sha512-OfxIeWzd4xdUNxlWhgFazxsA/nl3mS4/jGZI5n00uWOoSSFRhC1b6gl6xvmzUamgmqELraWp0J/qqVlXYPDPyA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/ramda" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react/-/react-16.14.0.tgz", + "integrity": "sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "16.14.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-16.14.0.tgz", + "integrity": "sha512-1gCeQXDLoIqMgqD3IO2Ah9bnf0w9kzhwN5q4FGnHZ67hBm9yePzB5JJAIQCc8x3pFnNlwFq4RidZggNAAkzWWw==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "prop-types": "^15.6.2", + "scheduler": "^0.19.1" + }, + "peerDependencies": { + "react": "^16.14.0" + } + }, + "node_modules/react-interactive": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/react-interactive/-/react-interactive-0.8.3.tgz", + "integrity": "sha512-mmRvA9aKP7zu9kVfP1AX1egX8tFlnE3DDXq92z0JTZezfOpmeQBzr77O1+mTV54OOmn+M2t6c5kFD5VnuFoM7A==", + "dependencies": { + "detect-it": "^3.0.3", + "object-assign": "^4.1.1", + "prop-types": "^15.6.0" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/react-router": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-4.3.1.tgz", + "integrity": "sha512-yrvL8AogDh2X42Dt9iknk4wF4V8bWREPirFfS9gLU1huk6qK41sg7Z/1S81jjTrGHxa3B8R3J6xIkDAA6CVarg==", + "dependencies": { + "history": "^4.7.2", + "hoist-non-react-statics": "^2.5.0", + "invariant": "^2.2.4", + "loose-envify": "^1.3.1", + "path-to-regexp": "^1.7.0", + "prop-types": "^15.6.1", + "warning": "^4.0.1" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router-dom": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-4.3.1.tgz", + "integrity": "sha512-c/MlywfxDdCp7EnB7YfPMOfMD3tOtIjrQlj/CKfNMBxdmpJP8xcz5P/UAFn3JbnQCNUxsHyVVqllF9LhgVyFCA==", + "dependencies": { + "history": "^4.7.2", + "invariant": "^2.2.4", + "loose-envify": "^1.3.1", + "prop-types": "^15.6.1", + "react-router": "^4.3.1", + "warning": "^4.0.1" + }, + "peerDependencies": { + "react": ">=15" + } + }, + "node_modules/react-router/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/react-router/node_modules/path-to-regexp": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz", + "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==", + "dependencies": { + "isarray": "0.0.1" + } + }, + "node_modules/read-package-json": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-6.0.4.tgz", + "integrity": "sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", + "dev": true, + "dependencies": { + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^5.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json-fast/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "dev": true + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true + }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz", + "integrity": "sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==", + "dev": true, + "dependencies": { + "is-core-module": "^2.11.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-pathname": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", + "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==" + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", + "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" + }, + "node_modules/rgbcolor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", + "optional": true, + "engines": { + "node": ">= 0.8.15" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.64.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.64.1.tgz", + "integrity": "sha512-16rRACSOFEE8VN7SCgBu1MpYCyN7urj9At898tyzdXFhC+a+yOX5dXwAR7L8/IdPJ1NB8OYoXmD55DM30B2kEQ==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/sass-loader": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.3.2.tgz", + "integrity": "sha512-CQbKl57kdEv+KDLquhC+gE3pXt74LEAzm+tzywcA0/aHZuub8wTErbjAoNI57rPUWRYRNC5WUnNl8eGJNbDdwg==", + "dev": true, + "dependencies": { + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true, + "optional": true + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/scheduler": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.19.1.tgz", + "integrity": "sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/schema-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selfsigned": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", + "dev": true, + "dependencies": { + "@types/node-forge": "^1.3.0", + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/send/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-index/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sigstore": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-1.9.0.tgz", + "integrity": "sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^1.1.0", + "@sigstore/protobuf-specs": "^0.2.0", + "@sigstore/sign": "^1.0.0", + "@sigstore/tuf": "^1.0.3", + "make-fetch-happen": "^11.0.1" + }, + "bin": { + "sigstore": "bin/sigstore.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/sigstore/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sigstore/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/sigstore/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/sigstore/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.7.5", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.7.5.tgz", + "integrity": "sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==", + "dev": true, + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.5.2", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "dev": true, + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "dev": true, + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ssri/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/stackblur-canvas": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz", + "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==", + "optional": true, + "engines": { + "node": ">=0.1.14" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamroller": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", + "dev": true, + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg-pathdata": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", + "optional": true, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sweetalert2": { + "version": "11.12.4", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.12.4.tgz", + "integrity": "sha512-ZSpyaLbAmn4b7xjnV9x9BFD1UOrCAhIzm1D8dZ443kGxtVKqbTIA5SgXs4xeEtmFfEXUyC3RBgpSlu1AXmCiHA==", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/limonte" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", + "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/terser": { + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.19.2.tgz", + "integrity": "sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.20", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser-webpack-plugin/node_modules/terser": { + "version": "5.31.6", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.31.6.tgz", + "integrity": "sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==", + "dev": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-segmentation": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", + "optional": true, + "dependencies": { + "utrie": "^1.0.2" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/tiny-invariant": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", + "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" + }, + "node_modules/tiny-warning": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", + "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tr46/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/tslint": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", + "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", + "deprecated": "TSLint has been deprecated in favor of ESLint. Please see https://github.com/palantir/tslint/issues/4534 for more information.", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsutils": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", + "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tuf-js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-1.1.7.tgz", + "integrity": "sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==", + "dev": true, + "dependencies": { + "@tufjs/models": "1.0.4", + "debug": "^4.3.4", + "make-fetch-happen": "^11.1.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/tuf-js/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tuf-js/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/tuf-js/node_modules/make-fetch-happen": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-11.1.1.tgz", + "integrity": "sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^17.0.0", + "http-cache-semantics": "^4.1.1", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^5.0.0", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/tuf-js/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", + "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", + "dev": true + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.38", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.38.tgz", + "integrity": "sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + }, + { + "type": "github", + "url": "https://github.com/sponsors/faisalman" + } + ], + "engines": { + "node": "*" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/utrie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", + "optional": true, + "dependencies": { + "base64-arraybuffer": "^1.0.2" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/value-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz", + "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw==" + }, + "node_modules/vanilla-colorful": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/vanilla-colorful/-/vanilla-colorful-0.7.2.tgz", + "integrity": "sha512-z2YZusTFC6KnLERx1cgoIRX2CjPRP0W75N+3CC6gbvdX5Ch47rZkEMGO2Xnf+IEmi3RiFLxS18gayMA27iU7Kg==" + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vite": { + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz", + "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==", + "dev": true, + "dependencies": { + "esbuild": "^0.18.10", + "postcss": "^8.4.27", + "rollup": "^3.27.1" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + }, + "peerDependencies": { + "@types/node": ">= 14", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", + "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/warning": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/webpack": { + "version": "5.88.2", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.88.2.tgz", + "integrity": "sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^1.0.0", + "@webassemblyjs/ast": "^1.11.5", + "@webassemblyjs/wasm-edit": "^1.11.5", + "@webassemblyjs/wasm-parser": "^1.11.5", + "acorn": "^8.7.1", + "acorn-import-assertions": "^1.9.0", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.15.0", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.7", + "watchpack": "^2.4.0", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-server/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/webpack-merge": { + "version": "5.9.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.9.0.tgz", + "integrity": "sha512-6NbRQw4+Sy50vYNTw7EyOn41OZItPiXB8GNv3INSoe3PSFaHJEz3SHTrYVaRm2LilNGnFUzh0FAwqPEmU/CwDg==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", + "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", + "dev": true, + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==" + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.10", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", + "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xlsx": { + "version": "0.19.3", + "resolved": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "integrity": "sha512-8IfgFctB7fkvqkTGF2MnrDrC6vzE28Wcc1aSbdDQ+4/WFtzfS73YuapbuaPZwGqpR2e0EeDMIrFOJubQVLWFNA==", + "license": "Apache-2.0", + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zone.js": { + "version": "0.13.3", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.13.3.tgz", + "integrity": "sha512-MKPbmZie6fASC/ps4dkmIhaT5eonHkEt6eAy80K42tAm0G2W+AahLJjbfi6X9NPdciOE9GRFTTM8u2IiF6O3ww==", + "dependencies": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package.json new file mode 100644 index 0000000..48b14b1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/package.json @@ -0,0 +1,90 @@ +{ + "name": "angular-clarity", + "version": "16.0.4", + "subVersion": "2023.06.02-01", + "scripts": { + "ng": "ng", + "start": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng serve --port 4201 -o", + "start:https": "ng serve --port 4201 --ssl -o", + "build-prod": "node --max_old_space_size=64384 ./node_modules/@angular/cli/bin/ng build --prod ", + "build": "node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --base-href ./ --configuration production --aot --build-optimizer", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular/animations": "^16.0.4", + "@angular/cdk": "^16.2.4", + "@angular/common": "^16.0.4", + "@angular/compiler": "^16.0.4", + "@angular/core": "^16.0.4", + "@angular/forms": "^16.0.4", + "@angular/platform-browser": "^16.0.4", + "@angular/platform-browser-dynamic": "^16.0.4", + "@angular/router": "^16.0.4", + "@auth0/angular-jwt": "^5.1.2", + "@cds/core": "^6.9.0", + "@ckeditor/ckeditor5-angular": "^7.0.1", + "@ckeditor/ckeditor5-build-classic": "^40.0.0", + "@clr/angular": "^16.0.0", + "@clr/icons": "^13.0.0", + "@clr/ui": "^16.0.0", + "@ctrl/ngx-codemirror": "^7.0.0", + "@swimlane/ngx-charts": "^20.4.1", + "@webcomponents/custom-elements": "^1.6.0", + "@webcomponents/webcomponentsjs": "^2.8.0", + "angular-gridster2": "^16.0.0", + "angularx-qrcode": "^16.0.2", + "bootstrap": "^5.3.2", + "bootstrap-icons": "^1.11.2", + "boxicons": "^2.1.4", + "chart.js": "^3.4.0", + "dom-to-image": "^2.6.0", + "express": "^4.18.2", + "file-saver": "^2.0.5", + "highcharts": "^11.1.0", + "highcharts-angular": "^3.1.2", + "jquery": "^3.7.1", + "jspdf": "^2.5.1", + "jszip": "^3.10.1", + "lit-html": "^3.1.0", + "lodash": "^4.17.21", + "moment": "^2.29.4", + "ng-dynamic-component": "^10.1.1", + "ng-multiselect-dropdown": "^1.0.0", + "ng2-charts": "^4.1.0", + "ng2-ckeditor": "^1.3.7", + "ng2-search-filter": "^0.5.1", + "ngx-chips": "^3.0.0", + "ngx-cookie-service": "^16.0.0", + "ngx-drag-drop": "^16.1.0", + "ngx-filter-pipe": "^3.0.0", + "ngx-image-cropper": "^7.0.2", + "ngx-toastr": "^17.0.2", + "numeral": "^2.0.6", + "rxjs": "^7.8.1", + "sweetalert2": "^11.4.8", + "tslib": "^2.5.2", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz", + "zone.js": "~0.13.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "^16.0.4", + "@angular/cli": "^16.0.4", + "@angular/compiler-cli": "^16.0.4", + "@types/jasmine": "~4.3.2", + "@types/jasminewd2": "~2.0.10", + "@types/node": "^20.2.5", + "jasmine-core": "~5.0.0", + "jasmine-spec-reporter": "~7.0.0", + "karma": "~6.4.2", + "karma-chrome-launcher": "~3.2.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "^2.0.0", + "ts-node": "^10.9.1", + "tslint": "~6.1.3", + "typescript": "^5.1.0" + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-config.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-config.ts new file mode 100644 index 0000000..4046533 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-config.ts @@ -0,0 +1,42 @@ +import { Injectable } from '@angular/core'; +import{environment} from 'src/environments/environment'; +/** + * This is a singleton class + */ +@Injectable() +export class AppConfig { + //Provide all the Application Configs here + + public version: string = "1.0.0"; + public locale: string = "en-US"; + public currencyFormat = { style: "currency", currency: "USD" }; + public dateFormat = { year: 'numeric', month: 'short', day: 'numeric' }; +// port in enviroment +apiURL = environment.backport; + // API Related configs + public apiPort: string =this.apiURL; // this.apiURL //9191 to pc used and 8080/billingback to jboss + public apiProtocol: string; + public apiHostName: string; + public baseApiPath: string; + + constructor() { + if (this.apiProtocol === undefined) { + this.apiProtocol = window.location.protocol; + } + if (this.apiHostName === undefined) { + this.apiHostName = window.location.hostname; + } + if (this.apiPort === undefined) { + this.apiPort = window.location.port; + } + if (this.apiHostName.includes("infomud") || this.apiHostName.includes("heroku")) { + this.baseApiPath = this.apiProtocol + "//" + this.apiHostName + "/"; + } + else { + this.baseApiPath = this.apiProtocol + "//" + this.apiHostName + ":" + this.apiPort + "/"; + } + if (this.locale === undefined) { + this.locale = navigator.language; + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-routing.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-routing.module.ts new file mode 100644 index 0000000..16371b5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app-routing.module.ts @@ -0,0 +1,14 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; + + +const routes: Routes = [ + {path: '', redirectTo: 'login', pathMatch: 'full'} + +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes)], + exports: [RouterModule] +}) +export class AppRoutingModule { } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.html new file mode 100644 index 0000000..90c6b64 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.spec.ts new file mode 100644 index 0000000..30e49af --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.spec.ts @@ -0,0 +1,35 @@ +import { TestBed, async } from '@angular/core/testing'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; + +describe('AppComponent', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + declarations: [ + AppComponent + ], + }).compileComponents(); + })); + + it('should create the app', () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app).toBeTruthy(); + }); + + it(`should have as title 'angularclarity'`, () => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.componentInstance; + expect(app.title).toEqual('angularclarity'); + }); + + it('should render title', () => { + const fixture = TestBed.createComponent(AppComponent); + fixture.detectChanges(); + const compiled = fixture.nativeElement; + expect(compiled.querySelector('.content span').textContent).toContain('angularclarity app is running!'); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.ts new file mode 100644 index 0000000..c90bac6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) +export class AppComponent { + title = 'angularclarity'; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.module.ts new file mode 100644 index 0000000..d36b5b0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/app.module.ts @@ -0,0 +1,90 @@ +import { ExcelService } from './services/excel.service'; +import { BrowserModule } from '@angular/platform-browser'; + +import { ToastrModule } from 'ngx-toastr'; + +import { AppRoutingModule } from './app-routing.module'; +import { AppComponent } from './app.component'; +import { ClarityModule } from '@clr/angular'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { HashLocationStrategy, LocationStrategy } from '@angular/common'; +import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; +import { MainModule } from './modules/main/main.module'; +import { LoginModule } from './modules/login/login.module'; +import { MainService } from './services/main.service'; +import { AlertService } from './services/alert.service'; +import { HelperModule } from './pipes/helpers.module'; +import { LogoComponent } from './modules/logo/logo.component'; +import { AppConfig } from './app-config'; +import { JwtInterceptor } from './services/jwt.interceptor'; +import { UserInfoService } from './services/user-info.service'; +import { AuthGuard } from './services/auth_guard.service'; +import { LoginService } from './services/api/login.service'; +import { ApiRequestService } from './services/api/api-request.service'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import {CUSTOM_ELEMENTS_SCHEMA, NgModule } from "@angular/core"; +import { TranslateService } from './services/api/translate.service'; +import { RealnetMenuService } from './services/api/realnet-menu.service'; +import { UserProfileService } from './services/admin/user-profile.service'; +import { DndModule } from 'ngx-drag-drop'; +import { DragDropModule } from '@angular/cdk/drag-drop'; +// import { ProjectSetupService } from './services/builder/project-setup.service'; +// import { TechnologyStackService } from './services/builder/technology-stack.service'; +// import { DropdownService } from './services/builder/dropdown.service'; +// import { WireframeService } from './services/builder/wireframe.service'; +// import { SuregitService } from './services/builder/suregit.service'; +//import { ImageCropperModule } from '../app/modules/main/admin/image-cropper/image-cropper.module'; + + + + + + + +@NgModule({ + declarations: [ + AppComponent, + LogoComponent, + + + ], + imports: [ + BrowserModule, + AppRoutingModule, + ClarityModule, + HttpClientModule, + BrowserAnimationsModule, + ToastrModule.forRoot(), + HelperModule, + MainModule, + LoginModule, + FormsModule, + ReactiveFormsModule, + // DragDropModule, + DndModule, + + ], + providers: [ + MainService, + AlertService, + ExcelService, + UserInfoService, + LoginService, + ApiRequestService, + TranslateService, + RealnetMenuService, + UserProfileService, + // ProjectSetupService, + // TechnologyStackService, + // DropdownService, + // WireframeService, + // SuregitService, + AuthGuard, + AppConfig, + { provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true }, + { provide: LocationStrategy, useClass: HashLocationStrategy } // HashLocationStrategy to use # and remove # PathLocationStrategy + ], + bootstrap: [AppComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA ] +}) +export class AppModule { } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/global.model.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/global.model.ts new file mode 100644 index 0000000..74382c6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/global.model.ts @@ -0,0 +1,169 @@ +export class field{ + _id?:any; + name?:any; + type?:any; + icon?:any; + toggle?:any; + required?:any; + regex?:any; + errorText?:any; + label?:any; + description?:any; + placeholder?:any; + className?:any; + subtype?:any; + handle?:any; + min?:number; + max?:number; + inline?:any; + value?:any; + size?:any; + values?:Array; + div_name?:any; + gridLine_name?:any; + children?: field[]; + tooltipmsg?:any; + maxcharacters?:any; + visibilty?:any; + duplicateVal?:any; + encryptData?:any; + personalHealthInfo?:any; + descriptionText?:any; + heightpx?:any; + showDescription?:boolean; + personalInfo?:boolean; + readOnly?:any; + sessionVar?:any; + allowedDays?:any; + allowedHrsFrom?:any; + allowedHrsTo?:any; + showSeconds?:boolean; + datePicker?:any; + alphabeticalOrdering?:boolean; + fieldLayout?:any; + otherChoice?:boolean; + dynamicList?:any; + iconType?:any; + target?:any; + defaultCamera?:any; + imgoption?:Array; + questions?:Array; + maxDuration?:any; + maxNo?:number; + decimalPlaces?:number; + currencyType?:any; + formatNo?:any; + providersData?:any; + apikey?:any; + expanded?:boolean; + files?:Array; + password?:any; + content?:any; + theme?:any; + norows?:number; + nocolumns?:number; + editordata?:any; +} +export class value{ + label?:any=""; + value?:any=""; +} +export class value1{ + label1?:any=""; + value1?:any=""; +} +export interface IProperty { + url?: string; + loading?: boolean; + itemsPerPage?: number; + total?: number; + p?: number; + sizeLimit?: number; + title?: string; + text?: string; + items?: any[]; + sub?: any; + isBlocked?: boolean; + isDeleted?: boolean; + isEmailVerified?: string; + successMsg?: string; + msg?: string; + userId?: string; + status?: number; + userPlaceholder?: string; + searchKey?: string; + fullName?: string; + email?: string; + countryCode?: string; + dialCode?: string; + phoneNumber?: string; + value?: Date; + data?: any; + name_es?: string; + name_en?: string; + countries?: any; + states?: any; + cities?: any; + countries1?: any; + states1?: any; + cities1?: any; + countries2?: any; + states2?: any; + cities2?: any; + localities?: any; + buildings?: any; + country_id?: string; + state_id?: string; + city_id?: string; + locality_id?: string; + building_id?: string; + countryCount?: number; + stateCount?: number; + cityCount?: number; + stateCityCount?: number; + localityCount?: number; + buildingCount?: number; + countriesAdd?: any; + statesAdd?: any; + citiesAdd?: any; + localitiesAdd?: any; + country_idAdd?: string; + state_idAdd?: string; + city_idAdd?: string; + locality_idAdd?: string; + countryCountAdd?: number; + stateCountAdd?: number; + cityCountAdd?: number; + localityCountAdd?: number; + successText?: string; + propertyTypes?: any; + propertyTypesCount?: number; + amenities?: any; + amenitiesCount?: number; + projectTypes?: any; + projectTypesCount?: number; + routeName?: string; + icon?: any; + userType?: string; + overlay?: any; + is_broker_seller_dev?: number; + is_buyer_renter?: number; + is_broker?: number; + is_data_collector?: number; + image?: any; + index?: number; + name?: string; + phone?: string; + type?: number; + property_id?: string; + banks?: any; + bankCount?: string; + flag?: number; + page?: number; + property_for?: any; + status_id?:any; + type_id?:any; + post_type?:any; + developer_id?:any; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/role.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/role.ts new file mode 100644 index 0000000..abf5370 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/role.ts @@ -0,0 +1,4 @@ +export enum Role { + // User = 'User', + Admin = 'Admin' +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/systemparameter.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/systemparameter.ts new file mode 100644 index 0000000..73e6b22 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/systemparameter.ts @@ -0,0 +1,30 @@ +export class Systemparameter{ + + + public schedulerTime: number; + public leaseTaxCode: String; + public vesselConfProcessLimit: number; + public rowToDisplay: any; + public linkToDisplay: any; + public rowToAdd: any; + public lovRowToDisplay:any; + public lovLinkToDisplay: any; + public oidserverName: any; + public oidBase: any; + public oidAdminUser: any; + public oidServerPort: any; + public userDefaultGroup: any; + public defaultDepartment: any; + public defaultPosition: any; + public singleCharge: any; + public firstDayOftheWeek:any; + public hourPerShift: any; + public cnBillingFrequency: any; + public billingDepartmentCode: any; + public basePriceList: any; + public nonContainerServiceOrder: any; + public ediMaeSchedulerONOFF: any; + public ediSchedulerONOFF: any; +public company_Display_Name:any; +public upload_Logo:any; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/user.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/user.ts new file mode 100644 index 0000000..15072a8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/user.ts @@ -0,0 +1,14 @@ +export class User { + public id: number; + public name: string; + public gender: string; + public dob: string; + public email: string; + public picture:Blob; + public location:string; + public address1:string; + public country:string; + public phone:number; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userdepartment.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userdepartment.ts new file mode 100644 index 0000000..d53f135 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userdepartment.ts @@ -0,0 +1,12 @@ +export class userdepartment{ + public departmentCode:String; + public active:String; + public description:String; + public createdOn:Date; + public createdBy:String; + public updatedOn:Date; + public updatedBy:String; + public id:number; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usergrpma.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usergrpma.ts new file mode 100644 index 0000000..349ad24 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usergrpma.ts @@ -0,0 +1,10 @@ +export class Usergrpmain { + public usrGrp: number; + public groupName:string; + public groupDesc:string; + public createby:string; + public createdate:Date; + public groupLevel:string; + public status:string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usermaintaince.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usermaintaince.ts new file mode 100644 index 0000000..3d1d806 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/usermaintaince.ts @@ -0,0 +1,38 @@ +import { userdepartment } from "./userdepartment"; +import { userposition } from "./userposition"; + +export class Usermain { + public userId: number; + public changePassw:string; + public confirmPassword:string; + public createby:string; + public createdate:Date; + public customerId:number; + public customerNumer:String; + public departmentCode:string; + public departmentCodeString:string; + public email:string; + public firstLogin:String; + public fullName:String; + public langCode: String; + public notification:String; + public password1: String; + public password2: String; + public password3: String; + public password4: String; + public positionCodeString:String; + public pwdChangedCnt:string; + public shortName: string; + public status:string; + public updateby:string; + public updatedate:Date; + public username: string; + public userPassw: string; + public usrGrpId:number; + public title: string; + public expiryDate: Date; + public lastPwdChangedDate:Date; + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userposition.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userposition.ts new file mode 100644 index 0000000..7b36d9a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/admin/userposition.ts @@ -0,0 +1,9 @@ +export class userposition{ + public positionCode:String; + public active:String; + public description:String; + public createdOn:Date; + public createdBy:String; + public updatedOn:Date; + public updatedBy:String; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ActiveTechnology.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ActiveTechnology.ts new file mode 100644 index 0000000..fa99e85 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ActiveTechnology.ts @@ -0,0 +1,4 @@ +export interface ActiveTechnology { + id; +name; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/AdhocParam.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/AdhocParam.ts new file mode 100644 index 0000000..e25d168 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/AdhocParam.ts @@ -0,0 +1,13 @@ + + +export class AdhocParam{ + + + public id: number; + public table_allias_name: string; + public column_name: string; + public column_allias_name: string; + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Audit.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Audit.ts new file mode 100644 index 0000000..1a38432 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Audit.ts @@ -0,0 +1,9 @@ +export class Audit { + public accountId: number; + public createdAt: Date; + public createdBy: string; + public updatedAt: Date; + public updatedBy: string; + + +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Bcf_TechnologyStack.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Bcf_TechnologyStack.ts new file mode 100644 index 0000000..9c7537e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Bcf_TechnologyStack.ts @@ -0,0 +1,9 @@ +import { Audit } from "./Audit"; +export class Bcf_TechnologyStack extends Audit { + public id: number; + public tech_stack: string; + public tech_stack_key: string; + public tags: string; + public base_prj_file_name: string; + public active: boolean; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ColumnList.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ColumnList.ts new file mode 100644 index 0000000..a84c0a8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ColumnList.ts @@ -0,0 +1,4 @@ +export interface ColumnList { + // id: number; + table_name: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/DateParam.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/DateParam.ts new file mode 100644 index 0000000..786ad6c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/DateParam.ts @@ -0,0 +1,11 @@ +export class DateParam{ + + + public date_id: number; + public col_table_alies_name_date: string; + public col_date_query: string; + public column_alias_date_query: string; + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/FileData.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/FileData.ts new file mode 100644 index 0000000..b7b379d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/FileData.ts @@ -0,0 +1,10 @@ +export interface FileData { + id: number; + text: string; + /* public id: number; + public text: string; */ + /* constructor(id: number, text: string) { + this.id = id; + this.text = text; + } */ +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Module_Setup.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Module_Setup.ts new file mode 100644 index 0000000..ecc0fcf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Module_Setup.ts @@ -0,0 +1,14 @@ +import { Audit } from "./Audit"; +import { ProjectSetup } from "./Project_setup"; +import { Rn_Fb_Header } from "./Rn_Fb_Header"; + +export class ModuleSetup extends Audit { + public id: number; + public moduleName: string; + public description: string; + public modulePrefix: string; + public copyTo?: string; + public technologyStack: string; + public project: ProjectSetup; + public rn_fb_headers: Rn_Fb_Header[]; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Project_setup.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Project_setup.ts new file mode 100644 index 0000000..1173df2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Project_setup.ts @@ -0,0 +1,22 @@ +import { Audit } from "./Audit"; +import { ModuleSetup } from "./Module_Setup"; + +export class ProjectSetup extends Audit { + public id: number; + public projectName: string; + public description: string; + public copyTo?: string; + public technologyStack: string; + public techStackId: number; + public projectPrefix: string; + public dbName: string; + public dbUserName: string; + public dbPassword: string; + public portNumber: string; + public namespace: string; + public tags:string; + public category:string; + public accessibility:boolean; + public modules: ModuleSetup[]; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbColumns.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbColumns.ts new file mode 100644 index 0000000..13b372a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbColumns.ts @@ -0,0 +1,12 @@ +export class RbColumns{ + + + public id: number; + public column_name: string; + public functions: string; + public column_allias_name: string; + public table_allies_name: string; + public asc_desc: string; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbTables.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbTables.ts new file mode 100644 index 0000000..5603a7e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/RbTables.ts @@ -0,0 +1,7 @@ +export class RbTables{ + public table_id: number; + public table_name: string; + public table_allias_name: string; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilder.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilder.ts new file mode 100644 index 0000000..0c6ee59 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilder.ts @@ -0,0 +1,8 @@ +export class ReportBuilder { + public report_id: number; +public report_name:string; +public description: string; +public report_tags: string; +public servicename:string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilderQuery.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilderQuery.ts new file mode 100644 index 0000000..9064f25 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/ReportBuilderQuery.ts @@ -0,0 +1,4 @@ +export class ReportBuilderQuery { + public master_select: string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts new file mode 100644 index 0000000..6654bae --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Header.ts @@ -0,0 +1,14 @@ +import { Audit } from "./Audit"; +import { Rn_Cff_ActionBuilder_Line } from "./Rn_Cff_ActionBuilder_Line"; +import { Rn_Fb_Header } from "./Rn_Fb_Header"; + +export class Rn_Cff_ActionBuilder_Header extends Audit { + public id: number; + public rn_fb_header: Rn_Fb_Header; + public technologyStack: string; + public controllerName: string; + public methodName: string; + public actionName: string; + public fileLocation: string; + public actionBuilderLines: Rn_Cff_ActionBuilder_Line[]; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts new file mode 100644 index 0000000..7e9be6b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Cff_ActionBuilder_Line.ts @@ -0,0 +1,18 @@ +import { Audit } from "./Audit"; +import { Rn_Cff_ActionBuilder_Header } from "./Rn_Cff_ActionBuilder_Header"; + +export class Rn_Cff_ActionBuilder_Line extends Audit { + public id: number; + public actionType1: string; + public actionType2: string; + public dataType: string; + public variableName: string; + public assignment: string; + public message: string; + public conditions: string; + public forward: string; + public equation: string; + public seq: number; + public action: string; + public rn_cff_actionBuilderHeader: Rn_Cff_ActionBuilder_Header; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Header.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Header.ts new file mode 100644 index 0000000..2423279 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Header.ts @@ -0,0 +1,22 @@ +import { Audit } from "./Audit"; +import { Rn_Fb_Lines } from "./Rn_Fb_Lines"; + +export class Rn_Fb_Header extends Audit { + public id: number; + public techStack: string; + public objectType: string; + public subObjectType: string; + public uiName: string; + public formType: string; + public tableName: string; + public lineTableName: string; + public multilineTableName: string; + public formCode: string; + public build: boolean; + public updated: boolean; + public menuName: string; + public headerName: string; + public convertedTableName: string; + public rn_fb_lines: Rn_Fb_Lines[]; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Lines.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Lines.ts new file mode 100644 index 0000000..da08a69 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Fb_Lines.ts @@ -0,0 +1,49 @@ +import { Audit } from "./Audit"; + +export class Rn_Fb_Lines extends Audit { + public id: number; + public fieldName: string; + public mapping: string; + public dataType: string; + public formCode: string; + public key1: string; + public type1: string; + public mandatory: boolean; + public hidden: boolean; + public readonly: boolean; + public dependent: boolean; + public dependent_on: string; + public dependent_sp: string; + public dependent_sp_param: string; + public validation_1: boolean; + public val_type: string; + public val_sp: string; + public val_sp_param: string; + public sequence: boolean; + public seq_name: string; + public seq_sp: string; + public seq_sp_param: string; + public default_1: boolean; + public default_type: string; + public default_value: string; + public default_sp: string; + public default_sp_param: string; + public calculated_field: boolean; + public cal_sp: string; + public cal_sp_param: string; + public add_to_grid: boolean; + public sp_for_autocomplete: boolean; + public sp_name_for_autocomplete: string; + public sp_for_dropdown: boolean; + public sp_name_for_dropdown: string; + public type_field: string; + public methodName: string; + public seq: number; + public form_type: string; + public section_num: number; + public button_num: string; + public type2: string; + public table_name?: string; + public line_table_name: string; + public line_table_no: number; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Main_Menu.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Main_Menu.ts new file mode 100644 index 0000000..cd002e0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Main_Menu.ts @@ -0,0 +1,17 @@ +import { Audit } from "./Audit"; +import { Rn_Sub_Menu } from './Rn_Sub_Menu'; + +export class Rn_Main_Menu extends Audit { + public menuItemId: number; + public menuItemDesc: string; + public mainMenuActionName : string; + public mainMenuIconName: string; + public menu_type: string; + public mcreate:String; + public mdelete:String; + public medit:String; + public menuId:Number; + public mquery:String; + public mvisible:String; + public subMenus: Rn_Sub_Menu[]; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Sub_Menu.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Sub_Menu.ts new file mode 100644 index 0000000..bcbc9b2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/Rn_Sub_Menu.ts @@ -0,0 +1,16 @@ +import { Audit } from "./Audit"; + +export class Rn_Sub_Menu extends Audit { + public menuItemId: number; + public menuItemDesc: string; + public mainMenuActionName : string; + public mainMenuIconName: string; + public menu_type: string; + public mcreate:String; + public mdelete:String; + public medit:String; + public menuId:Number; + public mquery:String; + public mvisible:String; + //public menu_icon: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/StdParam.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/StdParam.ts new file mode 100644 index 0000000..015c577 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/StdParam.ts @@ -0,0 +1,12 @@ +export class StdParam{ + + + public std_id: number; + public col_table_alies_name_std_para: string; + public col_std_para_query: string; + public field_type: string; + public sp_for_dd: string; + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WhereParam.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WhereParam.ts new file mode 100644 index 0000000..c98b3be --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WhereParam.ts @@ -0,0 +1,14 @@ +export class WhereParam{ + + + public where_id: number; + public explecity: string; + public where_coloumn1_tbl_alias_name: string; + public where_coloumn: string; + public where_condition: string; + public switch_control: string; + public where_coloumn2_tbl_alias_name:string; + public where_coloumn2:string; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WireFrame.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WireFrame.ts new file mode 100644 index 0000000..c1dce53 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/WireFrame.ts @@ -0,0 +1,29 @@ +export interface WireFrame { + header: Header; + line: Line; +} +export interface Header { +section: Section[]; +} +export interface Line { +section: Section[]; +} +export interface Section { +id: number; +fieldName: string; +mapping: string; +dataType: string; +type_field: string; +section_num: number; +fields: Field[]; +} + +export interface Field { +id: number; +fieldName: string; +mapping: string; +dataType: string; +type_field: string; +section_num: number; +seq: number; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/dashboard.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/dashboard.ts new file mode 100644 index 0000000..0af2db2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/dashboard.ts @@ -0,0 +1,67 @@ +export interface WidgetModel { + name: string; + identifier: string; +} + +export interface DashboardContentModel { + cols: number; + rows: number; + y: number; + x: number; + chartid: number; + component?: any; + name: string; +} + +export interface DashboardModel { + id: number; + username: string; + dashboard: Array; +} + +export const WidgetsMock: WidgetModel[] = [ + { + name: 'Radar Chart', + identifier: 'radar_chart' + }, + { + name: 'Doughnut Chart', + identifier: 'doughnut_chart' + }, + { + name: 'Line Chart', + identifier: 'line_chart' + }, + { + name: 'Bar Chart', + identifier: 'bar_chart' + }, + { + name: 'Pie Chart', + identifier: 'pie_chart' + }, + { + name: 'Polar Area Chart', + identifier: 'polar_area_chart' + }, + { + name: 'Bubble Chart', + identifier: 'bubble_chart' + }, + { + name: 'Scatter Chart', + identifier: 'scatter_chart' + }, + { + name: 'Dynamic Chart', + identifier: 'dynamic_chart' + }, + { + name: 'Financial Chart', + identifier: 'financial_chart' + }, + { + name: 'To Do', + identifier: 'to_do_chart' + } +] diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/gitfile.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/gitfile.ts new file mode 100644 index 0000000..1279faf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/gitfile.ts @@ -0,0 +1,9 @@ +export class Gitfile { + + public content :String; + public url :String; + public sha:String; + public encoding:String; + public size:String; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/suregit.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/suregit.ts new file mode 100644 index 0000000..5e721a6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/suregit.ts @@ -0,0 +1,9 @@ +export class Suregit { + public path :String; + public sha :String; + public url :String; + public type:Number; + public mode:String; + public size:String; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surename.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surename.ts new file mode 100644 index 0000000..e57af9c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surename.ts @@ -0,0 +1,9 @@ +export class Surename { + public id :number; + public message :String; + public name :String; + public timestamp:Number; + public email:String; + public username:String; +public sha:any; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surestar.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surestar.ts new file mode 100644 index 0000000..42eaf13 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/surestar.ts @@ -0,0 +1,9 @@ +export class Surestar { + public id :number; + public email :String; + public watchers_count :number; + public forks_count:Number; + public stars_count:number; + public size:String; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/webpagebuilder.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/webpagebuilder.ts new file mode 100644 index 0000000..12c47b1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/builder/webpagebuilder.ts @@ -0,0 +1,55 @@ +export interface WidgetModel { + name: string; + identifier: string; +} + +export interface DashboardContentModel { + cols: number; + rows: number; + y: number; + x: number; + chartid: number; + component?: any; + name: string; +} + +export interface DashboardModel { + id: number; + username: string; + dashboard: Array; +} + +export const WidgetsMock: WidgetModel[] = [ + // { + // name: 'Text field', + // identifier: 'text_field' + // }, + { + name: 'Text area', + identifier: 'text_area' + }, + { + name: 'Table field', + identifier: 'table_field' + }, + // { + // name: 'Background Color', + // identifier: 'background_color' + // }, + // { + // name: 'Box field', + // identifier: 'box_field' + // }, + { + name: 'Image field', + identifier: 'img_field' + }, + { + name: 'Line field', + identifier: 'line_field' + }, + { + name: 'QR code', + identifier: 'qr_code' + } +] diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Exception_Rule_Library .ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Exception_Rule_Library .ts new file mode 100644 index 0000000..bfa5d5d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Exception_Rule_Library .ts @@ -0,0 +1,10 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Exception_Rule_Library extends Audit { + id: number; + tech_stack: string; + object_type: string; + sub_object_type: string; + object_name_variable: string; + object_name_dynamic_string: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor.ts new file mode 100644 index 0000000..b86c5fe --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor.ts @@ -0,0 +1,17 @@ +import { Audit } from "../builder/Audit"; +import { Bcf_Extractor_Params } from "./Bcf_Extractor_Params"; + +export class Bcf_Extractor extends Audit { + id: number; + tech_stack: string; + tech_stack_key: string; + object_type: string; + sub_object_type: string; + form_type_name: string; + std_wf_name: string; + icon_file_name: string; + sample_file_name: string; + extractor_stage: string; + rn_bcf_extractor_Params: Bcf_Extractor_Params[]; +} + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor_Params.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor_Params.ts new file mode 100644 index 0000000..c2d20b2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Extractor_Params.ts @@ -0,0 +1,20 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Extractor_Params extends Audit { + id: number; + tech_stack: string; + object_type: string; + sub_object_type: string; + file_code: any; + name_string: string; + address_string: string; + moved_address_string: string; + reference_address_string: string; + description: string; + file_name_var: string; + file_name_dynamic_string: string; + is_extraction_enabled: boolean; + is_creation_enabled: boolean; + total_project_path_dynamic_string:string; +} + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Rule_Library.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Rule_Library.ts new file mode 100644 index 0000000..44428f8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Bcf_Rule_Library.ts @@ -0,0 +1,16 @@ +import { Audit } from "../builder/Audit"; + +export class Bcf_Rule_Library extends Audit { + id: number; + group_id: number; + rule_name: string; + tech_stack: string; + object_type: string; + sub_object_type: string; + file_code: string; + rule_type: string; + identifier_start_string: string; + identifier_end_string: string; + replacement_string: string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashHeader.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashHeader.ts new file mode 100644 index 0000000..f1dc31b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashHeader.ts @@ -0,0 +1,13 @@ +import { BiDashLine } from './BiDashLine'; + +export class BiDashHeader{ + + + public header_id: number; + public dashboard_name: string; + public components: BiDashLine[]; + + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashLine.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashLine.ts new file mode 100644 index 0000000..2e49b8f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiDashLine.ts @@ -0,0 +1,17 @@ +export class BiDashLine{ + + + + public section_type: string; + public widgets1: string; + public widgets2: string; + public widgets3: string; + public widgets4: string; + public widgets5: string; + public widgets6: string; + + + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiWidget.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiWidget.ts new file mode 100644 index 0000000..52f1b7b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/BiWidget.ts @@ -0,0 +1,10 @@ +export class BiWidget { + public id: number; +public widget_name: string; +public widget_description: string; + public chart_type: string; + public sql_query:string; + public label:string; + public color_scheme:string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/DynamicForm.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/DynamicForm.ts new file mode 100644 index 0000000..6861694 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/DynamicForm.ts @@ -0,0 +1,37 @@ +//import { Audit } from "./Audit"; +import { Audit } from "../builder/Audit"; +export class DynamicForm extends Audit { + public id: number; + public form_id: number; + public form_version: number; + public comp1: string; + public comp2: string; + public comp3: string; + public comp4: string; + public comp5: string; + public comp6: string; + public comp7: string; + public comp8: string; + public comp9: string; + public comp10: string; + public comp11: string; + public comp12: string; + public comp13: string; + public comp14: string; + public comp15: string; + public comp16: string; + public comp17: string; + public comp18: string; + public comp19: string; + public comp20: string; + public comp21: string; + public comp22: string; + public comp23: string; + public comp24: string; + public comp25: string; + public comp_l26: string; + public comp_l27: string; + public comp_l28: string; + public comp_l29: string; + public comp_l30: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ExtensionField.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ExtensionField.ts new file mode 100644 index 0000000..3becca0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ExtensionField.ts @@ -0,0 +1,47 @@ +import { Audit } from "../builder/Audit"; + +export class ExtensionField extends Audit { + public id: number; + public field_name: string; + public mapping: string; + public data_type: string; + public form_code: string; + public type: string; + public isActive: boolean; + + /* public mandatory: string; + public hidden: string; + public readonly: string; + public dependent: string; + public dependent_on: string; + public dependent_sp: string; + public dependent_sp_param: string; + public validation_1: string; + public val_type: string; + public val_sp: string; + public val_sp_param: string; + public sequence: string; + public seq_name: string; + public seq_sp: string; + public seq_sp_param: string; + public default1: string; + public default_type: string; + public default_value: string; + public default_sp: string; + public default_sp_param: string; + public calculated_field: string; + public cal_sp: string; + public cal_sp_param: string; + public add_to_grid: string; + public attr1: string; + public attr2: string; + public attr3: string; + public drop_value: string; + public dropdown: string; + public sp_name: string; + public ext_dd_id: string; + public sp_name_forautocomplete: string; + public ext_dependent_id: string; + public radio: string; + public radio_option: string; */ +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Mapping.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Mapping.ts new file mode 100644 index 0000000..385fdd6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Mapping.ts @@ -0,0 +1,4 @@ +export interface Mapping { + label: string; + value: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Component_Setup.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Component_Setup.ts new file mode 100644 index 0000000..41378c8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Component_Setup.ts @@ -0,0 +1,12 @@ +import { Audit } from "../builder/Audit"; +export class Rn_Forms_Component_Setup extends Audit { + public component_id: number; + public label: string; + public type: string; + public mapping: string; + public mandatory: string; + public readonly: string; + public drop_values: string; + public sp: string; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Setup.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Setup.ts new file mode 100644 index 0000000..872efee --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Rn_Forms_Setup.ts @@ -0,0 +1,11 @@ +import { Rn_Forms_Component_Setup } from "./Rn_Forms_Component_Setup"; +import { Audit } from "../builder/Audit"; +export class Rn_Forms_Setup extends Audit { + public form_id: number; + public form_name: string; + public form_desc: string; + public related_to: string; + public page_event: string; + public button_caption: string; + public components: Rn_Forms_Component_Setup[]; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/RuleCopy.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/RuleCopy.ts new file mode 100644 index 0000000..0b905a4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/RuleCopy.ts @@ -0,0 +1,20 @@ +export class RuleCopy { + public from_tech_stack: string; +public from_object_type: string; +public from_sub_object_type: string; +public to_tech_stack: string; +public to_object_type: string; +public to_sub_object_type: string; + +} + +export interface Rule { + tech_stack: string; + object_type: string; + sub_object_type: string; + version: string; + replacement_string: string; + keyword: string; + priority: number; + service: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Studentadd.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Studentadd.ts new file mode 100644 index 0000000..25927d4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/Studentadd.ts @@ -0,0 +1,10 @@ + + +export class student { + public id: number; + public wf_id:number; + public current_json: string; + public status: string; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/TableList.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/TableList.ts new file mode 100644 index 0000000..8f66129 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/TableList.ts @@ -0,0 +1,4 @@ +export interface TableList { + // id: number; + table_name: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ValidationError.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ValidationError.ts new file mode 100644 index 0000000..a72bfd6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/ValidationError.ts @@ -0,0 +1,4 @@ +export class ValidationError { + field: any; + message: any; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/book.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/book.ts new file mode 100644 index 0000000..3f9f0de --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/book.ts @@ -0,0 +1,10 @@ +export class book { + public id: number; + public booktype: string; + public bookname: string; + public price: number; + public writer: string; + public code:number; + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/department.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/department.ts new file mode 100644 index 0000000..5da15cf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/department.ts @@ -0,0 +1,10 @@ +export class Department { + public id: number; + public department_code: string; + public description: string; + public active: string; + public created_by:string; + public created_on:string; + public updated_by:string; + public updated_on:string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/play.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/play.ts new file mode 100644 index 0000000..3c5b927 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/play.ts @@ -0,0 +1,9 @@ +export class College { + public studentid: number; + public wf_instance_id:number; + public studentname: string; + public department: string; + public joiningDate: string; + public phone: number; + public emailId:string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/table-setup.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/table-setup.ts new file mode 100644 index 0000000..8f66129 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/table-setup.ts @@ -0,0 +1,4 @@ +export interface TableList { + // id: number; + table_name: string; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/university.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/university.ts new file mode 100644 index 0000000..16e9a12 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/models/fnd/university.ts @@ -0,0 +1,11 @@ +import {book} from '../../models/fnd/book'; + +export class university { + public id: number; + public name: string; + public email: string; + public subject: string; + public phone: number; + public books: book[]; + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/.DS_Store b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/.DS_Store new file mode 100644 index 0000000..17a349c Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/.DS_Store differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.html new file mode 100644 index 0000000..9709774 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.html @@ -0,0 +1,142 @@ + + +
+ + +
+ +
+ cloudnSure + +
+
+ + + + + + + + +
+
+

Welcome to cloudnsure!

+
You're signing up as {{email}}
+
+
+
+ +
+
First Name is required
+
+
+
+ +
+
Last Name is required
+
+
+
+ +
+
Mobile Number is required
+
Mobile Number is 10 numbers
+
+
+
+ + +
+
password is required
+
Password must be Minimum 6 Characters
+
+
+
+ + +
+
Password is required.
+
Password and Confirm Password must be match.
+
+ + +
+
+

User Info Is Added Please Login

+

Wrong account? Log in instead.

+
+
+ + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.scss new file mode 100644 index 0000000..4408425 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.scss @@ -0,0 +1,86 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 7px 9px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} +form { + margin-left: 8%; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.spec.ts new file mode 100644 index 0000000..562261f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddguestComponent } from './addguest.component'; + +describe('AddguestComponent', () => { + let component: AddguestComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddguestComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddguestComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.ts new file mode 100644 index 0000000..655c889 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/addguest/addguest.component.ts @@ -0,0 +1,68 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { MyworkspaceService } from 'src/app/services/admin/myworkspace.service'; +@Component({ + selector: 'app-addguest', + templateUrl: './addguest.component.html', + styleUrls: ['./addguest.component.scss'] +}) +export class AddguestComponent implements OnInit { + + public form: FormGroup; + submitted = false; + passchange; + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + get f() { return this.form.controls; } + email: string; + token; + constructor(private _fb: FormBuilder, + private route: ActivatedRoute, + private mywork:MyworkspaceService) { } + + ngOnInit(): void { + this.email = this.mywork.getStoredEmail(); + console.log(this.email) + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + //form validation + this.form = this._fb.group( + { + first_name: ['', Validators.required], + last_name: ['', Validators.required], + mob_no: ['', [Validators.required,Validators.minLength(10)]], + password: ['',[ Validators.required, Validators.minLength(6), Validators.maxLength(40)]], + confirm_passwordS: ['', Validators.required], + + }, ); + } + onsubmit(){ +this.mywork.addguestdetails(this.form.value,this.token).subscribe((data)=>{ + console.log(data); + this.passchange=data; + console.log('success ', data); + },(err) => { + console.log('failure ', err); +}) + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.html new file mode 100644 index 0000000..c7dbdff --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.html @@ -0,0 +1,38 @@ + + +
+ + +
+ +
+ cloudnSure + +
+
+ +
+ + +
+
+ + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.scss new file mode 100644 index 0000000..546c22b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.scss @@ -0,0 +1,75 @@ +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + width: 370px; + //width: 450px; + background: #fff; + color: #a3a3a3; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + border: 0; + outline: 0; + padding: 10px 18px; + } +} +.form__field{ + border: 2px solid #7f8ff4 ; +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: #7f8ff4; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken(#7f8ff4, 4%); + } + + &:active { + //background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + &--primary1{ + background: #4CAF50; + color: #fff; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + + &:hover { + background: darken(#7f8ff4, 4%); + } + + &:active { + background: #7f8ff4; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts new file mode 100644 index 0000000..5b02d71 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ForgotpasswordComponent } from './forgotpassword.component'; + +describe('ForgotpasswordComponent', () => { + let component: ForgotpasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ForgotpasswordComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgotpasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.ts new file mode 100644 index 0000000..5888101 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotpassword/forgotpassword.component.ts @@ -0,0 +1,67 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import {ForgotpassService} from '../../../services/api/forgotpass.service'; +@Component({ + selector: 'app-forgotpassword', + templateUrl: './forgotpassword.component.html', + styleUrls: ['./forgotpassword.component.scss'] +}) +export class ForgotpasswordComponent implements OnInit { + public emailCheckForm: FormGroup; + emailErrMsg: string = "" +emailsend; + constructor(private _fb: FormBuilder, + private router: Router, + private route:ActivatedRoute, + private toastr:ToastrService, + private forgotpassservice:ForgotpassService) { } + + ngOnInit(): void { + this.emailCheckForm = this._fb.group({ + email: ['', Validators.email] + }); + } + onsubmit(){ + let email = this.emailCheckForm.value.email; + console.log(email); + this.forgotpassservice.sendemail(email).subscribe((data)=>{ + this.forgotpassservice.storeEmail(email); + console.log(data); + + // if(data=200){ + // this.toastr.success('Email Send successfully'); + // } + }, + (err: HttpErrorResponse) => { + console.log(err) + if (err.status === 200) { + this.emailsend=err.status; + //this.emailErrMsg = 'Email send please check mail'; + } + + } + ); + this.emailCheckForm.reset(); + } + onSubmit() { + let email = this.emailCheckForm.value.email; + console.log(email); + this.forgotpassservice.sendemail(email).subscribe((res) => { + this.forgotpassservice.storeEmail(email); + //this.router.navigate(["/varify-account"]) + }, (err: HttpErrorResponse) => { + console.log(err) + if (err.status === 409) { + this.emailErrMsg = 'Email Already Exists'; + } else { + this.emailErrMsg = 'Server error'; + } + }) + } + gotoreset(){ + this.router.navigate(["../forgotresetpassword"], { relativeTo: this.route }); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html new file mode 100644 index 0000000..7f51910 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.html @@ -0,0 +1,50 @@ + + +
+ + +
+ +
+ cloudnSure + +
+
+ +
+
+

Please Reset Your Password

+

you're signed in as {{ email }}

+
+ +
+ +
+ + +
+
password is required
+
Password must be Minimum 3 Characters
+
+
+
+ + +
+
Password is required.
+
Password and Confirm Password must be match.
+
+
+ +
+
+

Email Is Reset Please Login

+

Wrong account? Log in instead.

+
+
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss new file mode 100644 index 0000000..3ee7d64 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.scss @@ -0,0 +1,83 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 9px 11px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts new file mode 100644 index 0000000..d6988e6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ForgotresetpasswordComponent } from './forgotresetpassword.component'; + +describe('ForgotresetpasswordComponent', () => { + let component: ForgotresetpasswordComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ForgotresetpasswordComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ForgotresetpasswordComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts new file mode 100644 index 0000000..c61c0a8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword/forgotresetpassword.component.ts @@ -0,0 +1,103 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import {ForgotpassService} from '../../../services/api/forgotpass.service'; +@Component({ + selector: 'app-forgotresetpassword', + templateUrl: './forgotresetpassword.component.html', + styleUrls: ['./forgotresetpassword.component.scss'] +}) +export class ForgotresetpasswordComponent implements OnInit { + emailErrMsg: string = "" + oldpHide: boolean = true; + oldIcon: string = "eye"; + passchange; + + oldShapeChanger() { + this.oldpHide = !this.oldpHide; + if(this.oldpHide){ + this.oldIcon = 'eye' + } else { + this.oldIcon = 'eye-hide' + } + } + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + email: string; + resetPasswordForm: FormGroup; + token; + constructor( private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private forgotpassservice:ForgotpassService) { } + + ngOnInit(): void { + this.email = this.forgotpassservice.getStoredEmail(); + console.log(this.email) + //token + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + this.resetPasswordForm = this._fb.group({ + email:this.email, + newPassword: ['', [Validators.required, Validators.minLength(3)]], + confirmPassword: ['', [Validators.required]] + }, { + validator: ConfirmedValidator('newPassword', 'confirmPassword') + }); + } + + get f() { return this.resetPasswordForm.controls; } + + submitted = false; + onSubmit() { + console.log('this.resetPasswordForm.value : ', this.resetPasswordForm.value); + this.submitted = true; + if(this.resetPasswordForm.invalid){ + return; + } + this.resetPassword(); + } + + resetPassword() { + this.forgotpassservice.resetpass(this.resetPasswordForm.value,this.token) + .subscribe((res) => { + this.passchange=res; + console.log('success ', res); + },(err) => { + console.log('failure ', err); + }); + this.resetPasswordForm.reset(); + } +} +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html new file mode 100644 index 0000000..42fa1be --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.html @@ -0,0 +1,142 @@ + + +
+ + +
+ +
+ cloudnSure + +
+
+ + + + + + + + +
+
+

Welcome to cloudnsure!

+
You're signing up as {{email}}
+
+
+
+ +
+
First Name is required
+
+
+
+ +
+
Last Name is required
+
+
+
+ +
+
Mobile Number is required
+
Mobile Number is 10 numbers
+
+
+
+ + +
+
password is required
+
Password must be Minimum 6 Characters
+
+
+
+ + +
+
Password is required.
+
Password and Confirm Password must be match.
+
+ + +
+
+

User Info Is Added Please Login

+

Wrong account? Log in instead.

+
+
+ + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss new file mode 100644 index 0000000..4408425 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.scss @@ -0,0 +1,86 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 7px 9px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} +form { + margin-left: 8%; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts new file mode 100644 index 0000000..04d1708 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { Forgotresetpassword1Component } from './forgotresetpassword1.component'; + +describe('Forgotresetpassword1Component', () => { + let component: Forgotresetpassword1Component; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ Forgotresetpassword1Component ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(Forgotresetpassword1Component); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts new file mode 100644 index 0000000..6e1b397 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/forgotresetpassword1/forgotresetpassword1.component.ts @@ -0,0 +1,67 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { MyworkspaceService } from 'src/app/services/admin/myworkspace.service'; + +@Component({ + selector: 'app-forgotresetpassword1', + templateUrl: './forgotresetpassword1.component.html', + styleUrls: ['./forgotresetpassword1.component.scss'] +}) +export class Forgotresetpassword1Component implements OnInit { + public form: FormGroup; + submitted = false; + passchange; + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + get f() { return this.form.controls; } + email: string; + token; + constructor(private _fb: FormBuilder, + private route: ActivatedRoute, + private mywork:MyworkspaceService) { } + + ngOnInit(): void { + this.email = this.mywork.getStoredEmail(); + console.log(this.email) + this.token = this.route.snapshot.params["id"]; + console.log("token is ", this.token); + //form validation + this.form = this._fb.group( + { + first_name: ['', Validators.required], + last_name: ['', Validators.required], + mob_no: ['', [Validators.required,Validators.minLength(10)]], + password: ['',[ Validators.required, Validators.minLength(6), Validators.maxLength(40)]], + confirm_passwordS: ['', Validators.required], + + }, ); + } + onsubmit(){ +this.mywork.adduserdetails(this.form.value,this.token).subscribe((data)=>{ + console.log(data); + this.passchange=data; + console.log('success ', data); + },(err) => { + console.log('failure ', err); +}) + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.html new file mode 100644 index 0000000..bc2b0d6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.html @@ -0,0 +1,33 @@ +
+
+ +
+ +
+ +
+
+
\ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.scss new file mode 100644 index 0000000..77184fb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.scss @@ -0,0 +1,9 @@ +.login, +.image { + min-height: 100vh; +} +.bg-image { + background-image: url('https://therichpost.com/wp-content/uploads/2021/02/login-split.jpg'); + background-size: cover; + background-position: center center; +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.ts new file mode 100644 index 0000000..cf59124 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-page/login-page.component.ts @@ -0,0 +1,70 @@ +import { Component, OnInit } from '@angular/core'; +import { Router } from '@angular/router'; +import { LoginService } from '../../../services/api/login.service'; +import { ActivatedRoute} from '@angular/router'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; +import{environment} from 'src/environments/environment'; +//import { UserRegistrationService } from 'src/app/services/api/user-registration.service'; + +@Component({ + selector: 'app-login-page', + templateUrl: './login-page.component.html', + styleUrls: ['./login-page.component.scss'] +}) +export class LoginPageComponent implements OnInit { + // baseUrl= environment.regiurl; + email = ''; + password = ''; + isError = false; + + model: any = {}; + errMsg: string = ''; + constructor( + private router: Router, + private route:ActivatedRoute, + private loginService: LoginService, + private toastr: ToastrService, + ) { } + + ngOnInit() { + this.loginService.logout(false); + // this.userRegistrationService.removeSignedUpUserInfo(); + //this.userRegistrationService.removeStoredEmail(); + } + + onLogin() { + // tslint:disable-next-line:max-line-length + this.loginService.getToken(this.model.email, this.model.password) + .subscribe(resp => { + if (resp.user === undefined || resp.user.token === undefined || resp.user.token === "INVALID") { + this.errMsg = 'Checking Email or password'; + return; + } + this.router.navigate([resp.landingPage]);// add , {skipLocationChange: true} + }, + (errResponse: HttpErrorResponse) => { + switch (errResponse.status) { + case 401: + this.errMsg = 'Email or password is incorrect'; + break; + case 404: + this.errMsg = 'Service not found'; + case 408: + this.errMsg = 'Request Timedout'; + case 500: + this.errMsg = 'Internal Server Error'; + default: + this.errMsg = 'Server Error'; + } + } + ); + + } + goaccount(){ + // window.location.href = `${this.baseUrl}`; + } + goforgotpass(){ + this.router.navigate(["../forgotpass"], { relativeTo: this.route }); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-routing.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-routing.module.ts new file mode 100644 index 0000000..87a8425 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login-routing.module.ts @@ -0,0 +1,22 @@ +import { NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { AddguestComponent } from './addguest/addguest.component'; +import { ForgotpasswordComponent } from './forgotpassword/forgotpassword.component'; +import { ForgotresetpasswordComponent } from './forgotresetpassword/forgotresetpassword.component'; +import { Forgotresetpassword1Component } from './forgotresetpassword1/forgotresetpassword1.component'; + +import { LoginPageComponent } from './login-page/login-page.component'; + +const routes: Routes = [ + { path: 'login', component: LoginPageComponent }, + {path: 'forgotpass', component:ForgotpasswordComponent}, + {path:'forgotresetpassword/:id', component:ForgotresetpasswordComponent}, + {path:'adduser/:id', component:Forgotresetpassword1Component}, + {path:'addguest/:id', component:AddguestComponent}, +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class LoginRoutingModule { } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login.module.ts new file mode 100644 index 0000000..93582e0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/login/login.module.ts @@ -0,0 +1,23 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { ClarityModule } from '@clr/angular'; + +import { LoginRoutingModule } from './login-routing.module'; +import { LoginPageComponent } from './login-page/login-page.component'; +import { ForgotpasswordComponent } from './forgotpassword/forgotpassword.component'; +import { ForgotresetpasswordComponent } from './forgotresetpassword/forgotresetpassword.component'; +import { Forgotresetpassword1Component } from './forgotresetpassword1/forgotresetpassword1.component'; +import { AddguestComponent } from './addguest/addguest.component'; + +@NgModule({ + declarations: [LoginPageComponent, ForgotpasswordComponent, ForgotresetpasswordComponent, Forgotresetpassword1Component, AddguestComponent], + imports: [ + CommonModule, + FormsModule, + ClarityModule, + LoginRoutingModule, + ReactiveFormsModule, + ] +}) +export class LoginModule { } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.html new file mode 100644 index 0000000..2ce72ee --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.html @@ -0,0 +1,26 @@ + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.ts new file mode 100644 index 0000000..cb0dad1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/logo/logo.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-logo', + templateUrl: './logo.component.html', + styleUrls: ['./logo.component.scss'] +}) +export class LogoComponent implements OnInit { + + + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/.DS_Store b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/.DS_Store new file mode 100644 index 0000000..9ef70df Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/.DS_Store differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/BuilderComponents/test.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/BuilderComponents/test.html new file mode 100644 index 0000000..815da4a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/BuilderComponents/test.html @@ -0,0 +1,20 @@ + + + + +gaurav + + + + +

this is h1

+

this is h1

+

this is h1

+

this is h1

+

Lorem ipsum, dolor sit amet consectetur adipisicing elit. Ipsa fuga, asperiores mollitia iste vitae repellendus adipisci atque eum corrupti ad placeat unde voluptatum quia perferendis neque expedita, sequi iure quo. Ut error adipisci ex cum sint, suscipit, voluptatem repellat nemo dolorum unde dolores quasi aut. A earum quo mollitia voluptatibus!

+ + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.html new file mode 100644 index 0000000..5dfe29f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.html @@ -0,0 +1,14 @@ + + +
+ Image +

+ +

About Us

+ + create new project to new user if you have accesss,if dont have access then contact admin. +
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.spec.ts new file mode 100644 index 0000000..6b77344 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AboutComponent } from './about.component'; + +describe('AboutComponent', () => { + let component: AboutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ AboutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AboutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.ts new file mode 100644 index 0000000..07e4283 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/about/about.component.ts @@ -0,0 +1,14 @@ +import { Component, OnInit, VERSION } from '@angular/core'; + +@Component({ + selector: 'app-about', + templateUrl: './about.component.html', + styleUrls: ['./about.component.scss'] +}) +export class AboutComponent implements OnInit { + version: any = VERSION; + constructor() { } + + ngOnInit() {} + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.html new file mode 100644 index 0000000..bf40724 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.html @@ -0,0 +1,144 @@ + + + + + +
+
+

Access Type

+
+
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + +
NameDefaultDescriptionAction
{{data.name}}{{data.defaultvalue}}{{data.description}}
+ + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.scss new file mode 100644 index 0000000..b0303fc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.scss @@ -0,0 +1,62 @@ + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts new file mode 100644 index 0000000..5c4bf19 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AccesstypeComponent } from './accesstype.component'; + +describe('AccesstypeComponent', () => { + let component: AccesstypeComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AccesstypeComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AccesstypeComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.ts new file mode 100644 index 0000000..f70cf1c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/accesstype/accesstype.component.ts @@ -0,0 +1,182 @@ +import { Component, OnInit } from '@angular/core'; +import { Form, FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; + +@Component({ + selector: 'app-accesstype', + templateUrl: './accesstype.component.html', + styleUrls: ['./accesstype.component.scss'] +}) +export class AccesstypeComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + modalAdd= false; + modaledit=false; + moduleAdd=false; + error; + data; + module; + moduledata; + submitted=false; + selected1 = "true"; + public entryForm: FormGroup; + public mentryForm:FormGroup; + constructor( private _fb: FormBuilder,private toastr:ToastrService, + private router: Router,private accesstype:AccesstypeService, + private route: ActivatedRoute, + ) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + + name:['',[Validators.required]], + defaultvalue:['',[Validators.required]] , + description:['',[Validators.required]] , + + }); + this.mentryForm=this._fb.group({ + modulename:[null], + }) + this.getdata(); + this.getdata1(); + } + getdata(){ + this.accesstype.getAll().subscribe(resp => { + this.data = resp; + console.log('menus: ', this.data); + if(this.data.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + getdata1(){ + this.accesstype.getAll1().subscribe(resp => { + this.moduledata = resp; + console.log('menus: ', this.moduledata); + if(this.moduledata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + goToAdd(){ + this.modalAdd=true; + } + onSubmit(){ + console.log(this.entryForm.value); + this.submitted=true; + if (this.entryForm.invalid) { + return; + } + console.log(this.entryForm.value); + this.accesstype.create(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Data Getting Some Error'); + } + + }); + this.modalAdd=false; + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit=true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.accesstype.delete(id).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + + } + onUpdate(id){ + this.modaledit=false; +this.accesstype.update(id,this.rowSelected).subscribe((data)=>{ +console.log(data); +if (data) { + this.toastr.success('Updated successfully'); + } +}, +(error) => { +console.log('Error in adding data...',+error); +if(error){ + this.toastr.error('Not updated Data Getting Some Error'); +} +}); + } + goTomodules(){ + this.router.navigate(["../acmodules"], { relativeTo: this.route }); + } + accessid; + gomodules(row){ + this.rowSelected = row; + this.moduleAdd=true; + this.accessid=row.id + this.getallidmodules(this.accessid) + } + moduledata1; + getallidmodules(id){ + this.accesstype.getById(id).subscribe((data)=>{ + console.log(data); + this.moduledata1=data; + if(this.moduledata1.length==0){ + this.error="No data Available"; + console.log(this.error) + } + }) + } + addmodules(id){ + console.log(this.mentryForm.value); +this.accesstype.addById(id,this.mentryForm.value).subscribe((data)=>{ + console.log(data); + if(data){ + this.toastr.success("Added Successfully"); + } +},(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Added Data Getting Some Error'); + } + }) +this.moduleAdd=false; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.html new file mode 100644 index 0000000..23bd708 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.html @@ -0,0 +1,17 @@ + +
+ +
+ + +
+ +
+ +
+
+ + +
+ +
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.scss new file mode 100644 index 0000000..cee762a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.scss @@ -0,0 +1,10 @@ +input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.spec.ts new file mode 100644 index 0000000..28a3851 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AudithistoryComponent } from './audithistory.component'; + +describe('AudithistoryComponent', () => { + let component: AudithistoryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AudithistoryComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AudithistoryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.ts new file mode 100644 index 0000000..2e2f16e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/audithistory/audithistory.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { AuditreportService } from 'src/app/services/admin/auditreport.service'; + +@Component({ + selector: 'app-audithistory', + templateUrl: './audithistory.component.html', + styleUrls: ['./audithistory.component.scss'] +}) +export class AudithistoryComponent implements OnInit { +id:any; +data:any; +data1; +olddata; +newdata; + constructor( private route: ActivatedRoute,private auditservice:AuditreportService,) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + } + getById(id:any){ + this.auditservice.getbyid(id).subscribe((data)=>{ + console.log(data); + this.data=data; + this.data1 = JSON.parse(this.data?.json) ; + console.log(this.data1); + //this.olddata = this.olddata+ this.data1[0] + " "; + console.log(this.olddata) + this.olddata= JSON.stringify(this.data1[0]); + this.newdata=JSON.stringify(this.data1[1]); + }) + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.html new file mode 100644 index 0000000..a9b1a0c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.html @@ -0,0 +1,187 @@ + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +
+ +
+ + + + +
+
+ + + + + + + + + + + + + + + Loading ... +
{{error}}
+ + + ID + + + Created Date + + + User + + + Entity Type + + + Action + + + Ip + + + MAC + + + Agent + + + + + + + + + {{user.audi_id}} + {{user.createdAt}} + {{user.user}} + {{user.entity_name}} + {{user.action}} + {{user.ip}} + {{user.mac_id}} + {{user.user}} + + + + + + + + + + + + + + + + +
User name{{user.userName}}
+
+
+ + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.scss new file mode 100644 index 0000000..58aef09 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.scss @@ -0,0 +1,8 @@ +input { + outline: 0; + border-width: 0 0 2px; + border-color: #ccc +} +input:focus { + border-color: black; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.spec.ts new file mode 100644 index 0000000..7c2fca8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AuditreportComponent } from './auditreport.component'; + +describe('AuditreportComponent', () => { + let component: AuditreportComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AuditreportComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AuditreportComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.ts new file mode 100644 index 0000000..ca2769d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/auditreport/auditreport.component.ts @@ -0,0 +1,109 @@ +import { Component, OnInit } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { AuditreportService } from 'src/app/services/admin/auditreport.service'; +import { UsermaintanceService } from 'src/app/services/admin/usermaintance.service'; +import { OutgoingwebhookService } from 'src/app/services/fnd/outgoingwebhook.service'; + +@Component({ + selector: 'app-auditreport', + templateUrl: './auditreport.component.html', + styleUrls: ['./auditreport.component.scss'] +}) +export class AuditreportComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + modalAdd= false; + modaldelete=false; + rowSelected :any= {}; + error; + myForm:FormGroup; + date; + userdata; + entitydata; + selectedfrom; + selectedto; + selecteduser; + selectedentity; + constructor(private auditservice:AuditreportService,private router: Router, + private route: ActivatedRoute, private mainservice:UsermaintanceService, + private toastr: ToastrService,private webhookservice:OutgoingwebhookService,) { } + + ngOnInit(): void { + this.getall(); +this.getalluser(); +this.getonentity(); + this.myForm = new FormGroup({ + 'presentDate': new FormControl((new Date()).toISOString().substring(0,10)), + }); + this.date=(new Date()).toISOString().substring(0,10); + console.log(this.date); + + } + getall(){ + this.auditservice.getAll().subscribe((data)=>{ + console.log(data); + this.givendata=data; + }); + } + getalluser(){ + this.mainservice.getAll().subscribe((data)=>{ + console.log(data); +this.userdata=data; + }) + } + getonentity(){ + this.webhookservice.getallentity().subscribe((data)=>{ + console.log(data); + this.entitydata=data; + }) + + } + history(id:any){ + this.router.navigate(["../audithistory/" + id], { relativeTo: this.route }); + + } + modo(val){ + console.log(val); + this.selecteduser=val; + this.auditservice.getbyuser(val).subscribe((data)=>{ + console.log(data); + }) + } + modo1(val){ + console.log(val); + this.selectedentity=val; + this.auditservice.getbyentity(val).subscribe((data)=>{ + console.log(data); + }) + } + modo2(val){ + console.log(val); + this.selectedfrom=val; + + } + modo3(val){ + console.log(val); +this.selectedto=val; +this.auditservice.onlydate(this.selectedfrom,this.selectedto).subscribe((data)=>{ + console.log(data); +}) + } + apply(){ + this.auditservice.apply(this.selectedfrom,this.selectedto,this.selecteduser,this.selectedentity).subscribe((data)=>{ + console.log(data); + this.givendata=data; + }) + } + goToAdd(){ + + } + onExport(){ + + } + onSubmit(){ + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.html new file mode 100644 index 0000000..fce1d94 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.html @@ -0,0 +1,128 @@ + + + + +
+
+ +
+ + +
+
+ + + + + + + + + data not found! + + + NO + + + Structure ID + + + Structure Name + + + Structure Seq + + + + + + {{i+1}} + {{user.StructureID}} + {{user.StructureName}} + {{user.StructureSeq}} + + + + + + + + + + + + + + + + +
StructureName{{user.StructureName}}
+
+
+ + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts new file mode 100644 index 0000000..7fde7a8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentmasterComponent } from './documentmaster.component'; + +describe('DocumentmasterComponent', () => { + let component: DocumentmasterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentmasterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentmasterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.ts new file mode 100644 index 0000000..4779866 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentmaster/documentmaster.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +@Component({ + selector: 'app-documentmaster', + templateUrl: './documentmaster.component.html', + styleUrls: ['./documentmaster.component.scss'] +}) +export class DocumentmasterComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; + rowSelected :any= {}; + constructor(private excel: ExcelService,) { } + + ngOnInit(): void { + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + //this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.html new file mode 100644 index 0000000..db3c0eb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.html @@ -0,0 +1,180 @@ + + + + +
+
+ +
+ + +
+
+ + + + + + + + + data not found! + + + NO + + + Document Code + + + Pad Zero + + + Start With + + + Last Number + + + Max Length + + + Structure ID + + + + + {{i+1}} + {{user. DocumentCode}} + {{user. PadZero}} + {{user. StartWith}} + {{user. LastNumber}} + {{user. MaxLength}} + {{user. StructureID}} + + + + + + + + + + + + + + + + +
StructureID{{user. StructureID}}
+
+
+ + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts new file mode 100644 index 0000000..18b137e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentreferenceComponent } from './documentreference.component'; + +describe('DocumentreferenceComponent', () => { + let component: DocumentreferenceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentreferenceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentreferenceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.ts new file mode 100644 index 0000000..5678564 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentreference/documentreference.component.ts @@ -0,0 +1,30 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +@Component({ + selector: 'app-documentreference', + templateUrl: './documentreference.component.html', + styleUrls: ['./documentreference.component.scss'] +}) +export class DocumentreferenceComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; + rowSelected :any= {}; + constructor(private excel: ExcelService,) { } + + ngOnInit(): void { + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + //this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.html new file mode 100644 index 0000000..dae85a6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.html @@ -0,0 +1,56 @@ + +
+
+
+ +
+ For Structure ID + +
+
+ + + + + + No Result Found + No + Seq + Prefix + Type + Delete + + + + + + + + + users + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts new file mode 100644 index 0000000..0f200c4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DocumentstructureComponent } from './documentstructure.component'; + +describe('DocumentstructureComponent', () => { + let component: DocumentstructureComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DocumentstructureComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DocumentstructureComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.ts new file mode 100644 index 0000000..2117853 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/documentstructure/documentstructure.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-documentstructure', + templateUrl: './documentstructure.component.html', + styleUrls: ['./documentstructure.component.scss'] +}) +export class DocumentstructureComponent implements OnInit { + loading = false; + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.html new file mode 100644 index 0000000..3212efd --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.html @@ -0,0 +1,82 @@ + + + +
+
+
+

Exception

+
+ +
+ +
+ + Loading ... +
{{error}}
+ + + LoG ID + + + Creation Date + + + File Name + + + Size (MB) + + + + + + + {{user.logId}} + {{user.createdOnFormated}} + + {{user.logFileName}} + {{user.filesizeCurrent}} + + + + + + + + + + + + + + +
User name{{user.userName}}
+
+
+ + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.spec.ts new file mode 100644 index 0000000..b68dfb9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ExceptionComponent } from './exception.component'; + +describe('ExceptionComponent', () => { + let component: ExceptionComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ExceptionComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ExceptionComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.ts new file mode 100644 index 0000000..5820dc4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/exception/exception.component.ts @@ -0,0 +1,22 @@ +import { Component, OnInit } from '@angular/core'; +import { FormGroup } from '@angular/forms'; + +@Component({ + selector: 'app-exception', + templateUrl: './exception.component.html', + styleUrls: ['./exception.component.scss'] +}) +export class ExceptionComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + modalAdd= false; + modaldelete=false; + rowSelected :any= {}; + error; + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.html new file mode 100644 index 0000000..aac74fd --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.html @@ -0,0 +1,147 @@ + + + + +
+
+
+

Log Configuration

+
+
+ + + + +
+
+ + + + + + + + + + + + Loading ... +
{{error}}
+ + + LoG ID + + + USER Name + + + Creation Date + + + File Name + + + Status + + + Log level + + + Size (MB) + + + + + + + {{user.logId}} + {{user.userName}} + {{user.createdOnFormated}} + + {{user.logFileName}} + {{user.status}} + {{user.logLevel}} + {{user.filesizeCurrent}} + + + + + + + + + + + + + + + +
User name{{user.userName}}
+
+
+ + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.scss new file mode 100644 index 0000000..e7747e6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.scss @@ -0,0 +1,17 @@ +@import '../../../../../styles1.scss'; + +input[type='checkbox']{ + width: 14px !important; + height: 14px !important; + margin: 5px; + -webkit-appearance: none; + -moz-appearance: none; + -o-appearance: none; + appearance: none; + outline: 1px solid gray; + box-shadow: none; + font-size: 0.8em; + text-align: center; + line-height: 1em; + background: yellow; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.spec.ts new file mode 100644 index 0000000..d4570c2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogconfigComponent } from './logconfig.component'; + +describe('LogconfigComponent', () => { + let component: LogconfigComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LogconfigComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LogconfigComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.ts new file mode 100644 index 0000000..17c2342 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logconfig/logconfig.component.ts @@ -0,0 +1,166 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import {LogconfigService} from '../../../../services/admin/logconfig.service'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { UserInfoService } from 'src/app/services/user-info.service'; +import { ToastrService } from 'ngx-toastr'; +import { UsermaintanceService } from 'src/app/services/admin/usermaintance.service'; +@Component({ + selector: 'app-logconfig', + templateUrl: './logconfig.component.html', + styleUrls: ['./logconfig.component.scss'] +}) +export class LogconfigComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + modalAdd= false; + modaldelete=false; + rowSelected :any= {}; + filename:any; + username; + level; + mcreate; + mdelete; + showdata; + error; + constructor(private excel: ExcelService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute,private userservice:UsermaintanceService, + private mainservice:LogconfigService,private userInfoService:UserInfoService, + private menuGroupService: MenuGroupService, private toastr: ToastrService, + ) { } + retrievedImage: File; + base64Data: any; + retrieveResonse: any; + user_name; + userdata1; + ngOnInit(): void { + this.user_name = this.userInfoService.getUserName(); + console.log('user name: ' + this.user_name); + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete=this.showdata.mdelete + console.log(this.mdelete); + + this.getdata(); + this.getData(); + + } + getData(){ + this.userservice.getAll().subscribe((data) => { + console.log(data); + this.userdata1 = data; + if(this.userdata1.length==0){ + this.error="No data Available"; + console.log(this.error) + } + + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + } + getdata(){ + this.mainservice.getAll().subscribe((data)=>{ + this.givendata=data; + console.log(this.givendata); + if(this.givendata.length==0){ + this.error="No data Available plz add if Required"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="server Error"; + } + }); + this.entryForm = this._fb.group({ + user:[null] , + loglevel:[null] , + + }); + + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=!this.modalAdd; + + } + da; + onSubmit() { + this.mainservice.create(this.entryForm.value.user,this.entryForm.value.loglevel).subscribe(data=>{ + console.log(data); + this.da=data; + this.ngOnInit(); + if(data){ + this.toastr.success(this.da.message) + } + }, + (error)=>{ + console.log(error); + } + ); + this.modalAdd=false; + } + modaldel(row){ + this.rowSelected = row; + this.modaldelete=true; + } + delete(name) + { + console.log("in delete "+name); + this.mainservice.delete(name).subscribe( + (data) => { + console.log(data); + this.sa=data; + if(data){ + this.toastr.success(this.sa.message) + } + //this.ngOnInit(); + }, ); + this.modaldelete=false; + } + download(filename){ + this.mainservice.downloadfile(filename).subscribe((data)=>{ + this.retrieveResonse = data; + console.log(this.retrieveResonse); + // this.base64Data = this.retrieveResonse.picByte; + // this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data; + }) + } + start(){ + this.modalAdd=!this.modalAdd; + + } + sa; + stop(){ + this.mainservice.delete(this.user_name).subscribe( + (data) => { + console.log(data); + this.sa=data; + if(data){ + this.toastr.success(this.sa.message) + } + //this.ngOnInit(); + }, ); + } + logid; + read(data){ +console.log(data); +this.logid=data.logId; +this.router.navigate(["/cns-portal/logreader"],{ relativeTo: this.route, queryParams: {id: this.logid } }); + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.html new file mode 100644 index 0000000..cabe59b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.html @@ -0,0 +1,14 @@ +
+

FILE EDITOR

+
+
+
+ + + +
+
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.spec.ts new file mode 100644 index 0000000..2b9318a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LogreaderComponent } from './logreader.component'; + +describe('LogreaderComponent', () => { + let component: LogreaderComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ LogreaderComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(LogreaderComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.ts new file mode 100644 index 0000000..ba88dc3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/logreader/logreader.component.ts @@ -0,0 +1,51 @@ +import { Component, OnInit, ViewChild } from '@angular/core'; +import { ActivatedRoute } from '@angular/router'; +import { CodemirrorComponent } from '@ctrl/ngx-codemirror'; +import { ToastrService } from 'ngx-toastr'; +import { LogconfigService } from 'src/app/services/admin/logconfig.service'; + +@Component({ + selector: 'app-logreader', + templateUrl: './logreader.component.html', + styleUrls: ['./logreader.component.scss'] +}) +export class LogreaderComponent implements OnInit { + @ViewChild('codeEditor') codeEditor: CodemirrorComponent; + codeMirrorOptions: any = { + theme: "lint", + mode:"text/x-java", + lineNumbers: true, + //noNewlines: true, + lineSeparator: "\n", + lineWrapping: true, + foldGutter: true, + gutters: [ + "CodeMirror-linenumbers", + "CodeMirror-foldgutter", + "CodeMirror-lint-markers", + ], + autoCloseBrackets: true, + extraKeys: { "Ctrl-Space": "autocomplete" }, + matchBrackets: true, + lint: true, + }; + id:any; + fileData:any={}; + constructor( private route:ActivatedRoute, private mainservice:LogconfigService, + private toastr:ToastrService,) { } + + ngOnInit(): void { + this.route.queryParams.subscribe(params => { + this.id = +params['id']; + console.log(" ID ",this.id); + }); + this.mainservice.readfile(this.id).subscribe((data)=>{ + console.log(data); + this.fileData = data; + + }) + } + saveTextIntoFile(){ + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.html new file mode 100644 index 0000000..1b02faa --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.html @@ -0,0 +1,118 @@ + +
+
+

Manage Members

+
+ + +
+ +
+ +
+ + + +
+
+ + + + + Loading ... + + + Name + + + Account Type + + + Billing Status + + + Aunthentication + + + Actions + + + + + {{user.member_name}}
{{user.name}}{{user.email}}
+ {{user.description}} + {{user.status}} + + + +
+ + + data + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} data + + +
+ + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.scss new file mode 100644 index 0000000..58aef09 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.scss @@ -0,0 +1,8 @@ +input { + outline: 0; + border-width: 0 0 2px; + border-color: #ccc +} +input:focus { + border-color: black; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.spec.ts new file mode 100644 index 0000000..ecc0f64 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ManagemenComponent } from './managemen.component'; + +describe('ManagemenComponent', () => { + let component: ManagemenComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ManagemenComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ManagemenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.ts new file mode 100644 index 0000000..be4b1dc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/managemen/managemen.component.ts @@ -0,0 +1,91 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import { MyworkspaceService } from 'src/app/services/admin/myworkspace.service'; + +@Component({ + selector: 'app-managemen', + templateUrl: './managemen.component.html', + styleUrls: ['./managemen.component.scss'] +}) +export class ManagemenComponent implements OnInit { + loading = false; + allteam; + teamid; + userid; + public teamForm: FormGroup; + public addteamForm:FormGroup; + modalteam=false; + allacciduser; + search; + constructor(private mywork:MyworkspaceService, + private toastr:ToastrService, + private excel: ExcelService, + private route: ActivatedRoute, + private _fb: FormBuilder,) { } + + ngOnInit(): void { + this.teamid = this.route.snapshot.params["id"]; + console.log("update with id = ", this.teamid); + this.getall(this.teamid); + this.teamForm = this._fb.group({ + name:[null] , + }); + this.addteamForm=this._fb.group({ + team_id: [null], + member_id: [null], + member_type:[null], + access_days: [null], + access_start_date: [null], + member_name: [null] + }) + } + + getall(id){ +this.mywork.getallteammeme(this.teamid).subscribe((data)=>{ + this.allteam=data; + console.log(this.allteam) +}) + } + + goToAdd() { + this.modalteam=true; + this.getuserallacid(); + //this.router.navigate(["../add"], { relativeTo: this.route }); + } + useradd(data){ +this.addteamForm.value.team_id=this.teamid; +this.addteamForm.value.member_id=data.userId; +this.addteamForm.value.member_name=data.username; +this.userid=data.userId; +console.log(this.userid); +this.oncreateteam(); +this.modalteam=false; + } + getuserallacid(){ + this.mywork.getallusertosameaccid().subscribe((data)=>{ + this.allacciduser=data; + console.log(this.allacciduser); + }) + } + oncreateteam(){ + this.mywork.addteammem(this.teamid,this.userid,this.addteamForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success(' Added successfully'); + } + },(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Getting Some Error'); + } + }) + } + onExport() { + this.excel.exportAsExcelFile(this.allteam, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html new file mode 100644 index 0000000..4b1d101 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.html @@ -0,0 +1,1057 @@ + + +
+
+
+

User list

+
+
+ + + +
+
+ + + user not found! + + + Menu Name + + + + + Description + + + + + Enabled + + + + + Start Date + + + + + End Date + + + + + + {{user.menu_name}} + {{user.description}} + {{user.active}} + {{user.start_date_1}} + {{user.end_date_1}} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Menu Name: {{user.menu_name}} +
Description: {{user.description}}
Enabled: {{user.active}}
Default End Date: 10/03/2001 Start Date: {{user.start_date_1}}
Default End Date: 10/03/2001 End Date: {{user.end_date_1}}
+ + + + + + + + + + + + + + + + + + + +
Sr. NoNameTypeMenu NameActive
{{ i + 1 }}{{ line.name }}{{ line.type }} {{ line.menu_name }} {{ line.active }}
+ + +
+
+ + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss new file mode 100644 index 0000000..76ae2bd --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.scss @@ -0,0 +1,65 @@ +// // @import '../../../../assets/scss/var'; +// .s-info-bar { +// display: flex; +// flex-direction: row; +// justify-content: space-between; +// button { +// outline: none; +// } +// } + +// .grid-pg { +// width:750px; +// } + + +// #add { +// position: absolute; +// //position: fixed; +// transition: .5s ease; +// top: 16%; +// left: 79%; +// } + +input[type=text],[type=date], select { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + .required-field{ + color: red; + + } + .horizontal{ + width: 50%; + padding: 10px; + } + + .td-title { + text-align: center; + color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); + } + th{ + background-color:rgb(170, 169, 169); + font-weight: bold; + } + .td-content{ + text-align: left; + } + .delete,.heading{ + text-align: center; + color: red; + } + .section p { + background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; + } + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts new file mode 100644 index 0000000..5a98b4a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/all/all-menu-group.component.ts @@ -0,0 +1,506 @@ +import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; +import { MenuGroupService } from '../../../../../services/admin/menu-group.service'; +import { MenuRegisterService } from '../../../../../services/admin/menu-register.service'; + +import { ToastrService } from 'ngx-toastr'; +import { university } from '../../../../../models/fnd/university'; +import { AlertService } from '../../../../../services/alert.service'; +import { UniversityService } from '../../../../../services/fnd/university.service'; +import { ExcelService } from '../../../../../services/excel.service'; +import * as moment from 'moment'; +import { FormArray, FormBuilder, FormGroup } from '@angular/forms'; +import { HttpErrorResponse } from '@angular/common/http'; +import { ActivatedRoute, Router } from '@angular/router'; + +@Component({ + selector: 'app-all-menu-group', + templateUrl: './all-menu-group.component.html', + styleUrls: ['./all-menu-group.component.scss'], +}) +export class AllMenuGroupComponent implements OnInit { + + rowSelected: any = {}; + modaldelete = false; + modalEdit = false; + modalAdd = false; + public entryForm: FormGroup; + + loading = false; + university; + modalOpenedforNewLine = false; + newLine: university = new university(); + + hname = ['ashwini', 'akash', 'satyam', 'ganesh', 'krishna']; + + email = ['a@gmail.com', 'b@gmail.com', 'c@gmail.com', 'd@gmail.com', 'k@gmail.com']; + + subject = ['marathi', 'hindi', 'english']; + + booktype = ['maths', 'language', 'science']; + + bookname: string[] = ['rich dad poor dad', 'The one thing', 'The momb who head farai', 'trump', 'lucky', 'syamchi aai', + 'aai', 'ek hota karwar', 'chawa', 'mutunjay', 'duniyadari', 'dad', + 'story book', 'horror story', 'poem']; + + writer = ['true', 'false']; + + + price = ['100', '200']; + + basic: boolean = false; + + id: number; + submitted = false; + currentUrl = ""; + selected: any[] = []; + + constructor( + private _mg: MenuGroupService, + private _mr: MenuRegisterService, + private mainService: UniversityService, + private alertService: AlertService, + private toastr: ToastrService, + private excel: ExcelService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + ) { + + } + + ngOnInit() { + + this.getData(); + + } + getData() { + this._mg.getAll().subscribe((data) => { + console.log(data); + this.university = data; + this.university = this.university.items; + console.log(this.university); + + }); + + this.entryForm = this._fb.group({ + menu_name: [null], + description: [null], + active: [null], + start_date_1: [null], + end_date_1: [null], + start_date: [null], + end_date: [null], + + + menu_group_lines: this._fb.array([this.initLinesForm()]), + + + + }); + + } + + initLinesForm() { + return this._fb.group({ + + menu_id: 23, + menu_name: [null], + name: [null], + active: [null], + seq: 32, + type: [null], + + }); + } + + onEdit(row) { + this.rowSelected = row; + console.log(this.rowSelected); + + this.modalEdit = true; + } + + onDelete(row) { + this.rowSelected = row; + this.modaldelete = true; + } + + delete(id) { + this.modaldelete = false; + console.log("in delete " + id); + // this.mainService.delete(id).subscribe( + // (data) => { + // console.log(data); + + // this.ngOnInit(); + + // }, + // ); + + this._mg.deleteById(id).subscribe( + (data: any)=>{ + console.log('Deletion success...'); + this.ngOnInit(); + } + ); + if (id) { + this.toastr.success('Deleted successfully'); + } + + } + + onUpdate(id) { + this.modalEdit = false; + //console.log("in update"); + console.log("id " + id); + console.log(this.rowSelected); + //console.log("out update"); + // this.mainService.update(id, this.rowSelected).subscribe( + // (data) => { + // console.log(data); + + // }, + + // ); + this._mg.updateGroupHeader(id, this.rowSelected).subscribe( + (data: any)=>{ + console.log(data); + console.log('Update Success...'); + this.modalEdit = false; + this.ngOnInit(); + + }, + (error: any)=>{ + console.log(error); + + } + ); + if (id) { + this.toastr.success('Updated successfully'); + } + + } + onExport() { + this.excel.exportAsExcelFile(this.university, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd(row) { + + this.modalAdd = true; + + } + onSubmit() { + + + + //console.warn("calling submit"); + + //console.log(this.entryForm.value); + this.submitted = true; + if (this.entryForm.invalid) { + return; + } + this.onCreate(); + } + + + + onCreate() { + this.modalAdd = false; + + this._mg.addToDb(this.entryForm.value).subscribe( + (data: any)=>{ + console.log(data); + this.ngOnInit(); + }, + (error: any)=>{ + console.log(error); + + } + ); + if (this.entryForm.value) { + this.toastr.success('Added successfully'); + + } + } + + get controls() { + return (this.entryForm.get("menu_group_lines") as FormArray).controls; + } + + onRemoveLines(index: number) { + (this.entryForm.get("menu_group_lines")).removeAt(index); + } + onAddLines() { + (this.entryForm.get("menu_group_lines")).push(this.initLinesForm()); + } + update() { + this.mainService.update(this.id, this.university).subscribe( + (data) => { + console.log(data); + + }, + (error: HttpErrorResponse) => { + console.log(error.message); + } + ); + } + +} + + + + + + +// import { Component, OnInit, TemplateRef, ViewChild, ViewEncapsulation } from '@angular/core'; +// import { MenuGroupService } from 'src/app/services/api/menu-group.service'; +// import { MenuRegisterService } from 'src/app/services/api/menu-register.service'; + + +// @Component({ +// selector: 'app-all-menu-group', +// templateUrl: './all-menu-group.component.html', +// styleUrls: ['./all-menu-group.component.scss'], +// encapsulation: ViewEncapsulation.Emulated +// }) +// export class AllMenuGroupComponent implements OnInit { +// @ViewChild('getById') selectById: TemplateRef; +// @ViewChild('txId') txId: TemplateRef; +// basic: boolean = false; +// columns: any[]; +// rows: any[]; +// temp = []; + +// filterData: string; +// isLoading: boolean = false; + +// modalEdit: false; +// loading = false; +// openEdit = false; +// openAdd = false; +// openAddLine = false; +// openEditHeader = false; + +// mgdata: any; +// linesData: Array; +// lines = []; + +// updata = { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// description: '', +// end_date: '', +// end_date_1: '', +// menu_name: '', +// start_date: '', +// start_date_1: '', +// updatedAt: '', +// updatedBy: '', +// menu_group_lines: [ +// { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// menu_id: '', +// manu_name: '', +// name: '', +// seq: '', +// type: '', +// updatedAt: '', +// updatedBy: '' +// }, +// ], +// } + +// updateHeader = { +// id: '', +// active: '', +// createdAt: '', +// createdBy: '', +// description: '', +// end_date: '', +// end_date_1: '', +// menu_name: '', +// start_date: '', +// start_date_1: '', +// updatedAt: '', +// updatedBy: '', +// } + +// menu_group_line = +// { +// id: '', +// menu_id: '', +// menu_name: '', +// name: '', +// active: '', +// seq: '', +// type: '', +// menu_group_header: { +// id: '' +// } +// } + +// headerAdd = { +// menu_name: '', +// description: '', +// active: false, +// start_date_1: '', +// end_date_1: '' +// } + +// lineAdd = { +// name: '', +// menu_name: '', +// active: false, +// type: '', +// menu_group_header: { +// id: '' +// } +// } + +// constructor( +// private _mg: MenuGroupService, +// private _mr: MenuRegisterService +// ) { +// this.linesData = new Array(); +// } + +// ngOnInit() { + +// this._mg.getAll().subscribe( +// (data: any) => { +// this.mgdata = data; +// console.log(this.mgdata); + +// } +// ); + +// } + +// addData() { +// console.log(this.headerAdd); +// this._mg.addToDb(this.headerAdd).subscribe( +// (data: any) => { +// console.log('Data addedd successfully...'); +// this.openAdd = false; +// this.ngOnInit(); +// }, +// (error: any) => { +// console.log(error); + +// } + +// ); +// } + +// openAddLinef(id: any) { +// this.openAddLine = true; +// console.log(id); +// this.lineAdd.menu_group_header.id = id; + + +// } +// saveD() { +// console.log(this.lineAdd); +// this._mg.addLineToDb(this.lineAdd).subscribe( +// (data: any) => { +// console.log('data added success...'); +// this.openAddLine = false; +// this.ngOnInit(); +// }, +// (error: any) => { +// console.log(error); + +// } +// ); +// } + +// openEditGroup(id: any) { +// this.openEdit = true; +// console.log(id); +// this._mg.getOneById(id).subscribe( +// (data: any) => { +// this.updata = data; +// this.lines = this.updata.menu_group_lines; +// for(let val of this.updata.menu_group_lines){ +// this.linesData.push(val); +// } +// console.log('New Data of Lines : '); +// console.log(this.lines); +// }, +// (error: any) => { +// console.log(error); + +// } +// ); + +// } + +// perfUpdate(){ +// console.log(this.updata); +// this.updateHeader.id = this.updata.id; +// this.updateHeader.active = this.updata.active; +// this.updateHeader.createdAt = this.updata.createdAt; +// this.updateHeader.createdBy = this.updata.createdBy; +// this.updateHeader.description = this.updata.description; +// this.updateHeader.end_date = this.updata.end_date; +// this.updateHeader.end_date_1 = this.updata.end_date_1; +// this.updateHeader.menu_name = this.updata.menu_name; +// this.updateHeader.start_date = this.updata.start_date; +// this.updateHeader.start_date_1 = this.updata.start_date_1; +// this.updateHeader.updatedAt = this.updata.updatedAt; +// this.updateHeader.updatedBy = this.updata.updatedBy; + +// this._mg.updateGroupHeader(this.updateHeader.id, this.updateHeader).subscribe( +// (datah: any)=>{ +// console.log('Data(header) updated successsfully...'); +// console.log(datah); + +// for(let val of this.lines){ +// this.menu_group_line.id = val.id; +// this.menu_group_line.menu_id = val.menu_id; +// this.menu_group_line.menu_name = val.menu_name; +// this.menu_group_line.name = val.name; +// this.menu_group_line.seq = val.seq; +// this.menu_group_line.type = val.type; +// // this.menu_group_line.menu_group_header.id = datah.id; +// this.menu_group_line.menu_group_header.id = this.updateHeader.id; + +// this._mg.updateLineById(this.menu_group_line).subscribe( +// (data: any)=>{ +// console.log('Data(Line) Updated Successfully...'); +// console.log(data); +// this.linesData = []; +// this.openEdit = false; +// this.ngOnInit(); +// console.log(this.linesData); + +// }, +// (error: any)=>{ +// console.log(error); + +// } +// ); +// } +// }, +// (error: any)=>{ +// console.log(error); + +// } +// ); +// } + +// closeM(){ +// this.openEdit = false; +// this.linesData = []; +// } + + + +// } + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html new file mode 100644 index 0000000..75220a5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.html @@ -0,0 +1,99 @@ + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts new file mode 100644 index 0000000..2ba68dc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.component.ts @@ -0,0 +1,97 @@ +import { Component, OnInit } from "@angular/core"; +import { ActivatedRoute, Router } from "@angular/router"; +import { HttpClient, HttpErrorResponse } from "@angular/common/http"; +// import { Rn_Menu_Group_Line } from "src/app/models/Rn_Menu_Group_Line"; +// import { Rn_Menu_Group_Header } from "src/app/models/Rn_Menu_Group_Header"; +// import { MenuGroupService } from "src/app/services/api/menu-group.service"; +// import { MenuRegisterService } from "src/app/services/api/menu-register.service"; + +@Component({ + selector: "edit-menu-group", + templateUrl: "./edit-menu-group.component.html", + styleUrls: ["./edit-menu-group.scss"], +}) +export class EditMenuGroupComponent implements OnInit { + updated = false; + // rn_menu_group_header: Rn_Menu_Group_Header; + // rn_menu_group_line: Rn_Menu_Group_Line[]; + id: number; + + types = ['user', 'admin', 'mis report', 'bi report']; + + constructor( + private router: Router, + private route: ActivatedRoute, + // private menuRegisterService: MenuRegisterService, + // private menuGroupService: MenuGroupService + ) {} + + ngOnInit() { + //this.getMapings(); + + // this.rn_menu_group_header = new Rn_Menu_Group_Header(); + // this.id = this.route.snapshot.params["id"]; + // console.log("update with id = ", this.id); + // this.getById(this.id); + } + +// getById(id: number) { +// this.menuGroupService.getById(id).subscribe((data) => { +// this.rn_menu_group_header = data; +// this.rn_menu_group_line = data.menu_group_lines; +// }); +// } + +// update() { +// this.menuGroupService.update(this.id, this.rn_menu_group_header).subscribe( +// (resp) => { +// console.log(resp); +// this.router.navigate(["../../all"], { relativeTo: this.route }); +// }, +// (error: HttpErrorResponse) => { +// console.log(error.message); +// } +// ); +// this.rn_menu_group_header = new Rn_Menu_Group_Header(); +// } + +// onSubmit() { +// this.updated = true; +// this.update(); +// } + +// /* getMapings() { +// this.httpService +// .get('./assets/json/form-setup-mapping.json') +// .subscribe(data => { +// console.log(data); +// this.mappings = data; +// }, err => console.log(err) +// ) +// } */ + +// menuDate: any[]; +// menuDropDown: any[]; +// getMenuData() { +// //this.menuRegisterService.getAll().subscribe((data) => { +// this.menuRegisterService.getByAccountId().subscribe((data) => { +// this.menuDate = data; +// console.log('Menu List by Account Id : ', this.menuDate); +// const keys = this.menuDate.map((item) => { +// const container = {id: '', name: ''}; +// container.id = item.id; +// container.name = item.main_menu_name; +// return container; +// }); +// console.log('Menu dropdown: ', keys); +// this.menuDropDown = keys; +// }, (err) => { +// console.log(err) +// } +// ); +// } + +// back() { +// this.router.navigate(["../../all"], { relativeTo: this.route }); +// } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss new file mode 100644 index 0000000..ffe3733 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/edit/edit-menu-group.scss @@ -0,0 +1,51 @@ +// @import '../../../../assets/scss/var'; + +.s-info-bar{ + display:flex; + flex-direction: row; + justify-content:space-between; + button{outline:none;} +} + +.edit-pg { + width:750px; +} + +#lines { + table, th, td { + border: 0.5px solid #f1f0f0; + border-collapse: collapse; + } + input, input :focus { + //-webkit-appearance: none; + outline: none; + border-width:0px; + border:none; + } +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} + +$bg-color: #dddddd; +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.html @@ -0,0 +1 @@ + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.ts new file mode 100644 index 0000000..fb6833d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/menu-group.component.ts @@ -0,0 +1,16 @@ +import { Component, OnInit, ViewEncapsulation } from '@angular/core'; + +@Component({ + selector: 'app-menu-group', + templateUrl: './menu-group.component.html', + styleUrls: ['./menu-group.component.scss'], + // encapsulation: ViewEncapsulation.Emulated +}) +export class MenuGroupComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.html new file mode 100644 index 0000000..54ee5b7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.html @@ -0,0 +1,94 @@ + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.ts new file mode 100644 index 0000000..9d0ad17 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.component.ts @@ -0,0 +1,44 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +// import { Rn_Forms_Setup } from 'src/app/models/Rn_Forms_Setup'; +// import { FormSetupService } from 'src/app/services/api/form-setup.service'; +// import { Rn_Menu_Group_Header } from 'src/app/models/Rn_Menu_Group_Header'; +// import { MenuGroupService } from 'src/app/services/api/menu-group.service'; + +@Component({ + selector: 'readonly-menu-group', + templateUrl: './readonly-menu-group.component.html', + styleUrls: [ './readonly-menu-group.scss'], +}) +export class ReadOnlyMenuGroupComponent implements OnInit { + basic: boolean = false; + id: number; + // rn_menu_group_header: Rn_Menu_Group_Header; + constructor( + private router: Router, + private route: ActivatedRoute, + // private menuGroupService: MenuGroupService + ) { } + + ngOnInit() { + // this.getById(); + } + + // getById() { + // this.rn_menu_group_header = new Rn_Menu_Group_Header(); + // this.id = this.route.snapshot.params['id']; + // this.menuGroupService.getById(this.id) + // .subscribe(data => { + // console.log(data); + // this.rn_menu_group_header = data; + // }); + // } + + // goToWhoColumns() { + // this.basic = !this.basic; + // } + + // back() { + // this.router.navigate(['../../all'], {relativeTo: this.route}); + // } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.scss new file mode 100644 index 0000000..3036f69 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-group/read-on/readonly-menu-group.scss @@ -0,0 +1,23 @@ +// @import '../../../../assets/scss/var'; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} + +.read-only-pg { + width:750px; +} + + + +#build_btn { + position: absolute; + transition: .5s ease; + top: 404px; + left: 644px; +} + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.html new file mode 100644 index 0000000..0e3e30e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.html @@ -0,0 +1 @@ +

add-menur works!

diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.spec.ts new file mode 100644 index 0000000..fccbe61 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AddMenurComponent } from './add-menur.component'; + +describe('AddMenurComponent', () => { + let component: AddMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AddMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AddMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.ts new file mode 100644 index 0000000..c24e5f3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/add/add-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-add-menur', + templateUrl: './add-menur.component.html', + styleUrls: ['./add-menur.component.scss'] +}) +export class AddMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.html new file mode 100644 index 0000000..6c134ab --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.html @@ -0,0 +1,203 @@ + + +
+
+
+

menu register

+
+
+ + +
+
+ + user not found! + + + Sr. No + + + + + Menu Name + + + + + Action Link + + + + + Menu Icon + + + + + Flag + + + + + End Date + + + + + {{i + 1}} + {{user.main_menu_name}} + {{user.main_menu_action_name}} + {{user.main_menu_icon}} + {{user.enable_flag}} + {{user.end_date_1}} + + + + ˝ + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + + +
+ + + + + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.scss new file mode 100644 index 0000000..4f6d7c9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.scss @@ -0,0 +1,14 @@ +input[type=text],[type=date], select { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } + + .delete,.heading{ + text-align: center; + color: red; + } \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.spec.ts new file mode 100644 index 0000000..620106c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { AllMenurComponent } from './all-menur.component'; + +describe('AllMenurComponent', () => { + let component: AllMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ AllMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(AllMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.ts new file mode 100644 index 0000000..67ea77d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/all/all-menur.component.ts @@ -0,0 +1,187 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from '../../../../../services/admin/menu-group.service'; +import { MenuRegisterService } from '../../../../../services/admin/menu-register.service'; + +@Component({ + selector: 'app-all-menur', + templateUrl: './all-menur.component.html', + styleUrls: ['./all-menur.component.scss'] +}) +export class AllMenurComponent implements OnInit { + + basic: boolean = false; + columns: any[]; + rows: any[]; + temp = []; + selected: any[] = []; + filterData: string; + isLoading: boolean = false; + + modalEdit: false; + loading = false; + + openEdit = false; + openAdd = false; + + modaldelete = false; + tempid: any; + + regData: any; + + addReg = { + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: false, + end_date_1: '' + } + + upReg = { + id: '', + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: '', + end_date_1: '' + } + + line = { + id: '', + menu_id: '', + menu_name: '', + name: '', + active: true, + seq: '', + type: '', + menu_group_header: { + id: 5, + } + }; + + lenReg: any; + + constructor( + private _mr: MenuRegisterService, + private _mg: MenuGroupService, + private toastr: ToastrService, + ) { } + + ngOnInit(): void { + + this._mr.getd().subscribe( + (data: any) => { + this.regData = data.items; + this.lenReg = this.regData.length; + console.log(this.regData); + console.log(this.lenReg); + + + } + ); + + + } + + saveData() { + console.log(this.addReg); + + this._mr.add(this.addReg).subscribe( + (data: any) => { + console.log('Data Success...'); + + this.line.menu_id = data.id; + this.line.active = true; + this.line.type = 'admin'; + // this.line.menu_group_header.id = '5'; + + this._mr.getd().subscribe( + (data: any)=>{ + this.lenReg = data.length; + } + ); + + this.line.seq = this.lenReg + 1; + + this._mg.addLineToDb(this.line).subscribe( + (data: any)=>{ + console.log('both success..'); + + }, + (error: any)=>{ + console.log(error); + + } + ); + + this.openAdd = false; + this.addReg = { + main_menu_name: '', + main_menu_action_name: '', + main_menu_icon: '', + enable_flag: false, + end_date_1: '' + }; + this.ngOnInit(); + this.toastr.success('Added successfully'); + }, + (error: any) => { + console.log(error); + + } + ); + } + + editReg(id: any) { + this.openEdit = true; + console.log(id); + this._mr.getById(id).subscribe( + (data: any) => { + this.upReg = data; + console.log(this.upReg); + }, + (error: any) => { + console.log(error); + } + ); + } + + performup() { + this._mr.update(this.upReg.id, this.upReg).subscribe( + (data: any) => { + console.log('updation success...'); + this.toastr.success('Updated successfully'); + this.openEdit = false; + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } + + delete(id: any) { + this.tempid = id; + this.modaldelete = true; + + } + + del() { + console.log('Id of row u clicked is : ' + this.tempid); + this._mr.deleteById(this.tempid).subscribe( + (data: any) => { + console.log('Deletion successful..'); + this.ngOnInit(); + this.modaldelete = false; + this.toastr.success('Deleted successfully'); + }, + (error: any) => { + console.log(error); + + } + ); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.html new file mode 100644 index 0000000..862db5a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.html @@ -0,0 +1 @@ +

edit-menur works!

diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.spec.ts new file mode 100644 index 0000000..cf744ca --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EditMenurComponent } from './edit-menur.component'; + +describe('EditMenurComponent', () => { + let component: EditMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ EditMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(EditMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.ts new file mode 100644 index 0000000..7f5dcf8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/edit/edit-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-edit-menur', + templateUrl: './edit-menur.component.html', + styleUrls: ['./edit-menur.component.scss'] +}) +export class EditMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.html new file mode 100644 index 0000000..0680b43 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.html @@ -0,0 +1 @@ + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts new file mode 100644 index 0000000..3b21b1f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuRegisterComponent } from './menu-register.component'; + +describe('MenuRegisterComponent', () => { + let component: MenuRegisterComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenuRegisterComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuRegisterComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.ts new file mode 100644 index 0000000..e8e3459 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/menu-register.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-menu-register', + templateUrl: './menu-register.component.html', + styleUrls: ['./menu-register.component.scss'] +}) +export class MenuRegisterComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.html new file mode 100644 index 0000000..2c0eda0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.html @@ -0,0 +1 @@ +

readonly-menur works!

diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.spec.ts new file mode 100644 index 0000000..efe0482 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ReadonlyMenurComponent } from './readonly-menur.component'; + +describe('ReadonlyMenurComponent', () => { + let component: ReadonlyMenurComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ReadonlyMenurComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ReadonlyMenurComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.ts new file mode 100644 index 0000000..bf58eb2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menu-register/read/readonly-menur.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-readonly-menur', + templateUrl: './readonly-menur.component.html', + styleUrls: ['./readonly-menur.component.scss'] +}) +export class ReadonlyMenurComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html new file mode 100644 index 0000000..cfa375e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.html @@ -0,0 +1,237 @@ + + + + + +
+
+

Menu Access Control

+
+
+
+ For + + Show All Only Main Menu + +
+
+
+ +
+
+ +
+ +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NO.Menu Item NameViewCreateEditDeleteQueryExportAction
{{i+1}}{{all.menuItemDesc}}   {{all.menuItemDesc}} + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NO.Menu Item NameViewCreateEditDeleteQueryExportAction
{{ i+1 }}{{ all.menuItemDesc }} + +
+
+ + + + + + + + + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss new file mode 100644 index 0000000..1b7ad42 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.scss @@ -0,0 +1,99 @@ +input[type=text],[type=date],[type=password],[type=checkbox] { + width: 100%; + padding: 15px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +// select{ +// width: 100%; +// padding: 5px 5px; +// border: 1px solid #ccc; +// border-radius: 4px; +// } +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +//toggle button +.switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + -webkit-transition: .4s; + transition: .4s; +} + +.slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + -webkit-transition: .4s; + transition: .4s; +} + +input:checked + .slider { + background-color: #0072a3; +} + +input:focus + .slider { + box-shadow: 0 0 1px #0072a3; +} + +input:checked + .slider:before { + -webkit-transform: translateX(26px); + -ms-transform: translateX(26px); + transform: translateX(26px); +} + + .slider.round { + border-radius: 34px; + } + + .slider.round:before { + border-radius: 50%; + } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts new file mode 100644 index 0000000..46c2323 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenuaccesscontrolComponent } from './menuaccesscontrol.component'; + +describe('MenuaccesscontrolComponent', () => { + let component: MenuaccesscontrolComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenuaccesscontrolComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenuaccesscontrolComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts new file mode 100644 index 0000000..7d1073c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menuaccesscontrol/menuaccesscontrol.component.ts @@ -0,0 +1,232 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute } from '@angular/router'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { MenumaintanceService } from 'src/app/services/admin/menumaintance.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +@Component({ + selector: 'app-menuaccesscontrol', + templateUrl: './menuaccesscontrol.component.html', + styleUrls: ['./menuaccesscontrol.component.scss'] +}) +export class MenuaccesscontrolComponent implements OnInit { + loading = false; + givendata; + alldata; + colvalue="true"; + usergrpid=1; + secmenuaccessdata; + modalAdd= false; + modaledit=false; + modaldelete=false; + modaldelete1=false; + rowSelected :any= {}; + public entryForm: FormGroup; + selected = "true"; + menudata; + menus; + menuselectid=1; + msg; + error; + mcreate; + medit; + mdelete; + toggle: boolean = false; + maindata; + showdata; + constructor(private mainservice:UsermaintanceService, + private _fb: FormBuilder, + private toastr:ToastrService, + private route:ActivatedRoute, + private usergrpservice:UsergrpmaintainceService, + private menuGroupService: MenuGroupService, + private menuservice:MenumaintanceService,) { } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete=this.showdata.mdelete + console.log(this.mdelete); + this.medit=this.showdata.medit + console.log(this.medit); + this.dropddowngetdata(); + // this.getall(); +this.getbyuseriddata(); + +this.entryForm=this._fb.group({ + grpid:this.usergrpid , + gmenuid:this.menuselectid , + }); + +} +dropddowngetdata(){ + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + }); +} +getdata(){ + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); +}) +} +getall(){ + this.usergrpservice.getall().subscribe((data)=>{ + this.secmenuaccessdata=data + console.log(data); + }) +} +idofselected(val){ + console.log(val); + this.usergrpid=val; + +} +idselected(val){ + console.log(val) + this.menuselectid=val; +} +getbyuseriddata(){ + this.usergrpservice.getbyusergrpid(this.usergrpid).subscribe((data)=>{ + this.alldata=data; + console.log(this.alldata); + if(this.alldata.array?.length === 0){ + this.msg='No Data Availabel' + } + for(this.alldata; this.alldata>=100;this.alldata++){ + this.maindata=this.alldata.menuId === 0 + console.log(this.maindata) + } + + // console.log(this.menudata) + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.error="No data Available" + } + }); +} +modaladd(){ + this.modalAdd=true; + this.getdata(); +} +onSubmit(){ + this.modalAdd=false; + this.entryForm.value.grpid=this.usergrpid; + this.entryForm.value.gmenuid=this.menuselectid; + console.log(this.entryForm.value); + this.menuservice.create2(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Data Getting Some Error'); + } + }); + +} +modalEdit(row){ +this.rowSelected=row; +console.log(this.rowSelected); +this.modaledit=true; +} +modalDelete(row){ + this.rowSelected=row; + console.log(this.rowSelected) +this.modaldelete=true; +} +delete(id,usrgrp){ + this.modaldelete=false; +this.usergrpservice.delete(id,usrgrp).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } +},(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } +}); +} +modaldeletemainmenu(row){ +this.rowSelected=row; +console.log(this.rowSelected) +this.modaldelete1=true; +} +delete1(id,usrgrp){ + this.modaldelete1=false; +this.usergrpservice.deletemain(id,usrgrp).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } +},(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } +}); +} +onUpdate(id:any,usrgrp:any){ + this.modaledit=false; + console.log(id,usrgrp); + this.menuservice.update2(id,usrgrp,this.rowSelected).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + }, (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Updated Data Getting Some Error'); + } + }); +} +onChecked(value){ + if(value=="y") + { + this.selected="y" + console.log(this.selected); // make a call for checked + } + else + { + this.selected="n"// make a call for unchecked + } +} +changedelete(val){ + console.log(val); + val=this.colvalue=val; + console.log(val); +} +data:{}; +Sync(id:any,row){ + this.rowSelected = row; + console.log(id); +if(this.rowSelected.subMenus!=0){ +this.rowSelected.subMenus=[] +}console.log(this.rowSelected); +this.menuservice.sink(id,this.rowSelected).subscribe((data)=>{ +console.log(data); +if (data) { + this.toastr.success('SYNC successfully'); + } +},(error) => { console.log(error); + if(error){ + this.toastr.error('Not SYNC Data Getting Some Error'); + } }) +} +toggleCheckbox() { + this.toggle = !this.toggle; + //this.dataService.setDivToggler(this.toggler); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.html new file mode 100644 index 0000000..8ed4e63 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.html @@ -0,0 +1,209 @@ + + + + + +
+
+

Menu Maintenance

+ + +
+
+
+ +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
NO.Menu Item NameIDSequenceModule NameMenu Action LinkStatusSub MenuAction
{{i+1}}{{user.menuItemDesc}}{{user.menuId}}{{user.itemSeq}}{{user.moduleName}}{{user.main_menu_action_name}}{{user.status}}
+ + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.scss new file mode 100644 index 0000000..0dcdf9b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.scss @@ -0,0 +1,62 @@ + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts new file mode 100644 index 0000000..4024471 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MenumaintanceComponent } from './menumaintance.component'; + +describe('MenumaintanceComponent', () => { + let component: MenumaintanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MenumaintanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MenumaintanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.ts new file mode 100644 index 0000000..f7b4205 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/menumaintance/menumaintance.component.ts @@ -0,0 +1,160 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import {MenumaintanceService} from '../../../../services/admin/menumaintance.service'; +import { Rn_Main_Menu } from '../../../../models/builder/Rn_Main_Menu'; +import { ActivatedRoute, Router } from '@angular/router'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +@Component({ + selector: 'app-menumaintance', + templateUrl: './menumaintance.component.html', + styleUrls: ['./menumaintance.component.scss'] +}) +export class MenumaintanceComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + modalAdd= false; + modaledit=false; + givendata; + menus: Rn_Main_Menu[]; + mainid=0; + public entryForm: FormGroup; + mcreate; + mdelete; + medit; + showdata; + error; + submitted=false; + constructor(private menuservice:MenumaintanceService, + private toastr:ToastrService, + private _fb: FormBuilder, + private route:ActivatedRoute, + private menuGroupService: MenuGroupService, + private router: Router,) { } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete=this.showdata.mdelete + console.log(this.mdelete); + this.medit=this.showdata.medit + console.log(this.medit); + + // this.menuservice.getAll().subscribe((data) => { + // console.log(data); + // this.givendata = data; + // }); + + this.entryForm = this._fb.group({ + // menuItemId:[null], + menuId:[null], + menuItemDesc:['',[Validators.required]] , + itemSeq:['',[Validators.required, Validators.pattern(/^-?(0|[1-9]\d*)?$/)]] , + moduleName:['',[Validators.required]] , + status:['',[Validators.required]] , + main_menu_action_name:['',[Validators.required]], + main_menu_icon_name:['',[Validators.required]] + }); + this.getdata(); + } + getdata(){ + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + if(this.menus.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + onSubmit(){ + this.submitted=true; + if (this.entryForm.invalid) { + return; + } +this.menuservice.create1(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } +}, +(error) => { +console.log('Error in adding data...',+error); +if(error){ + this.toastr.error('Not added Data Getting Some Error'); +} + +}); +this.modalAdd=false; + } + goToAdd() { + this.modalAdd=true; + } + submenu(id:any){ + this.router.navigate(["../submenu/" +id], { relativeTo: this.route }) + } + data:{}; + shrink(id:any,row){ + this.rowSelected = row; + console.log(this.rowSelected); +if(this.rowSelected.subMenus!=0){ + this.rowSelected.subMenus=[] +}console.log(this.rowSelected); +this.menuservice.sink(id,this.rowSelected).subscribe((data)=>{ + console.log(data); +}) + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit=true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.menuservice.delete1(id).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + + } + onUpdate(id){ + this.modaledit=false; +this.menuservice.update1(id,this.rowSelected).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } +}, +(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not updated Data Getting Some Error'); + } +}); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.html new file mode 100644 index 0000000..736db25 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.html @@ -0,0 +1,230 @@ + + + + + + +
+
+

Modules

+
+
+ + +
+
+ + +
+ + + + + + + + + + + + + + + + + +
ModulesDescriptionAccess ExclusiveAction
{{data.modules}}{{data.description}}{{data.access_exclusive}}
+ + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.scss new file mode 100644 index 0000000..b0303fc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.scss @@ -0,0 +1,62 @@ + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.spec.ts new file mode 100644 index 0000000..cf10dbf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ModulesComponent } from './modules.component'; + +describe('ModulesComponent', () => { + let component: ModulesComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ModulesComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ModulesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.ts new file mode 100644 index 0000000..fcb005c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/modules/modules.component.ts @@ -0,0 +1,116 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; + +@Component({ + selector: 'app-modules', + templateUrl: './modules.component.html', + styleUrls: ['./modules.component.scss'] +}) +export class ModulesComponent implements OnInit { + loading = false; + selected: any[] = []; + rowSelected :any= {}; + modaldelete=false; + modalAdd= false; + modaledit=false; + error; + data; + submitted=false; + public entryForm: FormGroup; + constructor(private _fb: FormBuilder,private accesstype:AccesstypeService, + private toastr:ToastrService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + modules:['',[Validators.required]], + description:['',[Validators.required]] , + access_exclusive:['',[Validators.required]], + }); + this.getdata(); + } + getdata(){ + this.accesstype.getAll1().subscribe(resp => { + this.data = resp; + console.log('menus: ', this.data); + if(this.data.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + goToAdd(){ + this.modalAdd=true; + } + onSubmit(){ + console.log(this.entryForm.value); + this.submitted=true; + if (this.entryForm.invalid) { + return; + } + this.accesstype.create1(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Data Getting Some Error'); + } + + }); + this.modalAdd=false; + } + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit=true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.accesstype.delete1(id).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + + } + onUpdate(id){ + this.modaledit=false; +this.accesstype.update1(id,this.rowSelected).subscribe((data)=>{ +console.log(data); +if (data) { + this.toastr.success('Updated successfully'); + } +}, +(error) => { +console.log('Error in adding data...',+error); +if(error){ + this.toastr.error('Not updated Data Getting Some Error'); +} +}); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.html new file mode 100644 index 0000000..d46b420 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.html @@ -0,0 +1,301 @@ +
+

Organization and Workspaces

+
+ +
+ + + + + + + + + + + + + + + switch + +
Organization: {{ sys_account.companyName }}
Account Id: {{ sys_account.gstNumber }}
Selected Workspace: {{sys_account.workspace }}
+ +
+ + + + + + + + Loading ... + + + No + + + Name + + + Account Type + + + Status + + + Actions + + + {{i+1}} + + {{user.fullName}}
{{user.username}}{{user.email}}
+ + + {{user.status}} + +
+ + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
+
+
+ + + + + + Loading ... + + + No + + + Name + + + Account Type + + + Status + + + Access Till + + + Actions + + + {{i+1}} + + {{user.fullName}}
{{user.username}}{{user.email}}
+ {{user.roles[0].description}} + {{user.status}} + {{user.access_duration}} + + +
+ + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
+
+
+ + + + + + Loading ... + + + No + + + Team Name + + + Owner + + + Count + + + Members + + + Actions + + + {{i+1}} + {{user.name}} + {{user.owner_id}} + 3 + + + + + + + + + + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + + + + + +
+ + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.scss new file mode 100644 index 0000000..fff6bf6 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.scss @@ -0,0 +1,9 @@ +input[type=text],[type=date], select,textarea { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts new file mode 100644 index 0000000..46b827c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MyworkspaceComponent } from './myworkspace.component'; + +describe('MyworkspaceComponent', () => { + let component: MyworkspaceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ MyworkspaceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(MyworkspaceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.ts new file mode 100644 index 0000000..0ccdb67 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/myworkspace/myworkspace.component.ts @@ -0,0 +1,189 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserProfileService } from 'src/app/services/admin/user-profile.service'; +import { UserInfoService } from 'src/app/services/user-info.service'; +import { Sys_Account } from 'src/app/services/admin/user-registration.service'; +import {MyworkspaceService} from '../../../../services/admin/myworkspace.service'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +@Component({ + selector: 'app-myworkspace', + templateUrl: './myworkspace.component.html', + styleUrls: ['./myworkspace.component.scss'] +}) +export class MyworkspaceComponent implements OnInit { + loading = false; + selected: any[] = []; + sys_account: Sys_Account; + + userEmail: string; + companyName: string; + workspace: string; + gstNumber: string; + modalteam=false; + modaluser=false; + modalguest=false; + allworkmodal=false; + allworkspacedata; + alluser; + allguest; + allwdata; + public teamForm: FormGroup; + public userForm:FormGroup; + public guestForm:FormGroup; + public entryForm: FormGroup; + constructor(private router: Router, + private route: ActivatedRoute, + private userProfileService: UserProfileService, + private userInfoService: UserInfoService, + private _fb: FormBuilder, + private toastr:ToastrService, + private mywork:MyworkspaceService) { } + + ngOnInit(): void { + //addteam + this.teamForm = this._fb.group({ + name:[null] , + }); +//add user +this.userForm=this._fb.group({ + email:[null], +}); +//add guest +this.guestForm=this._fb.group({ + email:[null], + access_duration:[null], +}) + this.getUserAccount(); + this.getUserRoles(); + this.getallmyworkspace(); + this.getalluser(); + this.getallguest(); + } + getUserAccount() { + this.userProfileService.getUserAccountDetails().subscribe(resp => { + this.sys_account = resp; + console.log("array",this.sys_account); + }, err => {console.log(err);} + ) + } + + + addUsers() { + this.modaluser=true; + //this.router.navigate(["../users"], { relativeTo: this.route }); + } + manage(id:any){ + this.router.navigate(["../manageteam/"+ id],{relativeTo: this.route}); + } + goToResetPassword() { + this.router.navigate(["../passwordreset"], { relativeTo: this.route }); + } + + roles: string[] + role: string; + getUserRoles() { + const role = this.userInfoService.getRoles(); + console.log('roles = ', role); + + // if(role !== null) { + // this.roles = role.split(','); + // } + this.role = role; + console.log(this.role); + } + + isAdmin() :boolean { + const role: string = this.userInfoService.getRoles(); + if(role.includes('ADMIN')) { + return true; + } + return false; + } + addteam(){ + this.modalteam=true; + } + addguest(){ + this.modalguest=true; + } + getalluser(){ + this.mywork.getalluser().subscribe((data)=>{ + this.alluser=data; + console.log(this.alluser); + }) + } + getallguest(){ + this.mywork.getallguest().subscribe((data)=>{ +this.allguest=data; +console.log(this.allguest); + }) + } + getallmyworkspace(){ + this.mywork.getall().subscribe((data)=>{ + this.allworkspacedata=data; + console.log(this.allworkspacedata); + }) + } + + onCreateuser(){ + let email = this.userForm.value.email; + console.log(email); +this.mywork.adduser(this.userForm.value.email).subscribe((data)=>{ + this.mywork.storeEmail(email); + console.log(data); + if (data) { + this.toastr.success('User Added successfully'); + } +},(error) => { + console.log('Error in adding data...',+error); + if(error.status=200){ + this.toastr.success('User Added'); + } + // if(error=400){ + // this.toastr.error('User Already Exist'); + // } + else{ + this.toastr.error('Not added Getting Some Error'); + } +}); +this.modaluser=false; + } + + onCreateguest(){ + this.mywork.addguest(this.guestForm.value.email,this.guestForm.value.access_duration).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Guest Added successfully'); + } + },(error) => { + console.log('Error in adding data...',+error); + if(error.status=200){ + this.toastr.success('Guest Added'); + } + else{ + this.toastr.error('Not added Getting Some Error'); + } + }) + this.modalguest=false; + } + oncreateteam(){ + this.mywork.addteam(this.teamForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Guest Added successfully'); + } + },(error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Getting Some Error'); + } + }) + } + allworksapce(){ + this.allworkmodal=true; + this.mywork.getallworkspace().subscribe((data)=>{ + this.allwdata=data; + console.log(data); + }) + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.html new file mode 100644 index 0000000..492b3e0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.html @@ -0,0 +1,185 @@ +

New Connection

+Add Mode
+Define A connection to use in a job, that can calls APIs from another App. + +
+ + + + + + + + +
+ + + + + +
+
+
+ + +
+
+ + + + +
+
+ + + + + + +
+

Default Settings

+
+These configurations default. +
+ +
+
+ + +
+ +
+ + + + +
+
+
+ + + +
+
+ +
+
+ + + +
+ +
+ + + +
+
+ + + +
+
+

Generate Token

+ +
+
+
+
+ + +
+
+ + +
+
+ +
+
+ + + + +
+ + +
+ +
+ + +
+ + +
+

Test Connection

+ +
+
+
+
+ + +
+
+ + +
+
+
+
+ + + + +
+ + +
+
+ +
+ +
+

Response

+
+
+ code + 200
+
+ + +
+ + +
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.scss new file mode 100644 index 0000000..6161c34 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.scss @@ -0,0 +1,79 @@ +//@import "../../../../assets/scss/var"; +.s-info-bar { + display: flex; + flex-direction: row; + justify-content: space-between; + button { + outline: none; + } +} + +.entry-pg { + width: 750px; +} + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + +$bg-color: #dddddd; + +.section { + background-color: $bg-color; + height: 40px; +} + +.section p { + //color: white; + font-weight: bold; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.clr-file { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + //padding: 0.6rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} + +.center { + text-align: center; +} +input[type=text],[type=date],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.required-field{ + color: red; + +} +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.spec.ts new file mode 100644 index 0000000..ed653b4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { OauthComponent } from './oauth.component'; + +describe('OauthComponent', () => { + let component: OauthComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ OauthComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(OauthComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.ts new file mode 100644 index 0000000..498a9ef --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/oauth/oauth.component.ts @@ -0,0 +1,67 @@ +import { HttpErrorResponse } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { LoginService } from 'src/app/services/api/login.service'; +import {SureconnectService} from '../../../../services/admin/sureconnect.service' +@Component({ + selector: 'app-oauth', + templateUrl: './oauth.component.html', + styleUrls: ['./oauth.component.scss'] +}) +export class OauthComponent implements OnInit { + public entryForm: FormGroup; + model: any = {}; + errMsg: string = ''; + constructor(private sureconnectservice:SureconnectService, + private _fb: FormBuilder, + private route:ActivatedRoute, + private router: Router, + private loginService: LoginService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + connection_name:[null] , + description:[null] , + type:[null], + access_token:[null], + client_id:[null], + username:[null], + password:[null], + + }); + } +onSubmit(){ +this.sureconnectservice.create(this.entryForm.value).subscribe((data)=>{ + console.log(data); +}) +} +onLogin() { + // tslint:disable-next-line:max-line-length + this.loginService.getToken(this.model.email, this.model.password) + .subscribe(resp => { + if (resp.user === undefined || resp.user.token === undefined || resp.user.token === "INVALID") { + this.errMsg = 'Checking Email or password'; + return; + } + this.router.navigate([resp.landingPage]);// add , {skipLocationChange: true} + }, + (errResponse: HttpErrorResponse) => { + switch (errResponse.status) { + case 401: + this.errMsg = 'Email or password is incorrect'; + break; + case 404: + this.errMsg = 'Service not found'; + case 408: + this.errMsg = 'Request Timedout'; + case 500: + this.errMsg = 'Internal Server Error'; + default: + this.errMsg = 'Server Error'; + } + } + ); + +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.html new file mode 100644 index 0000000..472d4bb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.html @@ -0,0 +1,43 @@ +
+
+

Please Reset Your Password

+

you're signed in as {{ email }}

+
+ +
+
+ + +
+
Password is required
+
+
+
+ + +
+
password is required
+
Password must be Minimum 3 Characters
+
+
+
+ + +
+
Password is required.
+
Password and Confirm Password must be match.
+
+
+ +
+
+
+

Wrong account? Log in instead.

+
+
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.scss new file mode 100644 index 0000000..3ee7d64 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.scss @@ -0,0 +1,83 @@ +//@import '../../../../../styles1.scss'; + + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; +$google-button-bg-color: #7f8ff4; +$linkedin-button-bg-color: #4b76eb; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +//** helper +.display_msg { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + // width: 360px; + // //background: #fff; + // color: $input-text-color; + // font: inherit; + // //box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + // border: 1 solid rgb(235, 230, 230); + // background-color:rgb(255, 255, 255); + // display: inline-block; + // border-radius: 4px; + // box-sizing: border-box; + // //outline: 0; + // padding: 6px 9px; + width: 360px; + padding: 9px 11px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; + } +} + +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts new file mode 100644 index 0000000..e6bd9ac --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PasswordResetComponent } from './password-reset.component'; + +describe('PasswordResetComponent', () => { + let component: PasswordResetComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PasswordResetComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(PasswordResetComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.ts new file mode 100644 index 0000000..d17961f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/password-reset/password-reset.component.ts @@ -0,0 +1,109 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserRegistrationService } from 'src/app/services/admin/user-registration.service'; +import { UserInfoService } from 'src/app/services/user-info.service'; + +export interface ResetPasswordRequest { + oldPassword: string; + newPassword: string; +} +@Component({ + selector: 'app-password-reset', + templateUrl: './password-reset.component.html', + styleUrls: ['./password-reset.component.scss'] +}) +export class PasswordResetComponent implements OnInit { + + emailErrMsg: string = "" + oldpHide: boolean = true; + oldIcon: string = "eye"; + oldShapeChanger() { + this.oldpHide = !this.oldpHide; + if(this.oldpHide){ + this.oldIcon = 'eye' + } else { + this.oldIcon = 'eye-hide' + } + } + newpHide: boolean = true; + newIcon: string = "eye"; + newShapeChanger() { + this.newpHide = !this.newpHide; + if(this.newpHide){ + this.newIcon = 'eye' + } else { + this.newIcon = 'eye-hide' + } + } + cpHide: boolean = true; + conIcon: string = "eye"; + comfShapeChanger() { + this.cpHide = !this.cpHide; + if(this.cpHide){ + this.conIcon = 'eye' + } else { + this.conIcon = 'eye-hide' + } + } + + constructor( private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private userRegistrationService: UserRegistrationService, + private userInfoService: UserInfoService) { } + + email: string; + resetPasswordForm: FormGroup; +userid; + ngOnInit(): void { + this.email = this.userInfoService.getEmail(); + this.userid=this.userInfoService.getUserId(); + console.log(this.userid); + + this.resetPasswordForm = this._fb.group({ + userId:this.userid, + oldPassword: ['', Validators.required], + newPassword: ['', [Validators.required, Validators.minLength(3)]], + confirmPassword: ['', [Validators.required]] + }, { + validator: ConfirmedValidator('newPassword', 'confirmPassword') + }); + } + get f() { return this.resetPasswordForm.controls; } + + submitted = false; + onSubmit() { + console.log('this.resetPasswordForm.value : ', this.resetPasswordForm.value); + this.submitted = true; + if(this.resetPasswordForm.invalid){ + return; + } + this.resetPassword(); + } + + resetPassword() { + this.userRegistrationService.resetPassword(this.resetPasswordForm.value) + .subscribe((res) => { + console.log('success ', res); + this.router.navigate(["../user-account"], { relativeTo: this.route }); + },(err) => { + console.log('failure ', err); + }); + } +} + +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.html new file mode 100644 index 0000000..37105ea --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.html @@ -0,0 +1,266 @@ + +
+ + + + + + +
+

My Profile Settings

+ +
+ Avatar +
+ + Avatar + +
{{ message }}
+ + + + + + + +
+ +
+
+
+ + +
+
+ + +
+
+ + +
+
+
+
+ + +
+
+ + +
+
+
+
+ + + + +
+
+ +
+ +
+
+ +
+ +
+ + +
+ + + +
Password: Change Password for your account Change password
+
+
+ + +
+ + +
+ + +
Security: Logout of all sessions except this current browser Logout other + sessions
+
+
+ + +
+ + +
+ + +
Deactivation: Remove access to all organizations and workspace in cloudnsure Deactivate account
+
+ +
+ + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.scss new file mode 100644 index 0000000..ec6f039 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.scss @@ -0,0 +1,10 @@ +input[type=text],[type=date],textarea,[type=number] { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts new file mode 100644 index 0000000..c4570be --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { ProfileSettingComponent } from './profile-setting.component'; + +describe('ProfileSettingComponent', () => { + let component: ProfileSettingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ ProfileSettingComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(ProfileSettingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.ts new file mode 100644 index 0000000..5483ddb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/profile-setting/profile-setting.component.ts @@ -0,0 +1,223 @@ + +import { HttpClient, HttpEventType } from '@angular/common/http'; +import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserProfile, UserProfileService } from '../../../../services/admin/user-profile.service'; +import { DomSanitizer } from '@angular/platform-browser'; +import { AlertService } from '../../../../services/alert.service'; +import { ToastrService } from 'ngx-toastr'; +import { Dimensions, ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper'; +//import { ImageCroppedEvent } from '../image-cropper/interfaces/image-cropped-event.interface'; +//import { ImageCropperComponent } from '../image-cropper/component/image-cropper/image-cropper.component'; +@Component({ + selector: 'app-profile-setting', + templateUrl: './profile-setting.component.html', + styleUrls: ['./profile-setting.component.scss'] +}) +export class ProfileSettingComponent implements OnInit { + updated = false; + userProfile: UserProfile; + roles = ['user', 'admin', 'mis report', 'bi report']; + transform: ImageTransform = {}; + model=false; + constructor( + private router: Router, + private route: ActivatedRoute, + private userProfileService: UserProfileService, + private http: HttpClient, + private alertService: AlertService, + private _sanitizer: DomSanitizer, + private toastr: ToastrService, + ) { } + + ngOnInit(): void { + + this.getUserProfile(); + this.getProfilePic(); + } + getUserProfile() { + this.userProfileService.getUserProfile().subscribe(res => { + console.log(res); + this.userProfile = res; + }) + } + + update() { + this.userProfileService.updateUserProfile(this.userProfile).subscribe( + (resp) => { + console.log(resp); + //this.router.navigate(["../../all"], { relativeTo: this.route }); + }, + (error) => { + console.log(error); + } + ); + //this.picUpload(); + } + + public profilePic: File = null; + onSelectFile(event) { + let flag = 0; + const mimeType = event.target.files[0].type; + if(mimeType.match(/image\/*/) === null ){ + this.message = 'Only Image Type Is Supported'; + flag = flag + 1; + return; + } + const size = event.target.files[0].size; + if(size > 5000000) { + flag = flag + 1; + this.message = 'Plese Select image file under 2 MB'; + return; + } + console.log('flag value = ', flag); + if(flag === 0) { + this.profilePic = event.target.files[0]; + console.log(this.profilePic); + const reader = new FileReader(); + this.image = this.profilePic; + reader.readAsDataURL(this.profilePic); + reader.onload = (_event) => { + this.image = reader.result; + } + this.picUpload(); + } + + } + + message: string; + picUpload() { + this.userProfileService.uploadUserProfilePic(this.profilePic).subscribe(res => { + console.log(res); + if(res.type === HttpEventType.UploadProgress){ + console.log('Upload Progress : ', + Math.round(res.loaded / res.total * 100) + '%'); + } else if(res.type === HttpEventType.Response) { + if (res.status === 200) { + this.alertService.success('Image uploaded successfully'); + //this.message = 'Image uploaded successfully'; + } else { + this.message = 'Image not uploaded'; + } + } + }, err => {console.log(err); + }); + } + image: any; + getProfilePic() { + this.userProfileService.getProfilePic().subscribe(res => { + console.log(res); + this.image = this._sanitizer.bypassSecurityTrustResourceUrl(res.image); + }, err => {console.log(err);} + ); + } + + /*picUpload() { + const uploadImageData = new FormData(); + uploadImageData.append('imageFile', this.profilePic, this.profilePic.name); + this.http.post('http://localhost:9119/api/upload', uploadImageData, { observe: 'response' }) + .subscribe((res) => { + console.log(res); + if (res.status === 200) { + this.message = 'Image uploaded successfully'; + } else { + this.message = 'Image not uploaded successfully'; + } + } + ); + }*/ + + + onSubmit() { + this.updated = true; + this.update(); + } + imageChangedEvent: any = ''; + croppedImage: any = ''; + canvasRotation = 0; + rotation = 0; + scale = 1; + showCropper = false; + containWithinAspectRatio = false; + fileChangeEvent(event: any): void { + this.imageChangedEvent = event; + } + imageCropped(event: ImageCroppedEvent) { + this.croppedImage = event.base64; + this.profilePic=this.croppedImage; + + } + imageLoaded() { + this.showCropper = true; + console.log('Image loaded'); + } + + cropperReady(sourceImageDimensions: Dimensions) { + console.log('Cropper ready', sourceImageDimensions); + } + loadImageFailed() { + // show message + } + rotateLeft() { + this.canvasRotation--; + this.flipAfterRotate(); + } + + rotateRight() { + this.canvasRotation++; + this.flipAfterRotate(); + } + + private flipAfterRotate() { + const flippedH = this.transform.flipH; + const flippedV = this.transform.flipV; + this.transform = { + ...this.transform, + flipH: flippedV, + flipV: flippedH + }; + } + + + flipHorizontal() { + this.transform = { + ...this.transform, + flipH: !this.transform.flipH + }; + } + + flipVertical() { + this.transform = { + ...this.transform, + flipV: !this.transform.flipV + }; + } + zoomOut() { + this.scale -= .1; + this.transform = { + ...this.transform, + scale: this.scale + }; +} + +zoomIn() { + this.scale += .1; + this.transform = { + ...this.transform, + scale: this.scale + }; +} + +toggleContainWithinAspectRatio() { + this.containWithinAspectRatio = !this.containWithinAspectRatio; +} + +updateRotation() { + this.transform = { + ...this.transform, + rotate: this.rotation + }; +} +openmodal(){ + this.model=true; +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.html new file mode 100644 index 0000000..8e5fba7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.html @@ -0,0 +1,358 @@ + + + +
+ + +
+
+

SQL Worksheet- + connection name + {{selecteddatabase}} + switch + Add New +

+ +
+ +
+ + +
+
+ + + + + + +
+
+ +
+ +
+ +
+
+
+
+
+
+ + +
+
+ +

{{msg}}

+ +
+
+

{{msg}}

+ +
+
+
+
+
+ + +
+
+ + + +
+
+

Response

+
+
+
+ + +
+
+

+
+
+
+
+ + + + + + + + + + + + +
{{co}}
{{item[key]}}
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.scss new file mode 100644 index 0000000..b964547 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.scss @@ -0,0 +1,121 @@ +$bg-color: #dddddd; + +.button1::after { + content: none; +} +.button1:hover::after { + content: "ADD ROWS"; +} + + + +.section p { + //color: white; + padding: 10px; + font-size: 18px; +} + +.clr-input { + color: #212529; + border: 1px solid #ced4da; + border-radius: 0.25rem; + padding: 0.75rem 0.75rem; + margin-top: 3px; + width: 100%; + margin-bottom: 10px; +} +// input[type=text],[type=date],textarea { +// width: 60%; +// padding: 15px 15px; +// // margin: 8px 0; +// background-color:rgb(255, 255, 255); +// display: inline-block; +// border: 1px solid #ccc; +// border-radius: 4px; +// box-sizing: border-box; +// } +.required-field{ + color: red; +font-size: 18px; + +} + +input[type=text],textarea { + width: 100%; + padding: 15px 15px; + // margin: 8px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + + +html { + /* make sure we use up the whole viewport */ + width: 100%; + min-height: 100vh; +} +body { + width: 100%; + background-color: gray; + //min-height: 100vh; /* this helps with the sticky footer */ +} + +//Import classes from swimlane datatable +ngx-datatable { + font-family: Metropolis,Avenir Next,Helvetica Neue,Arial,sans-serif; + font-size:13px; + border:1px solid #ccc; + border-radius: 2px; + padding:0; + background-color: #fff; + .datatable-header, .datatable-footer { + font-size:11px; + line-height:18px; + font-weight:bold; + background-color:#fafafa; + } + .datatable-header{ + //border-bottom: 2px solid #ccc; + box-shadow: 0 2px 4px 0px #ccc; + .datatable-header-cell{ + line-height:22px; + padding-left:10px; + height:22px; + } + } + .datatable-header .datatable-header-cell:not(:first-child) { + border-left:1px solid #ccc; + } + + .datatable-footer{ + border-top: 1px solid #ccc; + .page-count{ + margin: 10px; + } + .pages a{ + padding:8px; + color:inherit; + } + .pages.active a{ + padding:8px; + color:#007cbb; + background-color:rgb(221, 221, 221); + text-align: center; + } + } + + .datatable-header-inner{ + padding:12px; + } + .datatable-body-cell{ + padding:8px 0 10px 20px; + border-top: 1px solid #ddd; + } + .pager i { + font-size:18px; + vertical-align: middle; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.spec.ts new file mode 100644 index 0000000..fd0cf11 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { QueryComponent } from './query.component'; + +describe('QueryComponent', () => { + let component: QueryComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ QueryComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(QueryComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.ts new file mode 100644 index 0000000..c9e4c16 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/query/query.component.ts @@ -0,0 +1,238 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormControl, FormGroup } from '@angular/forms'; +import { ReportBuilderService } from 'src/app/services/api/report-builder.service'; +import { TableList } from '../../../../models/fnd/table-setup'; +import { HttpClient } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; +// import { NgxDatatableModule } from '@swimlane/ngx-datatable'; + +@Component({ + selector: 'app-query', + templateUrl: './query.component.html', + styleUrls: ['./query.component.scss'] +}) +export class QueryComponent implements OnInit { + searchtable:any; + searchcol:any; + columns: any[]; + table:boolean=false; + database:boolean=false; + query:boolean=false; + public entryForm: FormGroup; + public addForm: FormGroup; + addmodal:boolean =false; + query2:string; + rows:any[]; + loading = false; + tableList: TableList[]; + databaselist; + collist; + search:any; + selectedtable; + selectedcol; + selectedcol1; + selectedquery; + searchquery; + col:boolean=false; + col1:boolean=false; + searchdatabase; + selecteddatabase; + msg; + querydata; + errorco; + errortb; + errorcl; + loadingIndicator = true; reorderable = true; + tabs = ['Tab', 'Tab',]; + selected = new FormControl(0); + constructor( private _fb: FormBuilder, + private reportBuilderService: ReportBuilderService,private toastr:ToastrService,) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + sql_query: [null], + }); + this.addForm =this._fb.group({ + conn_string:[null], + username:[null], + password:[null], + driver_class_name:[null], + }) + //this.listofTables(); + } +listoddatabase(){ + this.reportBuilderService.getdatabse().subscribe((data)=>{ + this.databaselist=data; + console.log(this.databaselist) + },(error) => { + console.log(error); + if(error){ + this.errorco="No data Available"; + } + }); + +} + listofTables() { + this.reportBuilderService.getTableListn(this.name[1]).subscribe(data => { + //console.log("table list "+data); + this.tableList = data; + console.log(this.tableList); + },(error) => { + console.log(error); + if(error){ + this.errortb="No data Available"; + } + }) + } + listofcol(){ + this.reportBuilderService.getcolListn(this.name[1],this.selectedtable).subscribe((data)=>{ + this.collist=data; + if(this.selectedtable==null){ + this.msg='Plz First Select Table' + } + + //console.log(this.collist); + },(error) => { + console.log(error); + if(error){ + this.errorcl="No data Available"; + } + }) + } + listofquery(){ + this.reportBuilderService.getall().subscribe((data)=>{ + this.querydata=data; + console.log(this.querydata) + }) + } + rowdata; + onSubmit(){ + + this.query2=this.entryForm.value.sql_query; + console.log(this.query2); + this.reportBuilderService.getMasterData(this.query2).subscribe((data) => { + this.rows = data; + console.log(this.rows); +this.rowdata= [this.rows]; + console.log(typeof this.rows); + if(data){ + this.toastr.success("Run Successfully") + } + var j; + var cart = []; + + for(var i = 0; i < data.length; i++) + { + var columnsIn = data[i]; + if(i==1) + { + for(var key in columnsIn) + { + j={prop:key , name: key}; + cart.push(j) + + } + } + } + this.columns = cart; + + }); +} +getHeaders() { + let headers: string[] = []; + if(this.rows) { + this.rows.forEach((value) => { + Object.keys(value).forEach((key) => { + if(!headers.find((header) => header == key)){ + headers.push(key) + } + + }) + + }) + } + return headers; +} +savequery(){ + //this.query2=this.entryForm.value.sql_query; + console.log(this.entryForm.value); + this.reportBuilderService.saveq(this.entryForm.value).subscribe((data)=>{ + console.log(data); + }) + +} + +//tab +addTab(selectAfterAdding: boolean) { + this.tabs.push('Tab'); + + if (selectAfterAdding) { + this.selected.setValue(this.tabs.length - 1); + } +} + +removeTab(index: number) { + this.tabs.splice(index, 1); +} +opendatabsemo(){ + this.database=true; + this.listoddatabase(); +} +name; +databasename(val){ + console.log(val); + this.selecteddatabase=val.conn_string; + console.log(this.selecteddatabase); + // this.selecteddatabase.substring(0,this.selecteddatabase.indexOf(':3306/')) + // console.log(this.selecteddatabase); + this.name=this.selecteddatabase.split(":3306/"); + console.log(this.name[1]); + this.database=false; +} +opentablemod(){ +this.table=true; +this.listofTables(); +} +tablename(value){ + console.log(value); + this.selectedtable=value; + this.table=false; +} +opentcolmod(){ + this.col=true; + this.listofcol() +} +opentcolmod1(){ + this.col1=true; + this.listofcol() +} +colname(col){ + console.log(col); + this.selectedcol=col; + this.col=false; +} +colname1(col){ + console.log(col); + this.selectedcol1=col; + this.col1=false; +} +openquerymod(){ + this.query=true; + this.listofquery(); +} +selectquery(val){ +console.log(val); +this.selectedquery=val; +this.query=false; +} +opencopym(){ + + this.addmodal=true; +} +onCreate(){ + console.log(this.addForm.value); +this.reportBuilderService.createdb(this.addForm.value).subscribe((data)=>{ + console.log(data); +}) +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html new file mode 100644 index 0000000..c287cb4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.html @@ -0,0 +1,99 @@ + + + + +
+
+
+

Session Logger

+
+
+ + + +
+
+ + + + + + + + + Loading ... +
{{error}}
+ + + Client Ip + + + lastAccessDate + + + Log In Time + + + Log Out Time + + + Session Id + + + User Id + + + User Name + + + + + + + + {{user.clientIp}} + {{user.lastAccessDate}} + {{user.logintime}} + {{user.logouttime}} + {{user.sessionId}} + {{user.userId.userId}} + {{user.userId.username}} + + + + + + + + + + + + + Record per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} Records + + +
+
+ + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss new file mode 100644 index 0000000..76ab29b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts new file mode 100644 index 0000000..149e2eb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SessionloggerComponent } from './sessionlogger.component'; + +describe('SessionloggerComponent', () => { + let component: SessionloggerComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SessionloggerComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SessionloggerComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts new file mode 100644 index 0000000..4ffab36 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/sessionlogger/sessionlogger.component.ts @@ -0,0 +1,69 @@ +import { Component, OnInit } from '@angular/core'; +import { SessionloggerService } from 'src/app/services/admin/sessionlogger.service'; +import * as moment from 'moment'; +import { ExcelService } from 'src/app/services/excel.service'; +import { ToastrService } from 'ngx-toastr'; +import { HttpErrorResponse } from '@angular/common/http'; +@Component({ + selector: 'app-sessionlogger', + templateUrl: './sessionlogger.component.html', + styleUrls: ['./sessionlogger.component.scss'] +}) +export class SessionloggerComponent implements OnInit { + loading = false; + error; + data; + modaldelete=false; + rowSelected :any= {}; + constructor(private sessionservice:SessionloggerService,private excel: ExcelService, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.getdata(); + } + getdata(){ + this.sessionservice.getAll().subscribe((data)=>{ + this.data=data; + console.log(this.data); + if(this.data.length==0){ + this.error="No data Available plz add if Required"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="server Error"; + } + }); + + + } + onExport(){ + this.excel.exportAsExcelFile(this.data, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + modaldel(row){ + this.rowSelected = row; + this.modaldelete=true; + console.log(this.rowSelected); + } + delete(id) + { + console.log("in delete "+id); + this.sessionservice.delete(id).subscribe( + (data) => { + console.log(data); + //this.ngOnInit(); + },(error:HttpErrorResponse) => { + console.log(error); + if(error.status==200){ + this.toastr.success(error.error.text); + } + if(error.status==404){ + this.toastr.error(error.error); + } + + }); + this.modaldelete=false; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.html new file mode 100644 index 0000000..cf24c82 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.html @@ -0,0 +1,251 @@ + + + + + +
+
+

Sub Menu Maintenance

+ + +
+
+
+ +
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + +
NO.Sub Menu Item NameIDSequenceModule NameMenu Action LinkStatusAction
{{i+1}}{{user.menuItemDesc}}{{user.menuId}}{{user.itemSeq}}{{user.moduleName}}{{user.main_menu_action_name}}{{user.status}}
+ + + + + + + + + + + + + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.scss new file mode 100644 index 0000000..0dcdf9b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.scss @@ -0,0 +1,62 @@ + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.spec.ts new file mode 100644 index 0000000..6d85802 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SubmenuComponent } from './submenu.component'; + +describe('SubmenuComponent', () => { + let component: SubmenuComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SubmenuComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SubmenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.ts new file mode 100644 index 0000000..3905530 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/submenu/submenu.component.ts @@ -0,0 +1,129 @@ +import { Component, OnInit } from '@angular/core'; +import {MenumaintanceService} from '../../../../services/admin/menumaintance.service'; +import { Rn_Main_Menu } from '../../../../models/builder/Rn_Main_Menu'; +import { ActivatedRoute, Router } from '@angular/router'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ToastrService } from 'ngx-toastr'; +@Component({ + selector: 'app-submenu', + templateUrl: './submenu.component.html', + styleUrls: ['./submenu.component.scss'] +}) +export class SubmenuComponent implements OnInit { + loading = false; + modalAdd= false; + modaledit=false; + modaldelete=false; + selected: any[] = []; + rowSelected :any= {}; + givendata; + menus: Rn_Main_Menu[]; + sub; + id; + mainid; + submitted=false; + public entryForm: FormGroup; + constructor(private menuservice:MenumaintanceService, + private toastr:ToastrService, + private _fb: FormBuilder, + private route:ActivatedRoute, + private router: Router,) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("project mainmenu with id = ", this.id); + this.getById(this.id); +this.mainid=this.id + this.entryForm = this._fb.group({ + // menuItemId:[null], + menuId:[null], + menuItemDesc:['',[Validators.required]] , + itemSeq:['',[Validators.required]] , + moduleName:['',[Validators.required]] , + status:['',[Validators.required]] , + main_menu_action_name:['',[Validators.required]] + }); + + // this.getdata(); + } + getById(id:any){ + this.menuservice.getbyid(id).subscribe((data)=>{ + this.sub=data; + console.log(this.sub) + }) + } + getdata(){ + this.menuservice.getByCurrentUserMenuGroupId1().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + }) + } + goToAdd() { + this.modalAdd=true; + } + onSubmit(){ + this.submitted=true; + if (this.entryForm.invalid) { + return; + } + this.menuservice.create1(this.entryForm.value).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not added Data Getting Some Error'); + } + + }); + this.modalAdd=false; + } + + goToEdit(row) { + this.rowSelected = row; + console.log(row) + this.modaledit=true; + //this.router.navigate(["../edit/" + id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.menuservice.delete1(id).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + }); + + } + onUpdate(id){ + this.modaledit=false; + this.menuservice.update1(id,this.rowSelected).subscribe((data)=>{ + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not updated Data Getting Some Error'); + } + }); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.html new file mode 100644 index 0000000..22e9a4f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.html @@ -0,0 +1,678 @@ + + + + + + + + + + +

Edit Mode

+
+
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+ + + + + + +
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+ + +
+
+ +
+
+ +
+
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ +
+
+
+
+ +
+
+ + +
+
+
+
+ +
+
+ +
+
+ + + +
+
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.scss new file mode 100644 index 0000000..fe0cc9a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.scss @@ -0,0 +1,148 @@ +.name{ + background-color:#c5c9b0; + color: white; + font-size: 15px; +} +// input[type=text],[type=date],[type=datetime-local],textarea { +// height: 30px; +// width: 100%; +// // padding: 15px 15px; +// // //margin: 2px 0; +// // display: inline-block; +// // border: 1px solid #ccc; +// // border-radius: 4px; +// // box-sizing: border-box; +// } +clr-icon{ + margin-left: 5px; +} +.one-line { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + width: 300px; +} +input[type=text], select, textarea { + width: 100%; + padding: 5px; + border: 1px solid #ccc; + border-radius: 4px; + resize: vertical; +} + +label { + padding: 12px 12px 12px 0; + display: inline-block; +} + +input[type=submit] { + // background-color: #04AA6D; + color: white; + padding: 12px 20px; + border: none; + border-radius: 4px; + cursor: pointer; + float: right; +} + +input[type=submit]:hover { + background-color: #45a049; +} + +.container { + border-radius: 5px; + //background-color: #f2f2f2; + padding: 20px; +} + +.col-25 { + float: left; + width: 25%; + margin-top: 5px; +} + +.col-75 { + float: left; + width: 75%; + margin-top: 5px; +} + +/* Clear floats after the columns */ +.row:after { + content: ""; + display: table; + clear: both; +} + +/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */ +@media screen and (max-width: 600px) { + .col-25, .col-75, input[type=submit] { + width: 100%; + margin-top: 0; + } +} +.btn{ + float: right; +} + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts new file mode 100644 index 0000000..6eff4ca --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SystemparametersComponent } from './systemparameters.component'; + +describe('SystemparametersComponent', () => { + let component: SystemparametersComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ SystemparametersComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(SystemparametersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.ts new file mode 100644 index 0000000..107b8ba --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/systemparameters/systemparameters.component.ts @@ -0,0 +1,114 @@ +import { HttpEventType } from '@angular/common/http'; +import { Component, OnInit } from '@angular/core'; +import { AlertService } from 'src/app/services/alert.service'; +import {SysparameterService} from 'src/app/services/admin/sysparameter.service'; +import { FormBuilder, FormGroup, NG_VALUE_ACCESSOR } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import {Systemparameter} from 'src/app/models/admin/systemparameter' +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-systemparameters', + templateUrl: './systemparameters.component.html', + styleUrls: ['./systemparameters.component.scss'], + +}) +export class SystemparametersComponent implements OnInit { + public profilePic: File = null; + message: string; + image: any; + selectedFile: File[]=[]; + public entryForm: FormGroup; + project: Systemparameter; + id=1; + constructor(private alertService: AlertService, + private sysparaservice:SysparameterService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private toastr: ToastrService,) { } + + ngOnInit(): void { + this.project = new Systemparameter(); + this.getById(this.id); + + this.entryForm = this._fb.group({ + schedulerTime: [null], + leaseTaxCode: [null], + vesselConfProcessLimit: [null], + rowToDisplay: [null], + linkToDisplay: [null], + rowToAdd: [null], + lovRowToDisplay: [null], + lovLinkToDisplay: [null], + oidserverName: [null], + oidBase: [null], + oidAdminUser: [null], + oidServerPort: [null], + userDefaultGroup: [null], + defaultDepartment: [null], + defaultPosition: [null], + singleCharge: [null], + firstDayOftheWeek: [null], + hourPerShift: [null], + cnBillingFrequency: [null], + billingDepartmentCode: [null], + basePriceList: [null], + nonContainerServiceOrder: [null], + ediMaeSchedulerONOFF: [null], + ediSchedulerONOFF: [null], + upload_Logo:[null], + Company_Display_Name:[null] + }); + + } + public onFileChanged(event) { + for (var i = 0; i < event.target.files.length; i++) { + this.selectedFile.push(event.target.files[i]); + } + } + // onSubmit(){ + // this.userObj.status='P'; + // console.log(this.entryForm.value); + // this.mainService.createall(this.entryForm.value,this.selectedFile).subscribe(data => { + // console.log(data) + + // }, + // (error) => { + // console.log(error); + // } + + // ); + // } + adddata(){ + this.sysparaservice.create(this.entryForm.value).subscribe( + (data) => { + console.log(data); + // this.router.navigate(["../../project/all"], { relativeTo: this.route }); + }, + + ); + } + getById(id: number) { + this.sysparaservice.getById(id).subscribe((data) => { + this.project = data; + console.log("getbyiddata",this.project); + }, + (err) => { + console.log(err); + } + ); + } + updatedata(){ + this.sysparaservice.update(this.id, this.project,this.selectedFile).subscribe( + (data) => { + console.log(data); + //this.router.navigate(["../../../project/all"], { relativeTo: this.route }); + }, + + ); + if (this.id) { + this.toastr.success('Updated successfully'); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.html new file mode 100644 index 0000000..d8c3c77 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.html @@ -0,0 +1,42 @@ + + + +
+
+ CloudnSure +
+
+
+ + +
+ + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.scss new file mode 100644 index 0000000..dbaa7f7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.scss @@ -0,0 +1,143 @@ +//@import "../../../assets/scss/var"; +/* :host { + display: flex; + flex-direction: row; + justify-content: center; +} */ + +/* .s-login-pg { + width:400px; + display:flex; + padding:0; + margin:48px 16px 16px 16px; + flex-direction: column; + align-items: center; + background-color: white; + border: 1px solid #ccc; + border-radius: 2px; + box-shadow: 0 1px 3px rgba(0,0,0,0.05), 0 1px 2px rgba(0,0,0,0.15); + .s-login-pg-head{ + width:100%; + height:220px; + display:flex; + flex-direction: column; + align-items: center; + background-color: #998; + padding:16px; + color:white; + } + .s-login-pg-form { + width:100%; + height:200px; + display:flex; + flex-direction: column; + align-items: center; + margin:24px 16px; + input{ + margin: 16px; + } + } + .s-login-pg-foot { + width:100%; + min-height:40px; + display:flex; + flex-direction: column; + align-items: center; + } + + +} */ + +//** variables +$background: #f5f6fa; +$text: #9c9c9c; +$input-bg-color: #fff; +$input-text-color: #a3a3a3; +$button-bg-color: #7f8ff4; +$button-text-color: #fff; + +//** root +:root { + background: $background; + color: $text; + font: 1rem "PT Sans", sans-serif; +} + +html, +body, +.container { + height: 100%; +} + +a { + color: inherit; + + &:hover { + color: $button-bg-color; + } +} + +//** helper +.email_check { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.uppercase { + text-transform: uppercase; +} + +//** button +.btn { + display: inline-block; + background: transparent; + color: inherit; + font: inherit; + border: 0; + outline: 0; + padding: 0; + transition: all 200ms ease-in; + cursor: pointer; + + &--primary { + background: $button-bg-color; + color: $button-text-color; + box-shadow: 0 0 10px 2px rgba(0, 0, 0, .1); + border-radius: 2px; + //padding: 12px 36px; + //padding: 7px 158px; + width: 100%; + + &:hover { + background: darken($button-bg-color, 4%); + } + + &:active { + background: $button-bg-color; + box-shadow: inset 0 0 10px 2px rgba(0, 0, 0, .2); + } + } + + /* &--inside { + margin-left: -96px; + } */ +} + +//** form +.form { + /* margin-left: auto; + margin-right: auto; */ + &__field { + width: 360px; + //width: 450px; + background: #fff; + color: $input-text-color; + font: inherit; + box-shadow: 0 6px 10px 0 rgba(0, 0, 0 , .1); + border: 0; + outline: 0; + padding: 22px 18px; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts new file mode 100644 index 0000000..692a6ca --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserRegistrationComponent } from './user-registration.component'; + +describe('UserRegistrationComponent', () => { + let component: UserRegistrationComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UserRegistrationComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UserRegistrationComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.ts new file mode 100644 index 0000000..52e1126 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user-registration/user-registration.component.ts @@ -0,0 +1,93 @@ + +import { HttpErrorResponse } from "@angular/common/http"; +import { Component, OnInit, ViewEncapsulation } from "@angular/core"; +import { FormArray, FormBuilder, FormGroup, Validators } from "@angular/forms"; +import { ActivatedRoute, Router } from "@angular/router"; + + +import { UserRegistrationService } from "src/app/services/admin/user-registration.service"; + + +export interface EmailRequest { + email: string; +} +@Component({ + selector: 'app-user-registration', + templateUrl: './user-registration.component.html', + styleUrls: ['./user-registration.component.scss'] +}) +export class UserRegistrationComponent implements OnInit { + + model: any = {}; + EmailRequest: EmailRequest; + emailErrMsg: string = "" + emailCheckForm: FormGroup; + constructor(private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private userRegistrationService: UserRegistrationService) { } + + ngOnInit(): void { + this.userRegistrationService.removeSignedUpUserInfo(); + this.userRegistrationService.removeStoredEmail(); + this.emailCheckForm = this._fb.group({ + email: ['', Validators.email] + }); + } + emailExistCheck() { + console.log('input email: ', this.model.email); + this.userRegistrationService.emailCheck(this.model.email) + .subscribe((res) => { + console.log('email check Res : ', res); + /* if(res == 202) { + this.emailErrMsg = res.body; + // redirect to next page + //this.router.navigate([""]) + } else if(res.status == 409){ + this.emailErrMsg = res.body; + } */ + }, (err) => { + console.log(err); + }); + } + + + get f() { return this.emailCheckForm.controls; } + onSubmit() { + console.log('this.emailCheckForm.value : ', this.emailCheckForm.value); + /* let headers = new HttpHeaders().set("Content-Type", "application/json"); + this.httpService.post('http://localhost:9119/token/email-exists', + JSON.stringify(this.emailCheckForm.value), { headers: headers, responseType: 'text' }) + .subscribe(data => { + console.log('success ', data); + this.router.navigate(["/varify-account"]); + }, err => { + console.log('failure ', err); + //location.reload; + this.emailErrMsg = "Email is Already Exist"; + } + ); */ + this.userRegistrationService.emailCheck(this.emailCheckForm.value) + .subscribe((res) => { + console.log('success ', res); + let email: string = res.message; + email = email.substring(16); + console.log(email); + this.userRegistrationService.storeEmail(email); + this.router.navigate(["/varify-account"]); + },(err: HttpErrorResponse) => { + console.log(err); + console.log(err.error.message); + if(err.status === 409) { + this.emailErrMsg = 'Email Already Exists'; + } else { + this.emailErrMsg = 'Server error'; + } + }); + } + + onSignUp() { + this.router.navigate(["signup"]); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.html new file mode 100644 index 0000000..4d02174 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.html @@ -0,0 +1,606 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+

User list

+
+
+ + +
+
+ + user not found! + + + User Id + + + + + Name + + + + + Username + + + + + Role + + + + + email + + + + + {{user1.userId}} + {{user1.firstName}} {{user1.lastName}} + {{user1.username}} + {{user1.role}} + {{user1.email}} + + + + + ˝ + + + + + + + + + + + + + + + + + + + + +
picture
ID{{user1.userId}}
Updated{{user1.updatedAt | date}}
Register{{user1.createdAt | date}}
+
+
+ + + + Users per page + {{pagination.firstItem + 1}} - {{pagination.lastItem + 1}} + of {{pagination.totalItems}} users + + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.scss new file mode 100644 index 0000000..62edce4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.scss @@ -0,0 +1,40 @@ +.td-title { + text-align: right; + width: 150px; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + color: white; +} + +.td-content { + text-align: left; +} + +img { + border: 2px solid #245; + border-radius: 5px; +} +.img-class{ + height: 100px; + width: 100px; +} + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 12px 20px; + margin: 8px 0; + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} + +.delete,.heading{ + text-align: center; + color: red; +} + +.add-pop,.heading{ + text-align: center; + color: green; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.spec.ts new file mode 100644 index 0000000..dd3b1d7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UserComponent } from './user.component'; + +describe('UserComponent', () => { + let component: UserComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ UserComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(UserComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.ts new file mode 100644 index 0000000..f7530c4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/user/user.component.ts @@ -0,0 +1,369 @@ +import { Component, OnInit } from '@angular/core'; +import { AlertService } from '../../../../services/alert.service'; +import { ToastrService } from 'ngx-toastr'; +import { ExcelService } from './../../../../services/excel.service'; +import { MainService } from './../../../../services/main.service'; +import * as moment from 'moment'; +import { ActivatedRoute, Router } from '@angular/router'; +import { UserListService } from '../../../../services/admin/user-list.service'; +import { HttpClient } from '@angular/common/http'; +import { MenuGroupService } from '../../../../services/admin/menu-group.service'; +import { UserInfoService } from '../../../../services/user-info.service'; +import { User } from '../../../../models/admin/user'; + +@Component({ + selector: 'app-user', + templateUrl: './user.component.html', + styleUrls: ['./user.component.scss'] +}) +export class UserComponent implements OnInit { + users: any[] = []; + rowSelected: any = {}; + loading = false; + modalEdit = false; + allusers: any; + // allusers: user; + userst: User; + openAddUser = false; + modaldelete = false; + modalcreate = false; + modalup = false; + tempid: any; + assign = false; + + user = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '' + } + updateU = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '' + } + + updateU1 = { + userId: '', + email: '', + firstName: '', + lastName: '', + username: '', + password: '' + } + + // image related variables + selectedFile: File; + retrievedImage: any; + base64Data: any; + retrieveResonse: any; + message: string; + // imageName: any; + imageName = 'index.jpg'; + + groupData: any; + + userData = { + id: '', + user_id: '', + name: '', + gender: '', + dob: '', + email: '', + username: '', + password: '', + menu_group: '' + } + + constructor( + private _mg: MenuGroupService, + private mainService: MainService, + private alertService: AlertService, + private toastr: ToastrService, + private excel: ExcelService, + private router: Router, + private route: ActivatedRoute, + private _user: UserListService, + private httpClient: HttpClient, + private _ut: UserInfoService + ) { } + + ngOnInit() { + this.getUsersT(); + this.getUser(); + this.getUsers(); + + // this.getImage(); + + this._mg.getAll().subscribe( + (data: any) => { + this.groupData = data.items; + // console.log(this.groupData); + } + ); + } + + openAssignModal(id: any) { + // console.log(id); + this._user.getOne(id).subscribe( + (data: any) => { + this.userData = data; + } + ); + this.assign = true; + } + + saveAssign() { + // console.log(this.userData.menu_group); + this._user.update(this.userData).subscribe( + (data: any) => { + console.log('Assign Updated Successfully...'); + this.assign = false; + this.ngOnInit(); + } + ); + } + + async getUser() { + this.loading = true; + const result = await this.mainService.getUserTest(); + if (result.results) { + this.users = result.results; + } + this.loading = false; + } + + onEdit(row) { + + console.log(row); + this._user.getOne(row).subscribe( + (data: any) => { + this.updateU = data; + console.log(this.updateU); + + } + ); + this.modalEdit = true; + } + + del(id: any) { + this.tempid = id; + this.modaldelete = true; + } + + async onDelete() { + // const confirmed: any = await this.alertService.confirm('', 'Delete confirm?'); + // if (confirmed.value) { + // this.toastr.success('Deleted successfully'); + // // .... + // } + + this._user.deleteById(this.tempid).subscribe( + (data: any) => { + console.log('Success....'); + this.toastr.success('User deleted successfully...'); + this.modaldelete = false; + this.ngOnInit(); + + } + ); + } + + async onSave() { + const confirmed: any = await this.alertService.confirm('', 'Save confirm?'); + if (confirmed.value) { + this.toastr.success('Save successfully'); + // .... + this.modalEdit = false; + } + } + + onExport() { + this.excel.exportAsExcelFile(this.allusers, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.openAddUser = true; + } + + getUsers() { + this._user.getAll().subscribe( + (data: any) => { + this.allusers = data; + + this.allusers.forEach((i: any) => { + i['imgData'] = ''; + // this.getImage(i.id); + // i['imgData'] = this.retrievedImage; + + this.httpClient.get('http://localhost:9191/user_list/get/' + i.id) + .subscribe( + res => { + this.retrieveResonse = res; + this.base64Data = this.retrieveResonse.picByte; + this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data; + i['imgData'] = 'data:image/jpeg;base64,' + this.base64Data; + // console.log(this.retrievedImage); + } + ); + }); + + console.log(this.allusers); + }, + (error: any) => { + console.log('Error in loading users from server...'); + + } + ); + } + + createUserHere() { + console.log('add button clicked....'); + + this._user.add(this.user).subscribe( + (data: any) => { + this.onUpload(data.id); + console.log('added...'); + this.toastr.success('User added successfully...'); + + this.openAddUser = false; + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } + + updateUser() { + console.log('button clicked: update'); + this._user.update(this.updateU).subscribe( + (data: any) => { + console.log('success...'); + this.toastr.success('User updated successfully...'); + this.modalEdit = false; + this.ngOnInit(); + }, + (error: any) => { + console.log(error); + + } + ); + } + + public onFileChanged(event) { + //Select File + this.selectedFile = event.target.files[0]; + } + + //Gets called when the user clicks on submit to upload the image + onUpload(user: any) { + console.log(this.selectedFile); + + //FormData API provides methods and properties to allow us easily prepare form data to be sent with POST HTTP requests. + const uploadImageData = new FormData(); + uploadImageData.append('imageFile', this.selectedFile, this.selectedFile.name); + uploadImageData.append('user_id', user); + + //Make a call to the Spring Boot Application to save the image + this.httpClient.post('http://localhost:9191/user_list/upload', uploadImageData, { observe: 'response' }) + .subscribe((response) => { + if (response.status === 200) { + this.message = 'Document uploaded successfully'; + } else { + this.message = 'Document not uploaded successfully'; + } + } + ); + + + } + + //Gets called when the user clicks on retieve image button to get the image from back end + getImage(id: any) { + //Make a call to Sprinf Boot to get the Image Bytes. + this.httpClient.get('http://localhost:9191/user_list/get/' + id) + .subscribe( + res => { + this.retrieveResonse = res; + this.base64Data = this.retrieveResonse.picByte; + this.retrievedImage = 'data:image/jpeg;base64,' + this.base64Data; + // console.log(this.retrievedImage); + } + ); + } + + onEditNew(id: any) { + console.log(id); + this.getOneUser(id); + this.modalEdit = true; + } + + delNew(id: any) { + this.tempid = id; + console.log(id); + + } + + openAssignModalNew(id: any) { + console.log(id); + + } + + getUsersT() { + + this.httpClient.get('http://localhost:9191/api/all-users').subscribe( + (data: any) => { + this.userst = data; + console.log(this.userst); + }, + (error: any) => { + console.log(error); + } + ); + } + + getOneUser(id: any) { + + this.httpClient.get('http://localhost:9191/api/org-users/' + id).subscribe( + (data: any) => { + this.updateU1 = data; + console.log(this.updateU1); + + }, + (er: any) => { + console.log(er); + + } + ); + } + + updateUserNew() { + this.httpClient.put('http://localhost:9191/api/org-users/' + this.updateU1.userId, this.updateU1).subscribe( + (data: any) => { + console.log('success...'); + this.toastr.success('User updated successfully...'); + this.modalEdit = false; + console.log(data); + this.ngOnInit(); + + }, + (error: any) => { + console.log(error); + + } + ); + } +} + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html new file mode 100644 index 0000000..aad00af --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.html @@ -0,0 +1,276 @@ + + + + +
+
+
+

User Group Maintenance

+
+
+ +
+ + +
+
+
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + +
User Group NoGroup NameDescriptionGroup LevelStatusUpdated DateAction
{{data.usrGrp}}{{data.groupName}}{{data.groupDesc}}{{data.groupLevel}}{{data.status}}{{data.updateDateFormated}}
+
+ + +
+ + + + + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss new file mode 100644 index 0000000..0dcdf9b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.scss @@ -0,0 +1,62 @@ + +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + //background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts new file mode 100644 index 0000000..945eb38 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsergrpmaintenanceComponent } from './usergrpmaintenance.component'; + +describe('UsergrpmaintenanceComponent', () => { + let component: UsergrpmaintenanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsergrpmaintenanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsergrpmaintenanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts new file mode 100644 index 0000000..19cf929 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usergrpmaintenance/usergrpmaintenance.component.ts @@ -0,0 +1,158 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import { UsergrpmaintainceService } from '../../../../services/admin/usergrpmaintaince.service'; +import { ToastrService } from 'ngx-toastr'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +@Component({ + selector: 'app-usergrpmaintenance', + templateUrl: './usergrpmaintenance.component.html', + styleUrls: ['./usergrpmaintenance.component.scss'] +}) +export class UsergrpmaintenanceComponent implements OnInit { + loading = false; + public entryForm: FormGroup; + givendata; + orders; + error; + modalAdd= false; + modaledit=false; + modaldelete=false; + rowSelected :any= {}; + mcreate; + medit; + showdata; + submitted=false; + + constructor( + private excel: ExcelService, + private toastr:ToastrService, + private _fb: FormBuilder, + private router: Router, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private mainservice:UsergrpmaintainceService, + ) { } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.medit=this.showdata.medit + console.log(this.medit); + + this.mainservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + if(this.givendata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + + this.entryForm = this._fb.group({ + groupName:['',[Validators.required]] , + groupDesc:['',[Validators.required]] , + groupLevel:['',[Validators.required]] , + status:['',[Validators.required]] , + + }); + } + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.modalAdd=true; + // this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } + goToEdit(row){ + this.rowSelected = row; + this.modaledit=true; + //this.router.navigate(["../usermaintanceedit/"+ id], { relativeTo: this.route }); + } + onUpdate(id) { + this.modaledit = false; + //console.log("in update"); + console.log("id "+id); + console.log( this.rowSelected ); + //console.log("out update"); + this.mainservice.update(this.rowSelected).subscribe( + (data) => { + console.log(data); + if (data) { + this.toastr.success('Updated successfully'); + } + }, (error) => { + console.log(error); + if(error){ + this.toastr.error('Not Updated Data Getting Some Error'); + } + } + ); + } + onSubmit() { + console.log(this.entryForm.value); + this.submitted=true; + if (this.entryForm.invalid) { + return; + } + this.onCreate(); + } + onCreate() { + this.modalAdd=false; + this.mainservice.create(this.entryForm.value).subscribe(data => { + console.log(data) + this.ngOnInit(); + if (data) { + this.toastr.success('Added successfully'); + } + }, + (error) => { + console.log(error); + if(error){ + this.toastr.error('Not Added Data Getting Some Error'); + } + } + ); + // if (this.entryForm.value) { + // this.toastr.success('Added successfully'); + + // } + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.mainservice.deleteusr(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); + + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.html new file mode 100644 index 0000000..7d09893 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.html @@ -0,0 +1,79 @@ + + + + +
+
+
+

User Maintenance

+
+
+
+ + +
+
+
+
+ + + + + + + + + + + + + + + + + + + +
User IdFull NameEmailUser Group NameAction
{{data.userId}}{{data.fullName}}{{data.email}}{{data.usrGrpName}} +
+
+ + + + + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.scss new file mode 100644 index 0000000..76ab29b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.scss @@ -0,0 +1,4 @@ +.delete,.heading{ + text-align: center; + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts new file mode 100644 index 0000000..881f48f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceComponent } from './usermaintance.component'; + +describe('UsermaintanceComponent', () => { + let component: UsermaintanceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.ts new file mode 100644 index 0000000..720fc70 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintance/usermaintance.component.ts @@ -0,0 +1,114 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { ExcelService } from '../../../../services/excel.service'; +import * as moment from 'moment'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +import { MenuGroupService } from 'src/app/services/admin/menu-group.service'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-usermaintance', + templateUrl: './usermaintance.component.html', + styleUrls: ['./usermaintance.component.scss'] +}) +export class UsermaintanceComponent implements OnInit { + loading = false; + loading1=false; + public entryForm: FormGroup; + givendata; + orders; + modalAdd= false; + modaledit=false; +mcreate; +medit; +mdelete; +showdata; +error; +modaldelete=false; +rowSelected :any= {}; + constructor(private excel: ExcelService, + private _fb: FormBuilder, + private router: Router, private toastr:ToastrService, + private route: ActivatedRoute, + private menuGroupService: MenuGroupService, + private mainservice:UsermaintanceService, + ) {this.loading1 = true; + setTimeout(() => { + this.loading1 = false; + }, 1000); } + + ngOnInit(): void { + this.showdata = this.menuGroupService.getdata(); + console.log(this.showdata); + this.mcreate=this.showdata.mcreate; + console.log(this.mcreate); + this.mdelete=this.showdata.mdelete + console.log(this.mdelete); + this.medit=this.showdata.medit + console.log(this.medit); + this.getData(); + + } + getData(){ + this.mainservice.getAll().subscribe((data) => { + console.log(data); + this.givendata = data; + if(this.givendata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + // for(let i =0;i { + console.log(error); + if(error){ + this.error="Server Error"; + } + }); + } + + onExport() { + this.excel.exportAsExcelFile(this.givendata, 'user_', + moment().format('YYYYMMDD_HHmmss')) + } + goToAdd() { + this.router.navigate(["../usermaintanceadd"],{relativeTo:this.route}); + } + goToEdit(id: number){ + this.router.navigate(["../usermaintancedit/"+ id], { relativeTo: this.route }); + } + onDelete(row) { + this.rowSelected = row; + this.modaldelete=true; + } + + delete(id) + { + this.modaldelete = false; + console.log("in delete "+id); + this.mainservice.deleteusr(id).subscribe( + (data) => { + console.log(data); + this.ngOnInit(); + if (data) { + this.toastr.success('Deleted successfully'); + } + }, + (error) => { + console.log('Error in adding data...',+error); + if(error){ + this.toastr.error('Not Deleted Data Getting Some Error'); + } + } + ); + + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html new file mode 100644 index 0000000..a75f456 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.html @@ -0,0 +1,91 @@ + +

User Maintenance

+ Add Mode
+
+
+
+ +
+
+ + +
+
*This field is Required
+
+
+
+ + +
+
*This field is Required
+
+
+
+ + +
+
*This field is Required
+
* Please Follow your pattern,+91 Enter 10 digit Mobile Number. +
+ +
+
+
+ + +
+
*Password is required
+
* Password must be at least 6 characters
+ +
+
+
+ + +
+
* Confirm Password is required
+
* Password and Confirm Password must be match.
+ +
+
+ +
+ + +
+
*This field is Required
+
+
+
+ + +
+
*This field is Required
+ +
*Email must be a valid email address
+ +
+
+
+ + +
+
*This field is Required
+
+
+ +
+
+ + +
+ + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss new file mode 100644 index 0000000..c871274 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.scss @@ -0,0 +1,8 @@ +@import '../../../../../styles1.scss'; +input.ng-invalid.ng-touched { + border-color: red; +} + +.error_mess { + color: red; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts new file mode 100644 index 0000000..3a520a3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceaddComponent } from './usermaintanceadd.component'; + +describe('UsermaintanceaddComponent', () => { + let component: UsermaintanceaddComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceaddComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceaddComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts new file mode 100644 index 0000000..02ced90 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceadd/usermaintanceadd.component.ts @@ -0,0 +1,198 @@ +import { Component, OnInit } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; + +@Component({ + selector: 'app-usermaintanceadd', + templateUrl: './usermaintanceadd.component.html', + styleUrls: ['./usermaintanceadd.component.scss'] +}) +export class UsermaintanceaddComponent implements OnInit { + public entryForm: FormGroup; + customer:boolean=false; + department:boolean=false; + position:boolean=false; + custdata: any; + loading = false; + clickedID:number; + custiddata: any; + userobjcust={ + customerName:'', + customerCode:'', + } + departmentdata: any; + positiondata: any; + deptiddata: any; + userobjdept={ + departmentCode:'', + } + userobjpos={ + positionCode:'', + } + posiddata: any; + usergrpdata; + accessdata; + error; + submitted=false; + + constructor( private _fb: FormBuilder, + private mainservice:UsermaintanceService, + private router: Router,private accesstype:AccesstypeService, + private route: ActivatedRoute, + private usergrpservice: UsergrpmaintainceService + ) { } + + ngOnInit(): void { + this.entryForm = this._fb.group({ + first_name :['',[Validators.required]], + last_name:['',[Validators.required]], + email:['',[Validators.required,Validators.email]], + mob_no:['',[Validators.required]], + new_password:['',[Validators.required,Validators.minLength(6)]], + confirm_passwordS:['',[Validators.required]], + usrGrpId:['',[Validators.required]], + account_id:1, + accesstype:['',[Validators.required]], + // status:[null], + // username:[null] , + // userPassw:[null] , + // confirmPassword:[null], + // title:[null], + // shortName:[null], + // fullName:[null], + // status:[null], + // positionCodeString:[null], + // departmentCodeString:[null], + // usrGrpId:[null], + // customerId:[null], + // email:[null], + // notification:[null], + + //departmentCode: this._fb.array([this.department()]), + // positionCode: this._fb.array([this.position()]), + //usrGrp: this._fb.array([this.user()]), + + }, { + validator: ConfirmedValidator('new_password', 'confirm_passwordS') + }); + this.usergrp(); + this.getdata(); + } + getdata(){ + this.accesstype.getAll().subscribe(resp => { + this.accessdata = resp; + console.log('accessdata: ', this.accessdata); + if(this.accessdata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + usergrp(){ + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.usergrpdata = data; + }); + } + // department(){ + // return this._fb.group({ + // departmentCode:[null] , + + // }); + // } + // position(){ + // return this._fb.group({ + // positionCode:[null] , + + // }); + // } + // user(){ + // return this._fb.group({ + // usrGrp:[null] , + + // }); + //} + onSubmit(){ + this.submitted=true + if (this.entryForm.invalid) { + return; + } + console.log(this.entryForm.value); + this.mainservice.create(this.entryForm.value).subscribe(data => { + console.log(data) + }, + (error) => { + console.log(error); + } + ); + this.router.navigate(["../usermaintance"], { relativeTo: this.route }); + } + +goback(){ + this.router.navigate(["../usermaintance"], { relativeTo: this.route }); +} + gotodepartmet(){ + this.department=!this.department; + this.mainservice.getalldepartment().subscribe((data)=>{ + console.log(data); + this.departmentdata=data; + }); + } + getdepid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbydepartmentid(id).subscribe((data) => { + console.log(data); + this.deptiddata= data; + // this.userObj= this.custiddata; + this.userobjdept =this.deptiddata; + + + }); + this.department=false; + } + gotoposition(){ + this.position=!this.position; + this.mainservice.getallposition().subscribe((data)=>{ + console.log(data); + this.positiondata=data; + }) + } + getposid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbypositionid(id).subscribe((data) => { + console.log(data); + this.posiddata= data; + // this.userObj= this.custiddata; + this.userobjpos =this.posiddata; + + + }); + this.position=false; + } + + +} +export function ConfirmedValidator(controlName: string, matchingControlName: string){ + return (formGroup: FormGroup) => { + const control = formGroup.controls[controlName]; + const matchingControl = formGroup.controls[matchingControlName]; + if (matchingControl.errors && !matchingControl.errors.confirmedValidator) { + return; + } + if (control.value !== matchingControl.value) { + matchingControl.setErrors({ confirmedValidator: true }); + } else { + matchingControl.setErrors(null); + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html new file mode 100644 index 0000000..c7b56e5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.html @@ -0,0 +1,50 @@ + +

User Maintenance

+ Edit Mode
+
+
+
+
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+
+ + +
+ +
+
+ + +
+ + \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss new file mode 100644 index 0000000..36abb8c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.scss @@ -0,0 +1 @@ +@import '../../../../../styles1.scss'; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts new file mode 100644 index 0000000..4173d29 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UsermaintanceeditComponent } from './usermaintanceedit.component'; + +describe('UsermaintanceeditComponent', () => { + let component: UsermaintanceeditComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ UsermaintanceeditComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(UsermaintanceeditComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts new file mode 100644 index 0000000..4c095ab --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/admin/usermaintanceedit/usermaintanceedit.component.ts @@ -0,0 +1,137 @@ +import { Component, OnInit } from '@angular/core'; +import { ActivatedRoute, Router } from '@angular/router'; +import * as bootstrap from 'bootstrap'; +import { AccesstypeService } from 'src/app/services/admin/accesstype.service'; +import { UsergrpmaintainceService } from 'src/app/services/admin/usergrpmaintaince.service'; +import { UsermaintanceService } from '../../../../services/admin/usermaintance.service'; +//import { Usermain } from 'src/app/models/usermaintaince'; + +@Component({ + selector: 'app-usermaintanceedit', + templateUrl: './usermaintanceedit.component.html', + styleUrls: ['./usermaintanceedit.component.scss'] +}) +export class UsermaintanceeditComponent implements OnInit { + id:number; + data1:any={}; + customer:boolean=false; + custdata: any; + clickedID:number; + custiddata: any; + loading = false; + userobjcust={ + customerName:'', + customerCode:'', + } + accessdata; + department:boolean=false; + departmentdata: any; + positiondata: any; + deptiddata: any; + userobjdept={ + departmentCode:'', + } + userobjpos={ + positionCode:'', + } + posiddata: any; + position:boolean=false; + usergrpdata; + error; + constructor(private route:ActivatedRoute, + private mainservice:UsermaintanceService, + private router: Router,private accesstype:AccesstypeService, + private usergrpservice: UsergrpmaintainceService + + ) { } + + ngOnInit(): void { + this.id = this.route.snapshot.params["id"]; + console.log("update with id = ", this.id); + this.getById(this.id); + // + this.usergrp(); + this.getdata(); + } + getdata(){ + this.accesstype.getAll().subscribe(resp => { + this.accessdata = resp; + console.log('accessdata: ', this.accessdata); + if(this.accessdata.length==0){ + this.error="No data Available"; + console.log(this.error) + } + },(error) => { + console.log(error); + if(error){ + this.error="Server Error"; + } + }) + } + usergrp(){ + this.usergrpservice.getAll().subscribe((data) => { + console.log(data); + this.usergrpdata = data; + }); + } +getById(id:number){ +this.mainservice.getbyid(id).subscribe((data)=>{ + this.data1=data; + // this.data1=this.data3; + console.log(this.data1); +}); +} +update(){ + console.log(this.data1); + this.mainservice.updatenew(this.id,this.data1).subscribe((data)=>{ +console.log(data); +this.router.navigate(["../../usermaintance"], { relativeTo: this.route }); + },(error)=>{ + console.log(error); + }); + +} +goback(){ + this.router.navigate(["../../usermaintance"], { relativeTo: this.route }); +} + gotodepartmet(){ + this.department=!this.department; + this.mainservice.getalldepartment().subscribe((data)=>{ + console.log(data); + this.departmentdata=data; + }); + } + getdepid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbydepartmentid(id).subscribe((data) => { + console.log(data); + this.deptiddata= data; + // this.userObj= this.custiddata; + this.userobjdept =this.deptiddata; + + + }); + this.department=false; + } + gotoposition(){ + this.position=!this.position; + this.mainservice.getallposition().subscribe((data)=>{ + console.log(data); + this.positiondata=data; + }) + } + getposid(id:number){ + this.clickedID=id; + console.log("clicked by id"+ id); + this.mainservice.getbypositionid(id).subscribe((data) => { + console.log(data); + this.posiddata= data; + // this.userObj= this.custiddata; + this.userobjpos =this.posiddata; + + + }); + this.position=false; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.html new file mode 100644 index 0000000..0d9c888 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.html @@ -0,0 +1,3 @@ +
+

ANGULAR BOOTSTRAP

+
\ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.scss new file mode 100644 index 0000000..1dd68fa --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.scss @@ -0,0 +1,55 @@ + + +/* === BASE HEADING === */ + +h1 { + position: relative; + padding: 0; + margin: 0; + font-family: "Raleway", sans-serif !important; + font-weight: 300; + font-size: 40px; + color: #080808; + -webkit-transition: all 0.4s ease 0s; + -o-transition: all 0.4s ease 0s; + transition: all 0.4s ease 0s; + } + + h1 span { + display: block; + font-size: 0.5em; + line-height: 1.3; + } + h1 em { + font-style: normal; + font-weight: 600; + } + + /* === HEADING STYLE #1 === */ + .one h1 { + text-align: center; + text-transform: uppercase; + padding-bottom: 5px; + } + .one h1:before { + width: 28px; + height: 5px; + display: block; + content: ""; + position: absolute; + bottom: 3px; + left: 50%; + margin-left: -14px; + background-color: #b80000; + } + .one h1:after { + width: 100px; + height: 1px; + display: block; + content: ""; + position: relative; + margin-top: 25px; + left: 50%; + margin-left: -50px; + background-color: #b80000; + } \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts new file mode 100644 index 0000000..5ec4ff8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DashboardComponent } from './dashboard.component'; + +describe('DashboardComponent', () => { + let component: DashboardComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ DashboardComponent ] + }) + .compileComponents(); + }); + + beforeEach(() => { + fixture = TestBed.createComponent(DashboardComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.ts new file mode 100644 index 0000000..072aa2f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/dashboard/dashboard.component.ts @@ -0,0 +1,17 @@ +import { Component, OnInit } from '@angular/core'; +import { ToastrService } from 'ngx-toastr'; + +@Component({ + selector: 'app-dashboard', + templateUrl: './dashboard.component.html', + styleUrls: ['./dashboard.component.scss'] +}) +export class DashboardComponent implements OnInit { + + constructor() { } + + ngOnInit(): void { + + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.html new file mode 100644 index 0000000..873f882 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.html @@ -0,0 +1,3 @@ + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.scss new file mode 100644 index 0000000..e69de29 diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.spec.ts new file mode 100644 index 0000000..39261a3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MainPageComponent } from './main-page.component'; + +describe('MainPageComponent', () => { + let component: MainPageComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ MainPageComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(MainPageComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.ts new file mode 100644 index 0000000..9873121 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/fnd/main-page/main-page.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-main-page', + templateUrl: './main-page.component.html', + styleUrls: ['./main-page.component.scss'] +}) +export class MainPageComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.html new file mode 100644 index 0000000..5b0588a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.html @@ -0,0 +1,135 @@ + + +
+ + + +
+ +
+
+ + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.scss new file mode 100644 index 0000000..7b8e71f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.scss @@ -0,0 +1,338 @@ +@import url('https://fonts.googleapis.com/css2?family=Poppins&display=swap'); + +:root{ + --color-default:#004f83; + --color-second:#0067ac; + --color-white:#fff; + --color-body:#e4e9f7; + --color-light:#e0e0e0; +} + +.content-area{ + margin: 24px; + max-height: 720px; +} + +*{ + padding: 0%; + margin: 0%; + box-sizing: border-box; + // font-family: 'Poppins', sans-serif; + max-height: 769px; +} + +body{ + min-height: 100vh; +} + +.sidebar{ + min-height: 100vh; + width: 78px; + padding: 6px 0px; + z-index: 99; + // background-color: var(--color-default); + background-color:darkslateblue; + transition: all .5s ease; + position:fixed; + top:0; + left: 0; + bottom: 0; + overflow-y: auto !important; +} + +.sidebar.open{ + width: 250px; + min-height:720; + // overflow-y: scroll !important; +} + +.sidebar .logo_details{ + height: 60px; + display: flex; + align-items: center; + position: relative; +} + +.sidebar .logo_details .icon{ + opacity: 0; + transition: all 0.5s ease ; +} + + + +.sidebar .logo_details .logo_name{ + color:#fff; + font-size: 22px; + font-weight: 600; + opacity: 0; + transition: all .5s ease; +} + +.sidebar.open .logo_details .icon, +.sidebar.open .logo_details .logo_name{ + opacity: 1; +} + +.sidebar .logo_details #btn{ + position: absolute; + top:50%; + right: 0; + transform: translateY(-50%); + font-size: 23px; + text-align: left; + cursor: pointer; + transition: all .5s ease; +} + +.sidebar.open .logo_details #btn{ + text-align: left; +} + +.sidebar i{ + color:#fff; + height: 60px; + line-height: 60px; + min-width: 50px; + font-size: 25px; + text-align: center; +} + +box-icon{ + // color:#fff !important; + height: 25px; + line-height: 60px; + min-width: 50px; + margin-top: 0%; + // font-size: 25px; + text-align: center; +} + +.sidebar .nav-list{ + margin-top: 10px; + margin-left: 0px !important; + height: 100%; +} + +.sidebar .subnav-list{ + margin-top: 10px; + margin-left: 0px !important; + height: 100%; +} + + +.sidebar li{ + position: relative; + margin:8px 0; + list-style: none; +} + +.sidebar li .tooltip{ + position: absolute; + top:-20px; + left:calc(100% + 15px); + z-index: 3; + background-color: #fff; + box-shadow: 0 5px 10px rgba(0, 0, 0, 0.3); + padding: 6px 14px; + font-size: 15px; + font-weight: 400; + border-radius: 5px; + white-space: nowrap; + opacity: 0; + pointer-events: none; +} + +.sidebar li:hover .tooltip{ + opacity: 1; + pointer-events: auto; + transition: all 0.4s ease; + top:50%; + transform: translateY(-50%); +} + +.sidebar.open li .tooltip{ + display: none; +} + +.sidebar input{ + font-size: 15px; + color: #fff; + font-weight: 400; + outline: none; + height: 35px; + width: 35px; + border:none; + border-radius: 5px; + background-color: #fff; + transition: all .5s ease; +} + +.sidebar input::placeholder{ + color:#fff +} + +.sidebar.open input{ + width: 100%; + padding: 0 20px 0 50px; +} + +.sidebar .bx-search{ + position: absolute; + top:50%; + left:0; + transform: translateY(-50%); + font-size: 22px; + background-color:#fff; + color: var(--color-white); +} + +.sidebar li a{ + display: flex; + height: 100%; + width: 100%; + align-items: center; + text-decoration: none; + background-color: var(--color-default); + position: relative; + transition: all .5s ease; + z-index: 12; +} + +.sidebar li a::after{ + content: ""; + position: absolute; + width: 100%; + height: 100%; + transform: scaleX(0); + background-color: var(--color-white); + border-radius: 5px; + transition: transform 0.3s ease-in-out; + transform-origin: left; + z-index: -2; +} + +.sidebar li a:hover::after{ + transform: scaleX(1); + color:darkslateblue; +} + +.sidebar li a .link_name{ + color:#ebe2e2; + font-size: 15px; + font-weight: 400; + white-space: nowrap; + pointer-events: auto; + transition: all 0.4s ease; + pointer-events: none; + opacity: 0; +} + +.sidebar li a:hover .link_name, +.sidebar li a:hover i{ + transition: all 0.5s ease; + color:#ffffff; +} + +.sidebar.open li a .link_name{ + opacity: 1; + pointer-events: auto; +} + +.sidebar li i{ + height: 35px; + line-height: 35px; + font-size: 18px; + border-radius: 5px; +} + +.sidebar li.profile{ + position: fixed; + height: 60px; + width: 78px; + left: 0; + bottom:-8px; + padding:10px 14px; + overflow: hidden; + transition: all .5s ease; +} + +.sidebar.open li.profile{ + width: 250px; +} + +.sidebar .profile .profile_details{ + display: flex; + align-items: center; + flex-wrap: nowrap; +} + +.sidebar li img{ + height: 45px; + width: 45px; + object-fit: cover; + border-radius: 50%; + margin-right: 10px; +} + +.sidebar li.profile .name, +.sidebar li.profile .designation{ + font-size: 15px; + font-weight: 400; + color:#fff; + white-space: nowrap; +} + +.sidebar li.profile .designation{ + font-size: 12px; +} + +.sidebar .profile #log_out{ + position: absolute; + top:50%; + right: 0; + transform: translateY(-50%); + background-color: #fff; + width: 100%; + height: 60px; + line-height: 60px; + border-radius: 5px; + cursor: pointer; + transition: all 0.5s ease; +} + +.sidebar.open .profile #log_out{ + width: 50px; + background: none; +} + +.home-section{ + position: relative; + background-color: var(--color-body); + min-height: 100vh; + top:0; + left:78px; + width: calc(100% - 78px); + transition: all .5s ease; + z-index: 2; +} + +.home-section .text{ + display: inline-block; + color:var(--color-default); + font-size: 25px; + font-weight: 500; + margin: 18px; +} + +.sidebar.open ~ .home-section{ + left:250px; + width: calc(100% - 250px); +} + // + // + + // .collapse { + // &:not(.show) { + // display: none; + // } + // } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.spec.ts new file mode 100644 index 0000000..c4d6365 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { LayoutComponent } from './layout.component'; + +describe('LayoutComponent', () => { + let component: LayoutComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ LayoutComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LayoutComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.ts new file mode 100644 index 0000000..e7b6289 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/layout/layout.component.ts @@ -0,0 +1,232 @@ + +import { Component,ViewEncapsulation, OnInit, Input } from '@angular/core'; +import { Router,ActivatedRoute } from '@angular/router'; +import { LoginService } from '../../../services/api/login.service'; +import { UserInfoService} from '../../../services/user-info.service'; +import { RealnetMenuService } from '../../../services/api/realnet-menu.service'; +import { Rn_Main_Menu } from '../../../models/builder/Rn_Main_Menu'; +import { MenuGroupService } from '../../../services/admin/menu-group.service'; +import { GuidedTour, Orientation} from '../ngx-guided-tour/src/lib/guided-tour.constants'; +import { GuidedTourService } from '../ngx-guided-tour/src/lib/guided-tour.service'; +import { TourService } from '../ngx-guided-tour/src/lib/tour.service'; +import { ToastrService } from 'ngx-toastr'; +import { environment } from 'src/environments/environment'; + +@Component({ + selector: 'app-layout', + templateUrl: './layout.component.html', + styleUrls: ['./layout.component.scss'] +}) +export class LayoutComponent implements OnInit { + // baseUrl= environment.chaturl; + baseUrl; + @Input() data:any; + collapsed = true; + public showAppAlert:boolean = false; +modalteam=false; + public userName: string=""; + + private formCode: string ='teacher_form'; + public key:string="formCode"; + public storage:Storage = sessionStorage; + constructor( + private router: Router, + private route: ActivatedRoute, + private userInfoService:UserInfoService, + private realnetMenuService: RealnetMenuService, + private menuGroupService: MenuGroupService, + private guidedTourService: GuidedTourService, + private tourservice: TourService, + private toastr: ToastrService, + ) { this.userName = this.userInfoService.getUserName(); + } + user_name : any; + userrole:any; + menus: Rn_Main_Menu[]; + menu:any; + tourdata; + steps; + error; + openSidebar: boolean = true; + ngOnInit() { + this.initializeSidebar(); + + this.storage.setItem(this.key, this.formCode); + this.user_name = this.userInfoService.getUserName(); + console.log('user name: ' + this.user_name); + this.userrole=this.userInfoService.getRoles(); + console.log('user_role',this.userrole); + this.udata=this.userInfoService.getUserId(); + console.log('user id',this.udata); + this.loadMenuByAccountId(); + this.loadMenuByMenuGroup(); + + this.tourservice.getall().subscribe((data)=>{ + this.tourdata=data[1]; + //console.log("tour data",data); + console.log(this.tourdata); + //console.log(this.tourdata.tourId); + //console.log(this.tourdata.useOrb); +//this.steps=JSON.stringify(this.tourdata.steps); + // console.log(this.tourdata.steps); + //this.dashboardTour.tourId=this.tourdata.tourId; + //console.log(this.dashboardTour.tourId); + //this.dashboardTour.useOrb=this.tourdata.useOrb; + // this.dashboardTour.steps=this.tourdata.steps; + }); +} + + +private initializeSidebar() { + const sidebar = document.querySelector(".sidebar"); + const closeBtn = document.querySelector("#btn"); + const menuIcon = document.querySelector(".menuIcon"); + const Submenu = document.querySelector(".collapse"); + + const toggleSidebar = () => { + sidebar.classList.toggle("open"); + menuBtnChange(); + }; + + sidebar.addEventListener("mouseenter", toggleSidebar); + sidebar.addEventListener("mouseleave", toggleSidebar); + + const menuBtnChange = () => { + if (sidebar.classList.contains("open")) { + closeBtn.classList.replace("bx-menu", "bx-menu-alt-right"); + } else { + closeBtn.classList.replace("bx-menu-alt-right", "bx-menu"); + } + }; +} + + + +showSubmenu(itemEl: HTMLElement) { + itemEl.classList.toggle("showMenu"); +} +// side nav menu-sub_menu +loadMenuByAccountId() { + this.realnetMenuService.getByAccountId().subscribe(resp => { + this.menus = resp; + console.log('menu: ', this.menus); + }); +} + + +loadMenuByMenuGroup() { + this.menuGroupService.getByCurrentUserMenuGroupId2().subscribe(resp => { + this.menus = resp; + console.log('menus: ', this.menus); + },(error) => { + console.log(error); + if(error){ + this.error="No data Available OR server Error"; + } + if (error.status === 401) { + // auto logout if 401 response returned from api + // this.authenticationService.logout(); + this.toastr.error("Your Token Is Expire Plz login Again") + //location.reload(true); +} + }) +} + + +/* menuGroup: Rn_Menu_Group_Header[]; +menu_id: number; +loadMenuGroupData() { + this.menuGroupService.getAll().subscribe(resp => { + this.menuGroup = resp; + this.menu_id = this.menuGroup + }); +} */ +///for all menu click +getMenuIdentifier(menuItemDesc: string): string { + return menuItemDesc.replace(/\s+/g, '_').toLowerCase(); +} + +// Inside your component class +activeMenuId: string | null = null; + +toggleCollapse(menuItemDesc: string) { + const currentMenuId = this.getMenuIdentifier(menuItemDesc); + this.activeMenuId = this.activeMenuId === currentMenuId ? null : currentMenuId; +} + + +navbarSelectionChange(val){ + // console.log(val); +} + +closeAppAlert(){ + this.showAppAlert=false; +} + +isDisabled(input: string): boolean{ + if(input === null) { + return true; + } else false; +} + + + onLogout() { + this.userInfoService.logout().subscribe((data)=>{ + console.log(data); + }); + sessionStorage.clear(); + this.router.navigate(['login']); + } + menuFlag = true; + menuFlag1 = false; + udata; + uid; + message(){ + //this.menuFlag = false; + // this.menuFlag1 = true; +// this.menuGroupService.getuser(this.udata).subscribe((data)=>{ +// console.log(data); +// }) +window.open(`${this.baseUrl}`) + //window.location.href = `${this.baseUrl}`; + //this.udata=this.userInfoService.getUserInfo(); + //console.log(this.udata); + + this.menuGroupService.save(this.udata); + + this.uid=this.udata.userid; + localStorage.setItem("id", JSON.stringify(this.udata)); + //localStorage.setItem('id', this.uid); + //window.location.href = (`${this.baseUrl}/` + this.udata), true + //this.router.navigate([`${this.baseUrl}`], { relativeTo: this.route ,queryParams: { id: this.udata }}); + + //this.router.navigate(["../sureboard"],{relativeTo: this.route, queryParams: { userid: this.udata }}); + //this.router.navigate([`${this.baseUrl}`],{relativeTo: this.route, queryParams: { userid: this.udata }}); + //this.udata = this.userInfoService.getUserInfo(); + //this.userInfoService.storeUserInfo(JSON.stringify(this.udata.user)); + }// + + modaladd(){ + //this.modalteam=true; + this.router.navigate(['/cns-portal/myworkspace']); + } + mc; + me; + md; + mv; + send(val){ + console.log(val); + this.menuGroupService.storeaddeditvalues(val); +this.mc=val.mcreate; +this.me=val.medit; +this.md=val.mdelete; +this.mv=val.mvisible; +if(this.mv == 'false'){ + this.router.navigate(['/**']) +} + this.router.navigate(['./'+ val.main_menu_action_name] , { relativeTo: this.route}); + } + //skipLocationChange: true, value pass params->,queryParams:{mc:this.mc,me:this.me,md:this.md} + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main-routing.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main-routing.module.ts new file mode 100644 index 0000000..b1c05ef --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main-routing.module.ts @@ -0,0 +1,139 @@ + +import { Component, NgModule } from '@angular/core'; +import { Routes, RouterModule } from '@angular/router'; +import { MainPageComponent } from '../main/fnd/main-page/main-page.component'; +import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; +import { AboutComponent } from '../main/admin/about/about.component'; +import { LayoutComponent } from './layout/layout.component'; +import { UserComponent } from '../main/admin/user/user.component'; + +import { PasswordResetComponent } from '../main/admin/password-reset/password-reset.component'; +import { DashboardComponent } from '../main/fnd/dashboard/dashboard.component'; + +import { AllMenuGroupComponent } from '../main/admin/menu-group/all/all-menu-group.component'; + +import { EditMenuGroupComponent } from '../main/admin/menu-group/edit/edit-menu-group.component'; +import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component'; +import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-on/readonly-menu-group.component'; +import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component'; +import { AllMenurComponent } from '../main/admin/menu-register/all/all-menur.component'; +import { AddMenurComponent } from '../main/admin/menu-register/add/add-menur.component'; +import { EditMenurComponent } from '../main/admin/menu-register/edit/edit-menur.component'; +import { ReadonlyMenurComponent } from '../main/admin/menu-register/read/readonly-menur.component'; + +import { ProfileSettingComponent } from '../main/admin/profile-setting/profile-setting.component'; +import { UsermaintanceComponent } from '../main/admin/usermaintance/usermaintance.component'; +import { UsermaintanceaddComponent } from '../main/admin/usermaintanceadd/usermaintanceadd.component'; +import { UsermaintanceeditComponent } from '../main/admin/usermaintanceedit/usermaintanceedit.component'; +import { UsergrpmaintenanceComponent } from '../main/admin/usergrpmaintenance/usergrpmaintenance.component'; +import { MenuaccesscontrolComponent } from '../main/admin/menuaccesscontrol/menuaccesscontrol.component'; +import { LogconfigComponent } from '../main/admin/logconfig/logconfig.component'; +import { AuthGuard } from '../../services/auth_guard.service'; + +import { SystemparametersComponent } from '../main/admin/systemparameters/systemparameters.component'; +import { MenumaintanceComponent } from '../main/admin/menumaintance/menumaintance.component'; +// import { DocumentmasterComponent } from '../main/admin/documentmaster/documentmaster.component'; +// import { DocumentreferenceComponent } from '../main/admin/documentreference/documentreference.component'; +// import { DocumentstructureComponent } from '../main/admin/documentstructure/documentstructure.component'; + +import { MyworkspaceComponent } from '../main/admin/myworkspace/myworkspace.component'; + +import { OauthComponent } from './admin/oauth/oauth.component'; + +import { QueryComponent } from './admin/query/query.component'; + +import { SubmenuComponent } from './admin/submenu/submenu.component'; + +import { Role } from '../../models/admin/role'; +import { AccesstypeComponent } from './admin/accesstype/accesstype.component'; +import { ModulesComponent } from './admin/modules/modules.component'; + +import { SessionloggerComponent } from './admin/sessionlogger/sessionlogger.component'; +import { LogreaderComponent } from './admin/logreader/logreader.component'; +import { ExceptionComponent } from './admin/exception/exception.component'; +import { AuditreportComponent } from './admin/auditreport/auditreport.component'; + +import { AudithistoryComponent } from './admin/audithistory/audithistory.component'; + + + +const routes: Routes = [ + //Important: The sequence of path is important as the router go over then in sequential manner + { path: '', redirectTo: '/cns-portal/dashboard', pathMatch: 'full' }, + { + path: 'cns-portal', + component: LayoutComponent, + canActivate: [AuthGuard], + children: [ + + + + { path: '', redirectTo: 'user', pathMatch: 'full' }, + { path: 'main', component: MainPageComponent }, + { path: 'user', component: UserComponent}, + + {path: 'usermaintance',component:UsermaintanceComponent}, + {path: 'usermaintanceadd',component:UsermaintanceaddComponent}, + {path: 'usermaintancedit/:id',component:UsermaintanceeditComponent}, + {path: 'usergrpmaintance',component:UsergrpmaintenanceComponent}, + {path: 'menuaccess',component:MenuaccesscontrolComponent}, + {path: 'systemparameters', component: SystemparametersComponent}, + // {path: 'query',component:QueryComponent,canActivate: [AuthGuard],data: { roles: [Role.Admin] } }, + {path: 'menumaintance', component:MenumaintanceComponent}, + {path: 'submenu/:id',component:SubmenuComponent}, + + // {path:'log',component:LogconfigComponent}, + { path: 'passwordreset', component: PasswordResetComponent }, + { path: 'profile-settings', component: ProfileSettingComponent }, + { path: 'about', component: AboutComponent }, + + {path: 'myworkspace', component:MyworkspaceComponent}, + + {path: 'oauth', component:OauthComponent}, + + {path: 'logreader',component:LogreaderComponent}, + + {path: 'accesstype',component:AccesstypeComponent}, ////////////////////////////////// + {path: 'acmodules',component:ModulesComponent}, + // {path: 'sessionlogger',component:SessionloggerComponent}, + // {path: 'exception',component:ExceptionComponent}, + // {path: 'auditreport',component:AuditreportComponent}, + {path: 'audithistory/:id',component:AudithistoryComponent}, + {path: 'dashboard', component:DashboardComponent, + + }, + // buildercomponents + + + { + path: 'menu-group', component: MenuGroupComponent, + children: [ + { path: '', redirectTo: 'all-menu' ,pathMatch: 'full' }, + { path: 'all-menu', component: AllMenuGroupComponent }, + { path: 'edit-menu', component: EditMenuGroupComponent }, + { path: 'read-only', component: ReadOnlyMenuGroupComponent } + ], + }, + + { + path: 'menu-r', component: MenuRegisterComponent, + children: [ + { path: '', redirectTo: 'all-r', pathMatch: 'full' }, + { path: 'all-r', component: AllMenurComponent }, + { path: 'add-r', component: AddMenurComponent }, + { path: 'edit-r', component: EditMenurComponent }, + { path: 'readonly-r', component: ReadonlyMenurComponent } + ], + }, + + { path: '**', component: PageNotFoundComponent }, + ] + }, + +]; + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class MainRoutingModule { } \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main.module.ts new file mode 100644 index 0000000..42ff25c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/main.module.ts @@ -0,0 +1,147 @@ + +import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule,ReactiveFormsModule } from '@angular/forms'; +import { ClarityModule } from '@clr/angular'; +// import 'bootstrap/dist/css/bootstrap.min.css'; + +import { MainRoutingModule } from './main-routing.module'; +import { MainPageComponent } from '../main/fnd/main-page/main-page.component'; +import { PageNotFoundComponent } from './page-not-found/page-not-found.component'; +import { AboutComponent } from '../main/admin/about/about.component'; +import { LayoutComponent } from './layout/layout.component'; +import { UserComponent } from '../main/admin/user/user.component'; +import { HelperModule } from '../../pipes/helpers.module'; +import { PasswordResetComponent } from '../main/admin/password-reset/password-reset.component'; + + + +// import { NgxChartsModule } from '@swimlane/ngx-charts'; +// import { NgxDatatableModule } from '@swimlane/ngx-datatable'; +import { DashboardComponent } from '../main/fnd/dashboard/dashboard.component'; + +import { MenuGroupComponent } from '../main/admin/menu-group/menu-group.component'; +import { AllMenuGroupComponent } from '../main/admin/menu-group/all/all-menu-group.component'; +import { EditMenuGroupComponent } from '../main/admin/menu-group/edit/edit-menu-group.component'; +// import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-only/readonly-menu-group.component'; +// import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component'; +// import { AddMenurComponent } from '../main/admin/menu-register/add-menur/add-menur.component'; +// import { EditMenurComponent } from '../main/admin/menu-register/edit-menur/edit-menur.component'; +// import { AllMenurComponent } from '../main/admin/menu-register/all-menur/all-menur.component'; +// import { ReadonlyMenurComponent } from '../main/admin/menu-register/readonly-menur/readonly-menur.component'; + + +import { ReadOnlyMenuGroupComponent } from '../main/admin/menu-group/read-on/readonly-menu-group.component'; +import { MenuRegisterComponent } from '../main/admin/menu-register/menu-register.component'; +import { AllMenurComponent } from '../main/admin/menu-register/all/all-menur.component'; +import { AddMenurComponent } from '../main/admin/menu-register/add/add-menur.component'; +import { EditMenurComponent } from '../main/admin/menu-register/edit/edit-menur.component'; +import { ReadonlyMenurComponent } from '../main/admin/menu-register/read/readonly-menur.component'; + + +import { ProfileSettingComponent } from '../main/admin/profile-setting/profile-setting.component'; +import { UsermaintanceComponent } from '../main/admin/usermaintance/usermaintance.component'; +import { UsermaintanceaddComponent } from '../main/admin/usermaintanceadd/usermaintanceadd.component'; +import { UsermaintanceeditComponent } from '../main/admin/usermaintanceedit/usermaintanceedit.component'; +import { UsergrpmaintenanceComponent } from '../main/admin/usergrpmaintenance/usergrpmaintenance.component'; +import { MenuaccesscontrolComponent } from '../main/admin/menuaccesscontrol/menuaccesscontrol.component'; +// import { Ng2SearchPipeModule } from 'ng2-search-filter'; +import { Ng2SearchPipeModule } from 'ng2-search-filter'; + +import { LogconfigComponent } from '../main/admin/logconfig/logconfig.component'; +import { SystemparametersComponent } from '../main/admin/systemparameters/systemparameters.component'; +import { MenumaintanceComponent } from '../main/admin/menumaintance/menumaintance.component'; +// import { DocumentmasterComponent } from '../main/admin/documentmaster/documentmaster.component'; +// import { DocumentreferenceComponent } from '../main/admin/documentreference/documentreference.component'; +// import { DocumentstructureComponent } from '../main/admin/documentstructure/documentstructure.component'; + +import { DndModule } from 'ngx-drag-drop'; +import { DragDropModule } from '@angular/cdk/drag-drop'; + +import { HttpClientModule } from '@angular/common/http'; + +import { MyworkspaceComponent } from '../main/admin/myworkspace/myworkspace.component'; +import { UserRegistrationComponent } from '../main/admin/user-registration/user-registration.component'; + +import { OauthComponent } from './admin/oauth/oauth.component'; + +import { GridsterModule } from 'angular-gridster2'; +// import { ChartsModule } from 'ng2-charts'; + +import { ImageCropperModule } from 'ngx-image-cropper'; + +import { QueryComponent } from './admin/query/query.component'; +import { HighchartsChartModule } from "highcharts-angular"; +import { SubmenuComponent } from './admin/submenu/submenu.component'; +// import {GuidedTourModule} from '../main/ngx-guided-tour/src/lib/guided-tour/guided-tour.module'; +import { CKEditorModule } from 'ng2-ckeditor'; +import { TagInputModule } from 'ngx-chips'; +import { CodemirrorModule } from "@ctrl/ngx-codemirror"; +import { AccesstypeComponent } from './admin/accesstype/accesstype.component'; +import { ModulesComponent } from './admin/modules/modules.component'; +import { CookieService } from 'ngx-cookie-service'; +import { SessionloggerComponent } from './admin/sessionlogger/sessionlogger.component'; +import { LogreaderComponent } from './admin/logreader/logreader.component'; +import { ExceptionComponent } from './admin/exception/exception.component'; +import { AuditreportComponent } from './admin/auditreport/auditreport.component'; +import { AudithistoryComponent } from './admin/audithistory/audithistory.component'; +import { RemoveCommasPipe } from 'src/app/pipes/remove-commas.pipe'; +import { SearchFilterPipe } from 'src/app/pipes/search-filter.pipe'; + +@NgModule({ + declarations: [ + RemoveCommasPipe, + MainPageComponent, PageNotFoundComponent,AboutComponent, LayoutComponent, UserComponent,PasswordResetComponent, + DashboardComponent,MenuGroupComponent, AllMenuGroupComponent, EditMenuGroupComponent, ReadOnlyMenuGroupComponent,UserRegistrationComponent, + MenuRegisterComponent, AddMenurComponent, EditMenurComponent, AllMenurComponent, ReadonlyMenurComponent,ProfileSettingComponent, + UsermaintanceComponent, UsermaintanceaddComponent, UsermaintanceeditComponent, UsergrpmaintenanceComponent, MenuaccesscontrolComponent, + LogconfigComponent, SystemparametersComponent,MyworkspaceComponent, + MenumaintanceComponent, OauthComponent, QueryComponent, SubmenuComponent, AccesstypeComponent, ModulesComponent, SessionloggerComponent, LogreaderComponent, ExceptionComponent, AuditreportComponent, AudithistoryComponent, + + // buildercomponents + + + + + + ], + // entryComponents: [DoughnutChartComponent, LineChartComponent, RadarChartComponent, BarChartComponent, BubbleChartComponent, DynamicChartComponent, ScatterChartComponent, PolarChartComponent, PieChartComponent, FinancialChartComponent, ToDoChartComponent, + // TextAreaComponent,ImgFieldComponent,LineFieldComponent,QrCodeComponent,TableFieldComponent], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + ClarityModule, + HelperModule, + MainRoutingModule, + // DragDropModule, + DndModule, + HttpClientModule, + ImageCropperModule, + HighchartsChartModule, + TagInputModule, + // QueryBuilderModule, +// Thirdparty Module +//WebdatarocksPivotModule, +CodemirrorModule, +// NgxDatatableModule, +// NgxChartsModule, +// Ng2SearchPipeModule, +// SearchFilterPipe, +// DynamicModule.withComponents([DoughnutChartComponent, RadarChartComponent, LineChartComponent,BarChartComponent,PieChartComponent, +// PolarChartComponent,BubbleChartComponent,ScatterChartComponent,DynamicChartComponent,FinancialChartComponent,ToDoChartComponent, +// TextAreaComponent,ImgFieldComponent,LineFieldComponent,QrCodeComponent,TableFieldComponent]), +GridsterModule, +// ChartsModule, +// NgxChartsModule, +CKEditorModule, +// GuidedTourModule.forRoot() + ], + exports: [SearchFilterPipe], + providers: [ + CookieService, + + ], + schemas: [ CUSTOM_ELEMENTS_SCHEMA ] +}) +export class MainModule { } \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour-base-theme.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour-base-theme.scss new file mode 100644 index 0000000..bed3408 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour-base-theme.scss @@ -0,0 +1,132 @@ +$tour-zindex: 1081 !default; +$tour-step-color: #ffffff !default; +$tour-text-color: #231f1f !default; +$tour-next-button-color: #007bff !default; +$tour-next-button-hover: #0069d9 !default; +$tour-back-button-color: #007bff !default; +$tour-next-text-color: #ffffff !default; +$tour-next-text-hover: #ffffff !default; +$tour-skip-link-color: #5e5e5e !default; +$tour-orb-color: #625aff !default; +$tour-shadow-color: #4c4c4c !default; + +body.tour-open { + overflow: hidden; +} + +@mixin tour-triangle($direction, $color: currentColor, $size: 1rem) { + + @if not index(top right bottom left, $direction) { + @error 'Direction must be either `top`, `right`, `bottom` or `left`.'; + } + + $opposite-direction: top; + + @if $direction==top { + $opposite-direction: bottom; + } + + @if $direction==bottom { + $opposite-direction: top; + } + + @if $direction==right { + $opposite-direction: left; + } + + @if $direction==left { + $opposite-direction: right; + } + + width: 0; + height: 0; + content: ''; + z-index: 2; + border-#{$opposite-direction}: $size solid $color; + $perpendicular-borders: $size solid transparent; + @if $direction==top or $direction==bottom { + border-left: $perpendicular-borders; + border-right: $perpendicular-borders; + } + @else if $direction==right or $direction==left { + border-bottom: $perpendicular-borders; + border-top: $perpendicular-borders; + } +} + +ngx-guided-tour { + .guided-tour-user-input-mask { + z-index: $tour-zindex; + } + + .guided-tour-spotlight-overlay { + z-index: $tour-zindex + 1; + } + + .tour-orb { + z-index: $tour-zindex - 2; + background-color: $tour-orb-color; + box-shadow: 0 0 0.3rem 0.1rem $tour-orb-color; + + .tour-orb-ring { + &::after { + border: 1rem solid $tour-orb-color; + box-shadow: 0 0 0.1rem 0.1rem $tour-orb-color; + } + } + } + + .tour-step { + z-index: $tour-zindex + 2; + + &.tour-bottom, &.tour-bottom-right, &.tour-bottom-left { + .tour-arrow::before { + @include tour-triangle(top, $tour-step-color); + } + } + + &.tour-top, &.tour-top-right, &.tour-top-left { + .tour-arrow::before { + @include tour-triangle(bottom, $tour-step-color); + } + } + + &.tour-left { + .tour-arrow::before { + @include tour-triangle(right, $tour-step-color); + } + } + + &.tour-right { + .tour-arrow::before { + @include tour-triangle(left, $tour-step-color); + } + } + + .tour-block { + color: $tour-text-color; + background-color: $tour-step-color; + box-shadow: 0 0.4rem 0.6rem $tour-shadow-color; + } + + .tour-buttons { + button.skip-button { + color: $tour-skip-link-color; + } + + .back-button { + color: $tour-back-button-color; + } + + .next-button { + background-color: $tour-next-button-color; + color: $tour-next-text-color; + &:hover { + background-color: $tour-next-button-hover; + color: $tour-next-text-hover; + } + } + } + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.constants.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.constants.ts new file mode 100644 index 0000000..a14c1ae --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.constants.ts @@ -0,0 +1,75 @@ + +export interface TourStep { + /** Selector for element that will be highlighted */ + selector?: string; + /** Tour title text */ + title?: string; + /** Tour step text */ + content: string; + /** Where the tour step will appear next to the selected element */ + orientation?: Orientation | OrientationConfiguration[]; + /** Action that happens when the step is opened */ + action?: () => void; + /** Action that happens when the step is closed */ + closeAction?: () => void; + /** Skips this step, this is so you do not have create multiple tour configurations based on user settings/configuration */ + skipStep?: boolean; + /** Adds some padding for things like sticky headers when scrolling to an element */ + scrollAdjustment?: number; + /** Adds default padding around tour highlighting. Does not need to be true for highlightPadding to work */ + useHighlightPadding?: boolean; + /** Adds padding around tour highlighting in pixels, this overwrites the default for this step. Is not dependent on useHighlightPadding being true */ + highlightPadding?: number; +} + +export interface GuidedTour { + /** Identifier for tour */ + tourId: string; + /** Use orb to start tour */ + useOrb?: boolean; + /** Steps fo the tour */ + steps: TourStep[]; + /** Function will be called when tour is skipped */ + skipCallback?: (stepSkippedOn: number) => void; + /** Function will be called when tour is completed */ + completeCallback?: () => void; + /** Minimum size of screen in pixels before the tour is run, if the tour is resized below this value the user will be told to resize */ + minimumScreenSize?: number; + /** Dialog shown if the window width is smaller than the defined minimum screen size. */ + resizeDialog?: { + /** Resize dialog title text */ + title?: string; + /** Resize dialog text */ + content: string; + } + /** + * Prevents the tour from advancing by clicking the backdrop. + * This should only be set if you are completely sure your tour is displaying correctly on all screen sizes otherwise a user can get stuck. + */ + preventBackdropFromAdvancing?: boolean; +} + +export interface OrientationConfiguration { + /** Where the tour step will appear next to the selected element */ + orientationDirection: Orientation; + /** When this orientation configuration starts in pixels */ + maximumSize?: number; +} + +export class Orientation { + public static readonly Bottom = 'bottom'; + public static readonly BottomLeft = 'bottom-left'; + public static readonly BottomRight = 'bottom-right'; + public static readonly Center = 'center'; + public static readonly Left = 'left'; + public static readonly Right = 'right'; + public static readonly Top = 'top'; + public static readonly TopLeft = 'top-left'; + public static readonly TopRight = 'top-right'; +} + +export enum ProgressIndicatorLocation { + InsideNextButton = 'inside-next-button', + TopOfTourBlock = 'top-of-tour-block', + None = 'none', +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.spec.ts new file mode 100644 index 0000000..9ad74b5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { GuidedTourService } from './guided-tour.service'; + +describe('GuidedTourService', () => { + let service: GuidedTourService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(GuidedTourService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.ts new file mode 100644 index 0000000..b0c8a87 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/guided-tour.service.ts @@ -0,0 +1,234 @@ +import { debounceTime } from 'rxjs/operators'; +import { ErrorHandler, Inject, Injectable } from '@angular/core'; +import { Observable, Subject, fromEvent } from 'rxjs'; +import { DOCUMENT } from "@angular/common"; +import { GuidedTour, TourStep, Orientation, OrientationConfiguration } from './guided-tour.constants'; +import { WindowrefService } from './windowref.service'; +import { cloneDeep } from 'lodash'; +//import { WindowRefService } from 'src/app/modules/main/ngx-guided-tour/src/lib/windowref.service'; + + +@Injectable({ + providedIn: 'root' +}) +export class GuidedTourService { + + public guidedTourCurrentStepStream: Observable; + public guidedTourOrbShowingStream: Observable; + + private _guidedTourCurrentStepSubject = new Subject(); + private _guidedTourOrbShowingSubject = new Subject(); + private _currentTourStepIndex = 0; + private _currentTour: GuidedTour = null; + private _onFirstStep = true; + private _onLastStep = true; + private _onResizeMessage = false; + + constructor( + public errorHandler: ErrorHandler, + private windowRef: WindowrefService, + @Inject(DOCUMENT) private dom + ) { + this.guidedTourCurrentStepStream = this._guidedTourCurrentStepSubject.asObservable(); + this.guidedTourOrbShowingStream = this._guidedTourOrbShowingSubject.asObservable(); + + fromEvent(this.windowRef.nativeWindow, 'resize').pipe(debounceTime(200)).subscribe(() => { + if (this._currentTour && this._currentTourStepIndex > -1) { + if (this._currentTour.minimumScreenSize && this._currentTour.minimumScreenSize >= this.windowRef.nativeWindow.innerWidth) { + this._onResizeMessage = true; + const dialog = this._currentTour.resizeDialog || { + title: 'Please resize', + content: 'You have resized the tour to a size that is too small to continue. Please resize the browser to a larger size to continue the tour or close the tour.' + }; + + this._guidedTourCurrentStepSubject.next(dialog); + } else { + this._onResizeMessage = false; + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } + } + }); + } + + public nextStep(): void { + if (this._currentTour.steps[this._currentTourStepIndex].closeAction) { + this._currentTour.steps[this._currentTourStepIndex].closeAction(); + } + if (this._currentTour.steps[this._currentTourStepIndex + 1]) { + this._currentTourStepIndex++; + this._setFirstAndLast(); + if (this._currentTour.steps[this._currentTourStepIndex].action) { + this._currentTour.steps[this._currentTourStepIndex].action(); + // Usually an action is opening something so we need to give it time to render. + setTimeout(() => { + if (this._checkSelectorValidity()) { + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } else { + this.nextStep(); + } + }); + } else { + if (this._checkSelectorValidity()) { + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } else { + this.nextStep(); + } + } + } else { + if (this._currentTour.completeCallback) { + this._currentTour.completeCallback(); + } + this.resetTour(); + } + } + + public backStep(): void { + if (this._currentTour.steps[this._currentTourStepIndex].closeAction) { + this._currentTour.steps[this._currentTourStepIndex].closeAction(); + } + if (this._currentTour.steps[this._currentTourStepIndex - 1]) { + this._currentTourStepIndex--; + this._setFirstAndLast(); + if (this._currentTour.steps[this._currentTourStepIndex].action) { + this._currentTour.steps[this._currentTourStepIndex].action(); + setTimeout(() => { + if (this._checkSelectorValidity()) { + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } else { + this.backStep(); + } + }); + } else { + if (this._checkSelectorValidity()) { + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } else { + this.backStep(); + } + } + } else { + this.resetTour(); + } + } + + public skipTour(): void { + if (this._currentTour.skipCallback) { + this._currentTour.skipCallback(this._currentTourStepIndex); + } + this.resetTour(); + } + + public resetTour(): void { + this.dom.body.classList.remove('tour-open'); + this._currentTour = null; + this._currentTourStepIndex = 0; + this._guidedTourCurrentStepSubject.next(null); + } + + public startTour(tour: GuidedTour): void { + this._currentTour = cloneDeep(tour); + this._currentTour.steps = this._currentTour.steps.filter(step => !step.skipStep); + this._currentTourStepIndex = 0; + this._setFirstAndLast(); + this._guidedTourOrbShowingSubject.next(this._currentTour.useOrb); + if ( + this._currentTour.steps.length > 0 + && (!this._currentTour.minimumScreenSize + || (this.windowRef.nativeWindow.innerWidth >= this._currentTour.minimumScreenSize)) + ) { + if (!this._currentTour.useOrb) { + this.dom.body.classList.add('tour-open'); + } + if (this._currentTour.steps[this._currentTourStepIndex].action) { + this._currentTour.steps[this._currentTourStepIndex].action(); + } + if (this._checkSelectorValidity()) { + this._guidedTourCurrentStepSubject.next(this.getPreparedTourStep(this._currentTourStepIndex)); + } else { + this.nextStep(); + } + } + } + + public activateOrb(): void { + this._guidedTourOrbShowingSubject.next(false); + this.dom.body.classList.add('tour-open'); + } + + private _setFirstAndLast(): void { + this._onLastStep = (this._currentTour.steps.length - 1) === this._currentTourStepIndex; + this._onFirstStep = this._currentTourStepIndex === 0; + } + + private _checkSelectorValidity(): boolean { + if (this._currentTour.steps[this._currentTourStepIndex].selector) { + const selectedElement = this.dom.querySelector(this._currentTour.steps[this._currentTourStepIndex].selector); + if (!selectedElement) { + this.errorHandler.handleError( + // If error handler is configured this should not block the browser. + new Error(`Error finding selector ${this._currentTour.steps[this._currentTourStepIndex].selector} on step ${this._currentTourStepIndex + 1} during guided tour: ${this._currentTour.tourId}`) + ); + return false; + } + } + return true; + } + + public get onLastStep(): boolean { + return this._onLastStep; + } + + public get onFirstStep(): boolean { + return this._onFirstStep; + } + + public get onResizeMessage(): boolean { + return this._onResizeMessage; + } + + public get currentTourStepDisplay(): number { + return this._currentTourStepIndex + 1; + } + + public get currentTourStepCount(): number { + return this._currentTour && this._currentTour.steps ? this._currentTour.steps.length : 0; + } + + public get preventBackdropFromAdvancing(): boolean { + return this._currentTour && this._currentTour.preventBackdropFromAdvancing; + } + + private getPreparedTourStep(index: number): TourStep { + return this.setTourOrientation(this._currentTour.steps[index]); + } + + private setTourOrientation(step: TourStep): TourStep { + const convertedStep = cloneDeep(step); + if ( + convertedStep.orientation + && !(typeof convertedStep.orientation === 'string') + && (convertedStep.orientation as OrientationConfiguration[]).length + ) { + (convertedStep.orientation as OrientationConfiguration[]).sort((a: OrientationConfiguration, b: OrientationConfiguration) => { + if (!b.maximumSize) { + return 1; + } + if (!a.maximumSize) { + return -1; + } + return b.maximumSize - a.maximumSize; + }); + + let currentOrientation: Orientation = Orientation.Top; + (convertedStep.orientation as OrientationConfiguration[]).forEach( + (orientationConfig: OrientationConfiguration) => { + if (!orientationConfig.maximumSize || this.windowRef.nativeWindow.innerWidth <= orientationConfig.maximumSize) { + currentOrientation = orientationConfig.orientationDirection; + } + } + ); + + convertedStep.orientation = currentOrientation; + } + return convertedStep; + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.spec.ts new file mode 100644 index 0000000..69a3240 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { TourService } from './tour.service'; + +describe('TourService', () => { + let service: TourService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TourService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.ts new file mode 100644 index 0000000..7d8ebe0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/tour.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { ApiRequestService } from 'src/app/services/api/api-request.service'; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class TourService { + + constructor(private _http: HttpClient,) { } + + getall(): Observable{ + return this._http.get(`${baseUrl}/Tour/tour`); + } + getroadmapall():Observable{ + return this._http.get(`${baseUrl}/tourRoad/roadmap`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.spec.ts new file mode 100644 index 0000000..216190a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WindowrefService } from './windowref.service'; + +describe('WindowrefService', () => { + let service: WindowrefService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WindowrefService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.ts new file mode 100644 index 0000000..469d75f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/ngx-guided-tour/src/lib/windowref.service.ts @@ -0,0 +1,41 @@ +import { Inject, Injectable, PLATFORM_ID } from "@angular/core"; +import { isPlatformBrowser } from "@angular/common"; + +function getWindow(): any { + return window; +} + +function getMockWindow(): any { + return { + innerWidth: 0, + innerHeight: 0, + scrollY: 0, + scrollX: 0, + pageYOffset: 0, + pageXOffset: 0, + scroll: () => {}, + scrollTo: () => {}, + addEventListener: () => {}, + removeEventListener: () => {}, + } +} + +@Injectable({ + providedIn: 'root' +}) +export class WindowrefService { + + private readonly isBrowser: boolean = false; + + get nativeWindow(): any { + if (this.isBrowser) { + return getWindow(); + } else { + return getMockWindow(); + } + } + + constructor(@Inject(PLATFORM_ID) platformId) { + this.isBrowser = isPlatformBrowser(platformId); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.html new file mode 100644 index 0000000..2c94ca1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.html @@ -0,0 +1,5 @@ +
+ +

error 404

+ Not found your page requested. +
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.scss new file mode 100644 index 0000000..7da6748 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.scss @@ -0,0 +1,11 @@ +i { + margin-top: 8%; + opacity: 0.3; + filter: alpha(opacity=30); /* For IE8 and earlier */ +} + +i:hover { + margin-top: 8%; + opacity: 8.0; + filter: alpha(opacity=80); /* For IE8 and earlier */ +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.spec.ts new file mode 100644 index 0000000..697a946 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.spec.ts @@ -0,0 +1,25 @@ +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PageNotFoundComponent } from './page-not-found.component'; + +describe('PageNotFoundComponent', () => { + let component: PageNotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(async(() => { + TestBed.configureTestingModule({ + declarations: [ PageNotFoundComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(PageNotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.ts new file mode 100644 index 0000000..31ae4d8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/modules/main/page-not-found/page-not-found.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-page-not-found', + templateUrl: './page-not-found.component.html', + styleUrls: ['./page-not-found.component.scss'] +}) +export class PageNotFoundComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/helpers.module.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/helpers.module.ts new file mode 100644 index 0000000..bd3742c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/helpers.module.ts @@ -0,0 +1,28 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { ThaiDateAbbrPipe } from './thai-date-abbr.pipe'; +import { ThaiDateFullPipe } from './thai-date-full.pipe'; +import { ThaiDatePipe } from './thai-date.pipe'; +import {TimePipePipe} from './time-pipe.pipe'; +import { SearchFilterPipe } from './search-filter.pipe'; + +@NgModule({ + imports: [ + CommonModule + ], + declarations: [ + ThaiDatePipe, + ThaiDateAbbrPipe, + ThaiDateFullPipe, + TimePipePipe, + SearchFilterPipe, + ], + exports: [ + ThaiDatePipe, + ThaiDateAbbrPipe, + ThaiDateFullPipe, + TimePipePipe, + SearchFilterPipe, + ] +}) +export class HelperModule { } diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/remove-commas.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/remove-commas.pipe.ts new file mode 100644 index 0000000..cf7590e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/remove-commas.pipe.ts @@ -0,0 +1,10 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'removeCommas' +}) +export class RemoveCommasPipe implements PipeTransform { + transform(value: string): string { + return value.replace(/,/g, ''); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.spec.ts new file mode 100644 index 0000000..d4dcbe5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.spec.ts @@ -0,0 +1,8 @@ +import { SearchFilterPipe } from './search-filter.pipe'; + +describe('SearchFilterPipe', () => { + it('create an instance', () => { + const pipe = new SearchFilterPipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.ts new file mode 100644 index 0000000..7535fb9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/search-filter.pipe.ts @@ -0,0 +1,29 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'searchFilter' +}) +export class SearchFilterPipe implements PipeTransform { + + transform(tableList:any, searchtable: string): any { + if(!tableList || !searchtable){ + return tableList; + } + return tableList.filter(table => + table.toLocaleLowerCase().includes(searchtable.toLocaleLowerCase())); + } + transform1(collist:any, searchcol: string): any { + if(!collist || !searchcol){ + return collist; + } + return collist.filter(table => + table.toLocaleLowerCase().includes(searchcol.toLocaleLowerCase())); + } +transform2(querydata:any, searchquery: string): any{ + if(!querydata || !searchquery){ + return querydata; + } + return querydata.filter(table => + table.toLocaleLowerCase().includes(searchquery.toLocaleLowerCase())); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-abbr.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-abbr.pipe.ts new file mode 100644 index 0000000..c46d2c8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-abbr.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDateAbbr' +}) +export class ThaiDateAbbrPipe implements PipeTransform { + thMonthAbbr = ['ม.ค.', 'ก.พ.', 'มี.ค.', 'เม.ย.', 'พ.ค.', 'มิ.ย.', + 'ก.ค.', 'ส.ค.', 'ก.ย.', 'ต.ค.', 'พ.ย.', 'ธ.ค.']; + + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')} ${this.thMonthAbbr[moment(value).get('month')]} ${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-full.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-full.pipe.ts new file mode 100644 index 0000000..962b135 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date-full.pipe.ts @@ -0,0 +1,20 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDateFull' +}) +export class ThaiDateFullPipe implements PipeTransform { + thMonth = ['มกราคม', 'กุมภาพันธ์', 'มีนาคม', 'เมษายน', 'พฤษภาคม', 'มิถุนายน', + 'กรกฎาคม', 'สิงหาคม', 'กันยายน', 'ตุลาคม', 'พฤศจิกายน', 'ธันวาคม']; + + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')} ${this.thMonth[moment(value).get('month')]} ${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date.pipe.ts new file mode 100644 index 0000000..52d3a29 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/thai-date.pipe.ts @@ -0,0 +1,17 @@ +import { Pipe, PipeTransform } from '@angular/core'; +import * as moment from 'moment'; + +@Pipe({ + name: 'thaiDate' +}) +export class ThaiDatePipe implements PipeTransform { + transform(value: any, args?: any): any { + if (moment(value, 'YYYY-MM-DD').isValid()) { + const thaiDate = `${moment(value).get('date')}/${moment(value).get('month') + 1}/${moment(value).get('year') + 543}`; + return thaiDate; + } else { + return '-'; + } + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.spec.ts new file mode 100644 index 0000000..ac9b188 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.spec.ts @@ -0,0 +1,8 @@ +import { TimePipePipe } from './time-pipe.pipe'; + +describe('TimePipePipe', () => { + it('create an instance', () => { + const pipe = new TimePipePipe(); + expect(pipe).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.ts new file mode 100644 index 0000000..daa03b8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/pipes/time-pipe.pipe.ts @@ -0,0 +1,36 @@ +import { Pipe, PipeTransform } from '@angular/core'; + +@Pipe({ + name: 'timePipe', + pure: true +}) +export class TimePipePipe implements PipeTransform { + + transform(value: any, args?: any): any { + if (value) { + const seconds = Math.floor((+new Date() - +new Date(value)) / 1000); + if (seconds < 29) // less than 30 seconds ago will show as 'Just now' + return 'Just now'; + const intervals: { [key: string]: number } = { + 'year': 31536000, + 'month': 2592000, + 'week': 604800, + 'day': 86400, + 'hour': 3600, + 'minute': 60, + 'second': 1 + }; + let counter; + for (const i in intervals) { + counter = Math.floor(seconds / intervals[i]); + if (counter > 0) + if (counter === 1) { + return counter + ' ' + i + ' ago'; // singular (1 day ago) + } else { + return counter + ' ' + i + 's ago'; // plural (2 days ago) + } + } + } + return value; +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/accesstype.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/accesstype.service.ts new file mode 100644 index 0000000..4c3029d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/accesstype.service.ts @@ -0,0 +1,64 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class AccesstypeService { + private AllURL = 'access_type/Accesstype'; +private moduleurl='_back/Modules_t' + constructor( private apiRequest: ApiRequestService,private _http: HttpClient,) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.AllURL, params); + } + + create(data:any): Observable { + return this.apiRequest.post(this.AllURL, data); + } + + delete(id: number): Observable { + const _http = this.AllURL + "/" + id; + return this.apiRequest.delete(_http); + } + + update(id: number, data: any): Observable { + const _http = this.AllURL + "/" + id; + return this.apiRequest.put(_http, data); + } + getAll1(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.moduleurl, params); + } + + create1(data:any): Observable { + return this.apiRequest.post(this.moduleurl, data); + } + + delete1(id: number): Observable { + const _http = this.moduleurl + "/" + id; + return this.apiRequest.delete(_http); + } + + update1(id: number, data: any): Observable { + const _http = this.moduleurl + "/" + id; + return this.apiRequest.put(_http, data); + } + public getById(id: any){ + return this._http.get(`${baseUrl}/access_type/accessmenu/Accessmenu/${id}`); + } + public addById(id:any,data:any){ + return this._http.post(`${baseUrl}/access_type/accessmenu/Accessmenu/${id}`,data); + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/auditreport.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/auditreport.service.ts new file mode 100644 index 0000000..ea0066b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/auditreport.service.ts @@ -0,0 +1,38 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class AuditreportService { +private dateurl="audit/betweendate"; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService,) { } + public getAll() { + return this._http.get(`${baseUrl}/audit/auditall`); + } + public getbyid(id:any) { + return this._http.get(`${baseUrl}/audit/auditall/${id}`); + } + public getbyuser(val:any){ + return this._http.get(`${baseUrl}/audit/listusername/${val}`); + } + public getbyentity(val:any){ + return this._http.get(`${baseUrl}/audit/listentityname/${val}`); + } + public onlydate(from:any,to:any){ + let params: HttpParams = new HttpParams(); + params =params.append("startDate",from); + params =params.append("endDate",to); + return this.apiRequest.get(this.dateurl,params); + } + public apply(from:any,to:any,user:any,entity:any){ + let params: HttpParams = new HttpParams(); + params =params.append("startDate",from); + params =params.append("endDate",to); + params =params.append("user",user); + params =params.append("entity_name",entity) + return this.apiRequest.get(`audit/betweendate_byuser`,params); + //return this._http.get(`${baseUrl}/audit/betweendate_byuser/${from}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/connector-mapping.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/connector-mapping.service.ts new file mode 100644 index 0000000..4a8b75a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/connector-mapping.service.ts @@ -0,0 +1,37 @@ +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class ConnectorMappingService { + private getAllData = 'connector/Connectorjson'; + private baseURL = 'Connectorjson'; + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/connector/Connectorjson`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/connector/Connectorjson`, data); + } + public getById(id: any){ + return this._http.get(`${baseUrl}/connector/Connectorjson/${id}`); + } + public delete(id:any){ + return this._http.delete(`${baseUrl}/connector/Connectorjson/${id}`); + } + public getkeys(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping`,data); + } + public getValues(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping1`,data); + } + public getValues1(data:any) { + return this._http.post(`${baseUrl}/token/connector/mapping/mapping2`,data); + } + public update(id:any,data:any){ + return this._http.put(`${baseUrl}/connector/Connectorjson/${id}`, data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/deploymentprofile.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/deploymentprofile.service.ts new file mode 100644 index 0000000..44f776b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/deploymentprofile.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class DeploymentprofileService { + + private getAllURL = 'deployment/deplomentprofile'; + addDataURl = 'deployment/deplomentprofile'; + private baseURL = "deployment/deplomentprofile"; + private getallline="deployment/deplomentprofile_line"; + constructor( + private _http: HttpClient, + private apiRequest: ApiRequestService + ) { } + + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.getAllURL, params); + } +getalllines(page?: number, size?: number){ + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.getallline,params); +} + create(data:any): Observable { + return this.apiRequest.post(this.addDataURl, data); + } + + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + update(id: number, data: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/logconfig.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/logconfig.service.ts new file mode 100644 index 0000000..0fa8786 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/logconfig.service.ts @@ -0,0 +1,28 @@ +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class LogconfigService { + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/log/getAll`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/log/getOne/${Id}`); + } + public create(username:any,mode:any){ + return this._http.get(`${baseUrl}/log/startLogging/${username}/${mode}`); + } + public delete(username:any){ + return this._http.get(`${baseUrl}/log/stopLogging/${username}`); + } + public downloadfile(filename:any){ + return this._http.get(`${baseUrl}/log/downloadLog/${filename}`); + } + public readfile(id:any){ + return this._http.get(`${baseUrl}/log2/fileread/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-group.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-group.service.ts new file mode 100644 index 0000000..4b281bb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-group.service.ts @@ -0,0 +1,76 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +import { Rn_Main_Menu } from '../../models/builder/Rn_Main_Menu'; +import { Observable } from 'rxjs'; +import { CookieService } from 'ngx-cookie-service'; +@Injectable({ + providedIn: 'root' +}) +export class MenuGroupService { + public key: string ='key-for-data-in-cookies'; + private storage: Storage = sessionStorage; + constructor( + private _http: HttpClient,private readonly _cookieService: CookieService, + private apiRequest: ApiRequestService, + ) { } + + public getAll(){ + return this._http.get(`${baseUrl}/api/menu-group`); + } + + public addToDb(header: any){ + return this._http.post(`${baseUrl}/api/menu-group`, header); + } + + public addLineToDb(line: any){ + return this._http.post(`${baseUrl}/lines_m/create`, line); + } + + public getOneById(id: any){ + return this._http.get(`${baseUrl}/api/menu-group/${id}`); + } + + public updateGroupHeader(id: any, data: any){ + return this._http.put(`${baseUrl}/api/menu-group/${id}`, data); + } + + public updateLineById(id: any){ + return this._http.put(`${baseUrl}/lines_m/update`, id); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/api/menu-group/${id}`); + } + getByCurrentUserMenuGroupId(): Observable { + const _http1 = "api1/getByUserId" + return this.apiRequest.get(_http1); +} +getByCurrentUserMenuGroupId1(): Observable { + const _http1 = "api1/submenu1" + return this.apiRequest.get(_http1); +} +getByCurrentUserMenuGroupId2(): Observable { + const _http1 = "fndMenu/menuloadbyuser" + return this.apiRequest.get(_http1); +} +private data: string = "data"; +public storeaddeditvalues(data:any,) { + this.storage.setItem(this.data,JSON.stringify (data)); + console.log(this.data); +} +getdata(): any { + //console.log(this.data); + var data = JSON.parse(this.storage.getItem(this.data)); + //let data = this.storage.getItem(this.data); + return data; +} +getuser(id:any){ + const http="chat/getuser"; + return this.apiRequest.post(http,id); +} +public save(text:string):void{ + return this._cookieService.set(this.key,text); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-register.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-register.service.ts new file mode 100644 index 0000000..82ed7d1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menu-register.service.ts @@ -0,0 +1,33 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class MenuRegisterService { + + constructor( + private _http: HttpClient + ) { } + + public add(r: any){ + return this._http.post(`${baseUrl}/api/menu-register`, r); + } + + public getd(){ + return this._http.get(`${baseUrl}/api/menu-register`); + } + + public getById(id: any){ + return this._http.get(`${baseUrl}/api/menu-register/${id}`); + } + + public update(id:any, reg:any){ + return this._http.put(`${baseUrl}/api/menu-register/${id}`, reg); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/api/menu-register/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menumaintance.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menumaintance.service.ts new file mode 100644 index 0000000..c407dce --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/menumaintance.service.ts @@ -0,0 +1,69 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from '../../services/api/helper'; +import { Observable } from "rxjs"; +import { Rn_Main_Menu } from "../../models/builder/Rn_Main_Menu"; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class MenumaintanceService { + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + // create + public create(data: any){ + return this._http.post(`${baseUrl}/Menu_maintain`, data); + } + + // update + public update(id:number,data:any): Observable{ + //const _http = this.baseURL + "/" + id; + //return this.apiRequest.put(_http, data); + return this._http.put(`${baseUrl}/Menu_maintain/${id}`, data); + } + // get all + public getAll(){ + return this._http.get(`${baseUrl}/Menu_maintain`); + } + getByCurrentUserMenuGroupId1(): Observable { + const _http1 = "api1/submenu1" + return this.apiRequest.get(_http1); + } + // add submenudet table + // create + public create1(data: any){ + return this._http.post(`${baseUrl}/api1/Sec_menuDet`, data); + } + public create2(data:any){ + return this._http.post(`${baseUrl}/api1/addgrpwithsubmenu`, data) + } + // sink + public sink(id:any,data:any){ + return this._http.put(`${baseUrl}/fndMenu/sink/${id}`,data); + } + //get by menuid->submenu + public getbyid(id:any){ + return this._http.get(`${baseUrl}/api1/submenu1/${id}`); + } + //update update by menu_item_id + public update1(id:number,data:any): Observable{ + return this._http.put(`${baseUrl}/api1/submenu1/${id}`, data); + } + public update2(id:number,usrgrp:any,data:any): Observable{ + return this._http.put(`${baseUrl}/api1/update/${id}/${usrgrp}`, data); +} + //delete + public delete1(id: any){ + return this._http.delete(`${baseUrl}/api1/menu/${id}`); + } + // get one + public getOne(Id: any){ + return this._http.get(`${baseUrl}/Menu_maintain/${Id}`); + } + + // delete + public delete(id: any){ + return this._http.delete(`${baseUrl}/Menu_maintain/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/myworkspace.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/myworkspace.service.ts new file mode 100644 index 0000000..02f6a8b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/myworkspace.service.ts @@ -0,0 +1,98 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class MyworkspaceService { + public localStorage: Storage = localStorage; + constructor(private _http: HttpClient) { } + public add(r: any){ + return this._http.post(`${baseUrl}/api/menu-register`, r); + } + + public getall(){ + return this._http.get(`${baseUrl}/Workspace_team/SecTeam`); + } + public getalluser(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllUser`); + } + public getallguest(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllGuest`); + } + public adduser(email:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + return this._http.post(`${baseUrl}/api/userviaadmin`,params); + } + storeEmail(email: string) { + this.localStorage.setItem("registeredEmail", email); + } + //Store userinfo from session storage + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let email: string = this.localStorage.getItem( + "registeredEmail" + ); + if (email) { + return email; + } else { + return null; + } + } catch (e) { + return null; + } + } + adduserdetails(data:any,token:any){ + return this._http.post(`${baseUrl}/api/admin/adduser/${token}`,data); + } + + addguest(email:any,duration:any){ + let params: HttpParams = new HttpParams(); + params = params.append("email", email); + params=params.append("access_duration",duration) + return this._http.post(`${baseUrl}/api/guest_via_admin`,params); + } + + addguestdetails(data:any,token:any){ + return this._http.post(`${baseUrl}/api/admin/addguest/${token}`,data); + } + addteam(data:any){ + return this._http.post(`${baseUrl}/Workspace_team/SecTeam`,data); + } + public getallteammeme(id:any){ + return this._http.get(`${baseUrl}/User_workSpace/GetAllMember/${id}`); + } + getallusertosameaccid(){ + return this._http.get(`${baseUrl}/User_workSpace/GetAll`); + } + addteammem(id:any,user_id:any,data:any){ + return this._http.post(`${baseUrl}/User_workSpace/add_team/${id}/${user_id}`,data); + } + getallworkspace(){ + return this._http.get(`${baseUrl}/Workspace_workspace/FindByaccount`); + } + addsecworkspaceuser(usrid:any,id:any,data:any,){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/add_workspace/users/${usrid}/${id}`,data); + } + addsecworkteam(pid:any,tid:any,data:any){ + return this._http.post(`${baseUrl}/workspace/secworkspaceuser/addteam/${pid}/${tid}`,data); + } + getallsecworkspace(id:any){ + return this._http.get(`${baseUrl}/workspace/secworkspaceuser/get_by_projectid/${id}`); + } + // public getById(id: any){ + // return this._http.get(`${baseUrl}/api/menu-register/${id}`); + // } + + // public update(id:any, reg:any){ + // return this._http.put(`${baseUrl}/api/menu-register/${id}`, reg); + // } + + // public deleteById(id: any){ + // return this._http.delete(`${baseUrl}/api/menu-register/${id}`); + // } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sessionlogger.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sessionlogger.service.ts new file mode 100644 index 0000000..f48fc28 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sessionlogger.service.ts @@ -0,0 +1,17 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class SessionloggerService { + + constructor(private _http: HttpClient) { } + public getAll() { + return this._http.get(`${baseUrl}/user1/session/getAll`); + } + + public delete(id:any){ + return this._http.delete(`${baseUrl}/user1/session/delete/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.spec.ts new file mode 100644 index 0000000..2837a5d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SureConnectorService } from './sure-connector.service'; + +describe('SureConnectorService', () => { + let service: SureConnectorService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SureConnectorService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.ts new file mode 100644 index 0000000..87a3c74 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-connector.service.ts @@ -0,0 +1,25 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +//import baseUrl from 'src/app/services/api/helper'; +import { environment } from 'src/environments/environment'; +@Injectable({ + providedIn: 'root' +}) +export class SureConnectorService { + baseurl = environment.jobmgurl; + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${this.baseurl}/jobpro/get_rn_sureconnetor`); + } + public create(data: any){ + return this._http.post(`${this.baseurl}/jobpro/Savern_sureconnetor`, data); + } + + public delete(id:any){ + return this._http.delete(`${this.baseurl}/jobpro/delete_by_rn_sureconnetor_id/${id}`); + } + + public update(id:any,data:any){ + return this._http.put(`${this.baseurl}/jobpro/update_rn_sureconnetor/${id}`, data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.spec.ts new file mode 100644 index 0000000..738b95a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SureOpsscriptmasterService } from './sure-opsscriptmaster.service'; + +describe('SureOpsscriptmasterService', () => { + let service: SureOpsscriptmasterService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SureOpsscriptmasterService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.ts new file mode 100644 index 0000000..d0cd824 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sure-opsscriptmaster.service.ts @@ -0,0 +1,86 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class SureOpsscriptmasterService { + private URL = 'Sureops_script_api/Sureops_script_apis'; + private url='Sureops_script_api/Sureops_script_line' + private masterurl='Sureops_script_master/sureops_scriptmaster1' + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.URL, params); + } + + create(data:any): Observable{ + return this.apiRequest.post(this.URL, data); + } + + delete(id:number){ + let _http = this.URL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.URL + "/"+id; + return this.apiRequest.get(_http); + } + + updateLineById(id:number,data:any) + { + let _http = this.url + "/"+id; + return this.apiRequest.put(_http,data); + } + + update(id:number,data:any) + { + let _http = this.URL + "/"+id; + return this.apiRequest.put(_http,data); + } + + getall(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.masterurl, params); + } + + create1(data:any): Observable{ + return this.apiRequest.post(this.masterurl, data); + } + + delete1(id:number){ + let _http = this.masterurl + "/" + id; + return this.apiRequest.delete(_http); + } + + getById1(id:number) + { + let _http = this.masterurl + "/"+id; + return this.apiRequest.get(_http); + } + + + + update1(id:number,data:any) + { + let _http = this.masterurl + "/"+id; + return this.apiRequest.put(_http,data); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.spec.ts new file mode 100644 index 0000000..02bc91e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SureapiService } from './sureapi.service'; + +describe('SureapiService', () => { + let service: SureapiService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SureapiService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.ts new file mode 100644 index 0000000..9426ec5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureapi.service.ts @@ -0,0 +1,23 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class SureapiService { +url='sure_connect/sure_postman/call_api' + constructor(private http:HttpClient,private apiRequest: ApiRequestService,) { } + createpostman(api_url:any,json_body:any,method: any,token:any){ + console.log(api_url,json_body,method,token) + let params: HttpParams = new HttpParams(); + params =params.append("api_url",api_url); + // params =params.append("json_body",json_body); + params =params.append("method",method); + params =params.append("token",token) + return this.http.post(`${baseUrl}/sure_connect/sure_postman/call_api`,json_body,{params:params}); + //return this.apiRequest.post(this.url,{ search:params }); + + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.spec.ts new file mode 100644 index 0000000..07468e5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SureconnectService } from './sureconnect.service'; + +describe('SureconnectService', () => { + let service: SureconnectService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SureconnectService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.ts new file mode 100644 index 0000000..e8b6086 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sureconnect.service.ts @@ -0,0 +1,35 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams } from '@angular/common/http'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class SureconnectService { + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + public create(data: any){ + return this._http.post(`${baseUrl}/Sure_Connect`, data); + } + + // create card + public update(data: any,id:any){ + return this._http.put(`${baseUrl}/Sure_Connect/${id}`, data); + } + + // get all cards + public getAll(){ + return this._http.get(`${baseUrl}/Sure_Connect`); + } + + // get one card + public getOne(id: any){ + return this._http.get(`${baseUrl}/Sure_Connect/${id}`); + } + + // delete card + public delete(id: any){ + return this._http.delete(`${baseUrl}/Sure_Connect/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.spec.ts new file mode 100644 index 0000000..3a3ed0d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SysparameterService } from './sysparameter.service'; + +describe('SysparameterService', () => { + let service: SysparameterService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SysparameterService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.ts new file mode 100644 index 0000000..706a450 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/sysparameter.service.ts @@ -0,0 +1,33 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +import { HttpClient} from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class SysparameterService { + private addsysurl='api/addSysParams '; + private updatesysurl='api/updateSysParams'; + private getbyidurl='api/getSysParams'; + constructor(private apiRequest: ApiRequestService,) { } + + + create(data: any): Observable { + return this.apiRequest.post(this.addsysurl, data); + } + + update(id: number,data:any,file:any): Observable { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("o1",s); + formData.append(file.name,file); + + const _http = this.updatesysurl + "/" + id; + return this.apiRequest.put(_http, data); + } + getById(id: number): Observable { + const _http = this.getbyidurl + "/" + id; + return this.apiRequest.get(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-list.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-list.service.ts new file mode 100644 index 0000000..aa48719 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-list.service.ts @@ -0,0 +1,33 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../../services/api/helper'; + +@Injectable({ + providedIn: 'root' +}) +export class UserListService { + + constructor( + private _http: HttpClient + ) { } + + public add(user: any){ + return this._http.post(`${baseUrl}/user_list/create`, user); + } + + public update(user: any){ + return this._http.put(`${baseUrl}/user_list/update`, user); + } + + public getOne(user: any){ + return this._http.get(`${baseUrl}/user_list/get-one/${user}`); + } + + public getAll(){ + return this._http.get(`${baseUrl}/user_list/get-all`); + } + + public deleteById(id: any){ + return this._http.delete(`${baseUrl}/user_list/delete/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-profile.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-profile.service.ts new file mode 100644 index 0000000..d394c72 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-profile.service.ts @@ -0,0 +1,110 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { AppConfig } from '../../app-config'; +import { Observable } from 'rxjs'; +import { UserInfoService } from '../user-info.service'; +import { ApiRequestService } from '../api/api-request.service'; +import { TranslateService } from '../api/translate.service'; + +export interface UserProfile { + email: string; + firstName: string; + lastName: string; + fullName: string; + pronouns?: string; + photos?: string; + status?: string; + role?: string; + roles?: Role[]; + department?: string; + about?: string; + createdAt?: Date; + updatedAt?: Date; + accountId?: number; + createdBy?: number; + updatedBy: number; + +} +export interface Role { + id: number; + name: string; + description: string; +} +@Injectable() +export class UserProfileService { + + private userProfileURL = 'api/user-profile'; + private postUserProfilePicURL = 'api/upload'; + private getUserProfilePicURL = 'api/retrieve-image'; + private userAcountURL = 'api/user-account'; + private aboutWork = 'token/aboutwork'; + + private getids = 'token/userid'; + + private actionBuilderURL="token/aboutwork" + + + constructor( + private apiRequest: ApiRequestService, + private translate: TranslateService, + private userInfoService: UserInfoService, + private http: HttpClient, + private appConfig: AppConfig, + ) { } + + /* getAll(page?:number, size?:number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + // get all + // return this.apiRequest.get('api/instructors'); + // paginated data + return this.apiRequest.get(this.baseURL, params); + + } */ + + getUserProfile(): Observable { + const _http = this.userProfileURL; + return this.apiRequest.get(_http); + + } + updateUserProfile(user: UserProfile): Observable { + const _http = this.userProfileURL; + return this.apiRequest.put(_http, user); + } + + uploadUserProfilePic(fileToUpload: File): Observable { + const formData: FormData = new FormData(); + formData.append('imageFile', fileToUpload, fileToUpload.name); + return this.http.post(this.appConfig.baseApiPath + this.postUserProfilePicURL, formData, { reportProgress: true, observe: 'events' }); + } + + getProfilePic(): Observable { + return this.apiRequest.get(this.getUserProfilePicURL); + } + + + getUserAccountDetails() { + return this.apiRequest.get(this.userAcountURL); + } + + saveUser(data): Observable { + return this.apiRequest.post(this.aboutWork, data); + } + + updateUser(id,data): Observable { + const _http = this.actionBuilderURL + "/" + id; + return this.apiRequest.put(_http, data); + } + + getUser(id: number, checknumber: number): Observable { + return this.apiRequest.get(this.getids + "/" + id + "/" + checknumber); + // return this.apiRequest.get(this.getids, data); + + } + + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-registration.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-registration.service.ts new file mode 100644 index 0000000..9d87bec --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/user-registration.service.ts @@ -0,0 +1,259 @@ +import { Injectable } from '@angular/core'; +import { HttpParams, HttpResponse } from "@angular/common/http"; +import { PasswordResetComponent } from "src/app/modules/main/admin/password-reset/password-reset.component"; + +import { UserRegistrationComponent } from "src/app/modules/main/admin/user-registration/user-registration.component"; +import { Observable } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { ApiRequestService } from "../api/api-request.service"; + +export interface User { + firstName: string; + lastName: string; + password: string; + email: string; +} + +export interface Sys_Account { + userEmail: string; + companyName: string; + workspace: string; + gstNumber: string; +} + +export interface SignedUpUser { + userId: string; + email: string; + fullName: string; + firstName: string; +} +export interface signUpInfo { + success?: boolean; + message?: string; + landingPage?: string; + user?: SignedUpUser; +} + + +@Injectable({ + providedIn: 'root' +}) +export class UserRegistrationService { + + private baseURL = "api/user-registration"; // still not in use + private emailExistURL = "token/email-exists"; // email exist check + private userRegURL = "token/user-registration"; + private companyRegURL = "token/company-registration"; + private resetPasswordURL = "api/reset_password"; + + public registeredEmailKey: string = "registeredEmail"; + public localStorage: Storage = localStorage; + public sessionStorage: Storage = sessionStorage; + + + constructor(private apiRequest: ApiRequestService, + private userInfoService: UserInfoService) { } + + /* takenUsernames: any[] = []; + checkIfUsernameExists(username: string): Observable { + return of(this.takenUsernames.includes(username)) + .pipe(delay(1000)); + } + usernameValidator(): AsyncValidatorFn { + return (control: AbstractControl): Observable => { + return this.checkIfUsernameExists(control.value).pipe( + map(res => { + // if res is true, username exists, return true + return res ? { usernameExists: true } : null; + // NB: Return null if there is no error + }) + ); + }; + } */ + + //Store userinfo from session storage + storeEmail(userInfoString: string) { + this.localStorage.setItem(this.registeredEmailKey, userInfoString); + } + + //Remove userinfo from session storage + removeStoredEmail() { + this.localStorage.removeItem(this.registeredEmailKey); + } + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let userInfoString: string = this.localStorage.getItem( + this.registeredEmailKey + ); + if (userInfoString) { + return userInfoString; + } else { + return null; + } + } catch (e) { + return null; + } + } + + /* === store signed up user info in storage === */ + public registeredUserKey: string = "registeredUser"; + storeSignedUpUserInfo(userInfoString: string) { + this.sessionStorage.setItem(this.registeredUserKey, userInfoString); + } + removeSignedUpUserInfo() { + this.sessionStorage.removeItem(this.registeredUserKey); + } + + //Get userinfo from session storage + getSignedUpUserInfo(): SignedUpUser | null { + try { + let userInfoString: string = this.sessionStorage.getItem( + this.registeredUserKey + ); + if (userInfoString) { + let userObj: SignedUpUser = JSON.parse( + this.sessionStorage.getItem(this.registeredUserKey) + ); + return userObj; + } else { + return null; + } + } catch (e) { + return null; + } + } + // Get Full Name from session storage + getFirstName(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + //console.log('getFirstName() : ', userObj.firstName); + return userObj.firstName; + } + return "no-user"; + } + // Get User Email from session storage + getEmail(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + //console.log('getEmail() : ', userObj.email); + return userObj.email; + } + return "no-user"; + } + // Get User Id from session storage + getUserId(): string { + let userObj: SignedUpUser = this.getSignedUpUserInfo(); + if (userObj !== null) { + return userObj.userId; + } + return "no-user"; + } + + /* === store signed up user info in storage END === */ + + /* === check if email is aailable or not === */ + emailCheck(email: UserRegistrationComponent): Observable { + return this.apiRequest.post(this.emailExistURL, email); + } + /* === signed up user (admin) === */ + + /* public landingPage:string = "/account-setup"; + saveUser(user: User): Observable { + let signupDataSubject: BehaviorSubject = new BehaviorSubject([]); + let signupInfoReturn: signUpInfo; + this.apiRequest.post(this.userRegURL, user).subscribe( + (res) => { + if ( + res !== undefined && + res !== null && + res.operationStatus === "SUCCESS" + ) { + signupInfoReturn = { + success: true, + message: res.operationMessage, + landingPage: this.landingPage, + user: { + userId: res.item.userId, + email: res.item.email, + fullName: res.item.fullname, + firstName: res.item.firstName, + }, + }; + console.log('signupInfoReturn : ', signupInfoReturn); + // store signed up user info in session storage for further case + this.storeSignedUpUserInfo(JSON.stringify(signupInfoReturn.user)); + } else { + //Create a faliure object that we want to send back to login page + signupInfoReturn = { + success: false, + message: res.operationMessage, + landingPage: "/create-account", + }; + } + signupDataSubject.next(signupInfoReturn); + }, + (err) => { + console.log("signup error ", err); + signupInfoReturn = { + success: false, + message: err.url + " >>> " + err.statusText + "[" + err.status + "]", + landingPage: "/create-account", + }; + } + ); + console.log('signupDataSubject : ', signupDataSubject); + + return signupDataSubject; + //return this.apiRequest.post(this.userRegURL, user); + } */ + + saveUser(user: User): Observable { + return this.apiRequest.post(this.userRegURL, user); + } + + /* company registration form */ + saveCompany(company: Sys_Account): Observable { + return this.apiRequest.post(this.companyRegURL, company); + } + + resetPassword(passwordResetRequest: PasswordResetComponent): Observable { + return this.apiRequest.post(this.resetPasswordURL, passwordResetRequest); + } + + /*==== CRUD APIS =====*/ + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append( + "page", + typeof page === "number" ? page.toString() : "0" + ); + params = params.append( + "size", + typeof size === "number" ? size.toString() : "1000" + ); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(any: any): Observable { + return this.apiRequest.post(this.baseURL, any); + } + + update(id: number, any: any): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, any); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usergrpmaintaince.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usergrpmaintaince.service.ts new file mode 100644 index 0000000..36e8538 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usergrpmaintaince.service.ts @@ -0,0 +1,46 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from '../api/helper'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { Usergrpmain } from '../../models/admin/usergrpma'; +@Injectable({ + providedIn: 'root' +}) +export class UsergrpmaintainceService { + private baseURL = "api/updateOneUsrGrp"; + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + public getAll() { + return this._http.get(`${baseUrl}/api/getAllUsrGrp`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/api/getOneAppUser/${Id}`); + } + public getbyusergrpid(id:any){ + return this._http.get(`${baseUrl}/api1/getusracces1/${id}`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/addOneUsrGrp`, data); + } +// update +public update(data: any){ + return this._http.post(`${baseUrl}/api/updateOneUsrGrp`, data); +} +updatei(id: number, projectSetup: Usergrpmain): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup); +} +public getall(){ + return this._http.get(`${baseUrl}/api1/getAllData`); +} +public deleteusr(id:any){ + return this._http.delete(`${baseUrl}/api/delete_usrgrp/${id}`); +} +public delete(id:any,usrgrp:any){ +return this._http.delete(`${baseUrl}/api1/deleteGrpMenuAcces/${id}/${usrgrp}`); +} +public deletemain(id:any,usrgrp:any){ + return this._http.delete(`${baseUrl}/fndMenu/DelMenu_WithSub1/${id}/${usrgrp}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usermaintance.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usermaintance.service.ts new file mode 100644 index 0000000..5c321e0 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/admin/usermaintance.service.ts @@ -0,0 +1,42 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class UsermaintanceService { + + constructor(private _http: HttpClient,) { } + public getAll() { + return this._http.get(`${baseUrl}/api/getAllAppUser`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/api/getOneAppUser/${Id}`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/addOneAppUser`, data); + } + // update + public update(data: any){ + return this._http.put(`${baseUrl}/api/updateAppUser`, data); + } + //newupdate + public updatenew(id:any,data: any){ + return this._http.put(`${baseUrl}/api/updateAppUserDto/${id}`, data); + } + public getallposition(){ + return this._http.get(`${baseUrl}/api/getAllPositions`); + } + public getbypositionid(Id:any){ + return this._http.get(`${baseUrl}/api/getPosition/${Id}`); + } + public getalldepartment(){ + return this._http.get(`${baseUrl}/api/getAllDepartments`); + } + public getbydepartmentid(Id:any){ + return this._http.get(`${baseUrl}/api/getDepartment/${Id}`); + } + public deleteusr(id:any){ + return this._http.delete(`${baseUrl}/api/delete_usr/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alert.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alert.service.ts new file mode 100644 index 0000000..c19d894 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alert.service.ts @@ -0,0 +1,70 @@ +import { Injectable } from '@angular/core'; +import { default as swal, SweetAlertOptions } from 'sweetalert2'; + +@Injectable({ + providedIn: 'root' +}) +export class AlertService { + constructor() { } + + error(text = 'เกิดข้อผิดพลาด', title = '') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'error', + confirmButtonText: 'ตกลง' + }; + return swal.fire(option); + + } + + success(text = '', title = 'Success') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'success', + confirmButtonText: 'Ok' + }; + return swal.fire(option); + + } + + serverError(text = 'เกิดข้อผิดพลาดในการเชื่อมต่อกับเซิร์ฟเวอร์', title = 'เกิดข้อผิดพลาด') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'error', + confirmButtonText: 'ตกลง' + }; + return swal.fire(option); + + } + + confirm(text = 'คุณต้องการดำเนินการนี้ ใช่หรือไม่?', title = 'Are you sure?') { + const option: SweetAlertOptions = { + title: title, + text: this.convertToText(text), + icon: 'question', + showCancelButton: true, + confirmButtonColor: '#3085d6', + cancelButtonColor: '#d33', + confirmButtonText: 'Yes', + cancelButtonText: 'No' + }; + return swal.fire(option); + } + + convertToText(text) { + if (text && text.message) { + return text.message + } else if (text && text.error) { + return text.error + } else if (text && text.code) { + return text.code + } else { + return text ? JSON.stringify(text) : ''; + } + } + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alerts.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alerts.service.ts new file mode 100644 index 0000000..4617822 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/alerts.service.ts @@ -0,0 +1,39 @@ +import { Injectable } from "@angular/core"; +import { NavigationStart, Router } from "@angular/router"; +import { Observable, Subject } from "rxjs"; + +@Injectable() +export class AlertService { + private subject = new Subject(); + + private keepAfterNavigationChange = false; + + constructor(private router: Router) { + // clear alert message on route change + router.events.subscribe((event) => { + if (event instanceof NavigationStart) { + if (this.keepAfterNavigationChange) { + // only keep for a single location change + this.keepAfterNavigationChange = false; + } else { + // clear alert + this.subject.next(); + } + } + }); + } + + success(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: "success", text: message }); + } + + error(message: string, keepAfterNavigationChange = false) { + this.keepAfterNavigationChange = keepAfterNavigationChange; + this.subject.next({ type: "error", text: message }); + } + + getMessage(): Observable { + return this.subject.asObservable(); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/addemails.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/addemails.service.ts new file mode 100644 index 0000000..e98291a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/addemails.service.ts @@ -0,0 +1,26 @@ +import { Injectable } from '@angular/core'; +//import { id } from '@swimlane/ngx-datatable/release/utils'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class AddemailsService { + + + private addemailUrl = 'token/addemails'; + + + + constructor( + private apirequest: ApiRequestService + + ) { } + + saveUser(data, id: number): Observable { + return this.apirequest.post(this.addemailUrl + "/" + id, data); + + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/api-request.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/api-request.service.ts new file mode 100644 index 0000000..f03661f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/api-request.service.ts @@ -0,0 +1,154 @@ +import { Injectable } from "@angular/core"; +import { + HttpClient, + HttpHeaders, + HttpParams, + HttpErrorResponse, +} from "@angular/common/http"; +import { Router } from "@angular/router"; +import { Observable, throwError } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { AppConfig } from "../../app-config"; +import { catchError } from "rxjs/operators"; + +@Injectable() +export class ApiRequestService { + constructor( + private appConfig: AppConfig, + private http: HttpClient, + private router: Router, + private userInfoService: UserInfoService + ) {} + + /** + * This is a Global place to add all the request headers for every REST calls + */ + /*{let headers = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/json', + 'Access-Control-Allow-Origin': '*', + 'Access-Control-Allow-Methods': 'POST, GET, DELETE, OPTIONS, PUT', + 'Access-Control-Allow-Headers': 'Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Accept-Language, Host, Referer, Connection, User-Agent, authorization, sw-useragent, sw-version' + });*/ + getHeaders(): HttpHeaders { + let headers = new HttpHeaders(); + //let token = this.userInfoService.getStoredToken(); + //console.log('Token from session storage: ', token); + headers = headers.append("Content-Type", "application/json"); + /* if (token !== null) { + headers = headers.append("Authorization", token); + } */ + return headers; + } + + getMultipartHeader(): HttpHeaders { + let headers = new HttpHeaders(); + headers = headers.append("Content-Type", "multipart/form-data"); + return headers; + + } + + errMsg: string = ''; + + handleError(error: HttpErrorResponse) { + let me = this; + console.log("handleError ", error.message); + switch(error.status) { + case 401: + this.errMsg = 'Forbidden'; + break; + case 404: + this.errMsg = 'Service not found'; + case 408: + this.errMsg = 'Request Timedout'; + case 500: + this.errMsg = 'Internal Server Error'; + default: + this.errMsg = 'Server Error'; + } + return throwError(error.message); + //return Observable.throw(error.message); + } + + get(url: string, urlParams?: HttpParams): Observable { + let me = this; + return this.http + .get(this.appConfig.baseApiPath + url, { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + loginAuthentication(url: string, body: Object): Observable { + let me = this; + return this.http + .post(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders() + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // modified params + post(url: string, body: any, urlParams?: HttpParams): Observable { + let me = this; + let bodyTest = body instanceof Object ? JSON.stringify(body) : body; + //console.log('Post method String Vs. Object', bodyTest); + return this.http + .post(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // [Multipart file Support] + postFormData(url: string, body: any, urlParams?: HttpParams): Observable { + //let me = this; + //headers: this.getMultipartHeader(), + return this.http + .post(this.appConfig.baseApiPath + url, body, { + params: urlParams, + reportProgress: true, + observe: 'events' + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + // modified params + put(url: string, body: Object, urlParams?: HttpParams): Observable { + let me = this; + return this.http + .put(this.appConfig.baseApiPath + url, JSON.stringify(body), { + headers: this.getHeaders(), + params: urlParams, + }).pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } + + delete(url: string): Observable { + let me = this; + return this.http + .delete(this.appConfig.baseApiPath + url, { headers: this.getHeaders() }) + .pipe( + catchError((error) => { + return throwError(error || "Server error"); + }) + ) + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/audittrail.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/audittrail.service.ts new file mode 100644 index 0000000..c08d8ad --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/audittrail.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class AudittrailService { +apiurl="master/AuditItemReport"; +apiurl1="master/AuditItemReportCustom" + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + public getAll() { + return this._http.get(`${baseUrl}/master/AuditItemReport`); + + } + public gettable(tname:any){ + const formData:FormData = new FormData(); + formData.set("table",tname); + return this.apiRequest.postFormData(this.apiurl,formData); + } + public getdate(d1:any,d2:any,tname:any){ + const formData:FormData = new FormData(); + formData.set("id",null); + formData.set("d1",d1); + formData.set("d2",d2); + formData.set("table",tname); + return this.apiRequest.postFormData(this.apiurl1,formData); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/billingdemo.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/billingdemo.service.ts new file mode 100644 index 0000000..9a69cf8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/billingdemo.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class BillingdemoService { + + constructor(private _http: HttpClient) { } + + public getAll() { + return this._http.get(`${baseUrl}/ncso_b/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_b/get-one/${Id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/department.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/department.service.ts new file mode 100644 index 0000000..9b891ac --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/department.service.ts @@ -0,0 +1,48 @@ +import { Injectable } from '@angular/core'; +import { Department } from '../../models/fnd/department'; +import { JwtHelperService } from '@auth0/angular-jwt'; +import { HttpClient, HttpParams,HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; +import { UserInfoService } from '../user-info.service'; +@Injectable({ + providedIn: 'root' +}) +export class DepartmentService { + jwtHelper: JwtHelperService = new JwtHelperService(); + + private baseURL = "api/getdepartment"; + constructor(private http: HttpClient, + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService) { } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + //console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + + update(id: number, department: Department): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, department); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + create(depart:Department): Observable { + return this.apiRequest.post(this.baseURL, depart); + } + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/diputesemo.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/diputesemo.service.ts new file mode 100644 index 0000000..972128d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/diputesemo.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class DiputesemoService { + + constructor(private _http: HttpClient) { } + + public getAll() { + return this._http.get(`${baseUrl}/ncso_q/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_q/get-one/${Id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.spec.ts new file mode 100644 index 0000000..d6cce00 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ForgotpassService } from './forgotpass.service'; + +describe('ForgotpassService', () => { + let service: ForgotpassService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ForgotpassService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.ts new file mode 100644 index 0000000..8176718 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/forgotpass.service.ts @@ -0,0 +1,44 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class ForgotpassService { + private url = "api/forgot"; + public localStorage: Storage = localStorage; + constructor(private http: HttpClient,) { } + + checkMailExists(email: string) { + return this.http.post(this.url+ "check-email", {"email": email}); + } + storeEmail(userInfoString: string) { + this.localStorage.setItem("registeredEmail", userInfoString); + } + //Store userinfo from session storage + + //Get email from session storage ( WILL REMOVE AFTER REGISTER) + getStoredEmail(): string | null { + try { + let userInfoString: string = this.localStorage.getItem( + "registeredEmail" + ); + if (userInfoString) { + return userInfoString; + } else { + return null; + } + } catch (e) { + return null; + } + } + sendemail(email:string){ + const params = new HttpParams() + .set('email',email) + console.log(email); + return this.http.post(`${baseUrl}/api/resources/forgotpassword`,params) + } + resetpass(data:any,id:any){ + return this.http.post(`${baseUrl}/api/resources/savePassword/${id}`,data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/helper.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/helper.ts new file mode 100644 index 0000000..7f1e8f1 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/helper.ts @@ -0,0 +1,5 @@ +import{environment} from 'src/environments/environment'; + +let baseUrl = environment.backendUrl; +//let baseUrl= `http://cns-portal-backend:30166`; +export default baseUrl; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/itemdemo.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/itemdemo.service.ts new file mode 100644 index 0000000..7cf0b14 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/itemdemo.service.ts @@ -0,0 +1,16 @@ +import { Injectable } from '@angular/core'; +import baseUrl from './helper'; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class ItemdemoService { + + constructor(private _http: HttpClient) { } + public getAll() { + return this._http.get(`${baseUrl}/ncso_i/get-all`); + } + public getbyid(Id: any){ + return this._http.get(`${baseUrl}/ncso_i/get-one/${Id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/login.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/login.service.ts new file mode 100644 index 0000000..4b7bc44 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/login.service.ts @@ -0,0 +1,113 @@ +import { Injectable } from '@angular/core'; +import { Router } from '@angular/router'; + +import { Observable, BehaviorSubject } from 'rxjs'; +import { UserInfoService, LoginInfoInStorage} from '../user-info.service'; +import { ApiRequestService } from './api-request.service'; +import { HttpClient } from '@angular/common/http'; +import { ToastrService } from 'ngx-toastr'; + +export interface LoginRequestParam{ + //username:string; + email:string; + password:string; +} + +@Injectable() +export class LoginService { + private storage: Storage = sessionStorage; + public landingPage:string = "/cns-portal/dashboard"; + constructor( + private router:Router, + private userInfoService: UserInfoService, + private apiRequest: ApiRequestService, + private httpRequest: HttpClient, + private toastr: ToastrService, + ) {} + + + + getToken(email:string, password:string): Observable { + let bodyData: LoginRequestParam = { + //"username": username, + "email": email, + "password": password, + } + /* + Using BehaviorSubject instead of Subject + In Angular services are initialized before the components, if any component is + subscribing, it will only receive events which are executed after subscription. + therefore if you put a syncronize next() in the service, the component wont get it. + + A BehaviourSubject will always provide the values wheather the subscription happened after or before event + + */ + + let loginDataSubject:BehaviorSubject = new BehaviorSubject([]); // Will use this BehaviorSubject to emit data that we want after ajax login attempt + let loginInfoReturn:LoginInfoInStorage; // Object that we want to send back to Login Page + + this.apiRequest.loginAuthentication('token/session', bodyData) + .subscribe(jsonResp => { + console.log('login response: ', jsonResp); + if (jsonResp.operationMessage=='Login Failed') { + this.toastr.warning('Not Login Getting Error check your Username and password'); + } + if (jsonResp !== undefined && jsonResp !== null && jsonResp.operationStatus === "SUCCESS"){ + //Create a success object that we want to send back to login page + ////"displayName": jsonResp.item.fullname, + //"username" : jsonResp.item.username, + loginInfoReturn = { + "success" : true, + "message" : jsonResp.operationMessage, + "landingPage": this.landingPage, + "user" : { + "userId" : jsonResp.item.userId, + "email" : jsonResp.item.email, + "displayName": jsonResp.item.firstName, + "username" : jsonResp.item.username, + "roles" : jsonResp.item.roles, + "token" : jsonResp.item.token, + + }, + }; + console.log(loginInfoReturn.user); + if(jsonResp !== undefined && jsonResp !== null && jsonResp.operationStatus === "SUCCESS"){ + this.toastr.success(`Welcome To home Page!! your Role is ${jsonResp.item.roles}`); + } + // store username and jwt token in session storage to keep user logged in between page refreshes + this.userInfoService.storeUserInfo(JSON.stringify(loginInfoReturn.user)); + } + else { + //Create a faliure object that we want to send back to login page + loginInfoReturn = { + "success":false, + "message":jsonResp.msgDesc, + "landingPage":"/login" + }; + } + loginDataSubject.next(loginInfoReturn); + }, + err => { + console.log('login error ', err); + loginInfoReturn = { + "success": false, + "message": err.url + " >>> " + err.statusText + "[" + err.status +"]", + "landingPage": "/login" + }; + if (err) { + this.toastr.error('Getting Server Error'); + } + }); + + return loginDataSubject; + } + + logout(navigatetoLogout=true): void { + // clear token remove user from local storage to log user out + this.userInfoService.removeUserInfo(); + if(navigatetoLogout){ + this.router.navigate(["logout"]); + } + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/query-runner.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/query-runner.service.ts new file mode 100644 index 0000000..bcfe7dd --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/query-runner.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +import { Observable } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class QueryRunnerService { + private baseURL = "api/report-data"; + constructor(private apiRequest: ApiRequestService) { } + getById(report_id:number, page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("report_id", report_id.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/realnet-menu.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/realnet-menu.service.ts new file mode 100644 index 0000000..4ece66b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/realnet-menu.service.ts @@ -0,0 +1,43 @@ +import { HttpParams } from "@angular/common/http"; +import { Injectable } from "@angular/core"; +import { Rn_Main_Menu } from "../../models/builder/Rn_Main_Menu"; +import { Observable } from "rxjs"; +import { UserInfoService } from "../user-info.service"; +import { ApiRequestService } from "./api-request.service"; + +@Injectable() +export class RealnetMenuService { + private baseURL = "api/realnet-menu"; + constructor( + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService + ) {} + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(rn_Main_Menu: Rn_Main_Menu): Observable { + return this.apiRequest.post(this.baseURL, rn_Main_Menu); + } + + update(id: number, rn_Main_Menu: Rn_Main_Menu): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, rn_Main_Menu); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/report-builder.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/report-builder.service.ts new file mode 100644 index 0000000..11fd111 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/report-builder.service.ts @@ -0,0 +1,159 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from './api-request.service'; +import { Observable } from 'rxjs'; +import { ReportBuilder } from '../../models/builder/ReportBuilder'; +import { ReportBuilderQuery } from '../../models/builder/ReportBuilderQuery'; +import { TableList } from '../../models/fnd/TableList'; +@Injectable({ + providedIn: 'root' +}) +export class ReportBuilderService { + private reportBaseURL ='api/report-builder-by-id'; + private reportBaseURLSubmit ='api/report-builder'; + private masterQueryUrl ='api/add-master-query'; + private storage: Storage = sessionStorage; + private moduleIdKey: string = "moduleId"; + private baseURLMasterQuery="api/master-query"; + private baseURL="api/edit-report"; + private reportbuild2url="api/add-report"; + private servicereportsave="api/report-builder_service"; + private updatereportservice="api/updatereport"; + + private databaselisturl='Table_list' + private colurl='fndMenu/loadcolumn'; + private saveurl='FndQuery/query'; + constructor(private apiRequest: ApiRequestService) { } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + buildReport(id: number) { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get("api/build_report", params); + } + + getModuleId(): number { + let modId = +this.storage.getItem(this.moduleIdKey); + return modId; + } + + getAll(moduleId: number, page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("moduleId", moduleId.toString()); + // get all + return this.apiRequest.get(this.reportBaseURL, params); + } + + //save report + create(fbHeader: ReportBuilder, moduleId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.reportBaseURLSubmit, fbHeader, params); + } + + //save report service + createservicereport(fbHeader: ReportBuilder, moduleId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.servicereportsave, fbHeader, params); + } + + //save report + createQuery(reportId: number): Observable { + //`${this.baseURL}` + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + // params = params.append("formType", formType); + return this.apiRequest.post(this.masterQueryUrl,params); + } + + // update(reportId: number, functionRegister: ReportBuilder): Observable { + // let params: HttpParams = new HttpParams(); + // params = params.append("reportId", reportId.toString()); + // return this.apiRequest.put(this.masterQueryUrl/reportId, functionRegister); + // } + + update(id: number, functionRegister: ReportBuilder): Observable { + const _http = this.masterQueryUrl + "/" + id; + return this.apiRequest.put(_http, functionRegister); + } + + updateservicereport(id: number, functionRegister: ReportBuilder): Observable { + const _http = this.updatereportservice + "/" + id; + return this.apiRequest.put(_http, functionRegister); + } + + getMasterQuery(id: number): Observable { + const _http = this.baseURLMasterQuery + "/" + id; + return this.apiRequest.get(_http); + } + + getMasterData(query:string): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('sql_query', query); + return this.apiRequest.get('api/master-query-data',params); +} + + + report2(servicename):Observable +{ + console.log("in service",servicename); + + // let params: HttpParams = new HttpParams(); + // params = params.append('service_name', servicename); + + // console.log(this.reportbuild2url,params); + + return this.apiRequest.post(this.reportbuild2url,servicename); +} +//savequery +saveq(data:any):Observable{ + return this.apiRequest.post(this.saveurl,data); +} +//getall +getall(){ + return this.apiRequest.get(this.saveurl); +} +getreportdata(apiname):Observable +{ + var url="api"+"/"+apiname; + console.log(url) + + return this.apiRequest.get(url); + +} +getdatabse(): Observable{ + return this.apiRequest.get(`SqlworkbenchSqlcont/sql`); + //return this.apiRequest.get(this.databaselisturl); +} +getTableListn(val:any): Observable { + return this.apiRequest.get(`Table_list/${val}`); +} +getcolListn(val:any,val1:any): Observable { + return this.apiRequest.get(`Table_list/${val}/${val1}`); +} +getcollist(table:any){ + const _http = this.colurl+ "/" + table; + return this.apiRequest.get(_http); + //return this.apiRequest.get(`this.colurl/${table}`); +} +createdb(data:any){ + return this.apiRequest.post(`SqlworkbenchSqlcont/sql`,data); +} +getallentity(){ + return this.apiRequest.get(this.reportBaseURLSubmit); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/table-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/table-setup.service.ts new file mode 100644 index 0000000..7e6af52 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/table-setup.service.ts @@ -0,0 +1,29 @@ +import { Injectable } from '@angular/core'; +import { RbTables } from '../../models/builder/RbTables'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from './api-request.service'; +import { HttpParams } from '@angular/common/http'; +import { TableList } from '../../models/fnd/TableList'; + +@Injectable({ + providedIn: 'root' +}) +export class TableSetupService { + private baseURL = 'api/add-tables'; + private baseURL2 = 'api/add-alltables'; + private tableListUrl ='api/table-list'; + private tablelisturl='api/Table_list' + constructor(private apiRequest: ApiRequestService) { } + create(rb_tables: RbTables,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL2, rb_tables,params); +} + +getTableList(): Observable { + return this.apiRequest.get(this.tableListUrl); +} +getTableListn(): Observable { + return this.apiRequest.get(this.tablelisturl); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/translate.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/translate.service.ts new file mode 100644 index 0000000..0dbbf91 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/api/translate.service.ts @@ -0,0 +1,19 @@ +import { Injectable, Inject } from '@angular/core'; +import { AppConfig } from '../../app-config'; + +@Injectable() +export class TranslateService { + constructor(private appConfig:AppConfig) { + // Code to get Locale Info from Session Storage + } + + getDateString(datenum:number):string{ + return new Date(datenum).toLocaleDateString(this.appConfig.locale); + } + + getCurrencyString(number:number):string { + return number.toLocaleString(this.appConfig.locale, this.appConfig.currencyFormat); + } + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/auth_guard.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/auth_guard.service.ts new file mode 100644 index 0000000..0711613 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/auth_guard.service.ts @@ -0,0 +1,40 @@ +import { Injectable } from '@angular/core'; +import { UserInfoService } from './user-info.service'; +import { LoginService } from './api/login.service'; +import { Router, CanActivate, CanActivateChild,ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; + +@Injectable() +export class AuthGuard implements CanActivate, CanActivateChild { + + constructor( + private router: Router, + private loginService: LoginService, + private userInfoService: UserInfoService + ) { } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + //console.log('canActivate : ', state); + + let url: string = state.url; + + return this.checkLogin(url); + //return true; + } + + canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + return this.canActivate(route, state); + } + + checkLogin(url: string): boolean { + if (this.userInfoService.isLoggedIn()) { + return true; + } + console.log("User is not logged - This routing guard prvents redirection to any routes that needs logging."); + //Store the original url in login service and then redirect to login page + this.loginService.landingPage = url; + this.router.navigate(['login',]); + return false; + } + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.spec.ts new file mode 100644 index 0000000..2f53531 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { IconService } from './icon.service'; + +describe('IconService', () => { + let service: IconService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(IconService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.ts new file mode 100644 index 0000000..f8dd1de --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/icon.service.ts @@ -0,0 +1,63 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class IconService { + private addURL = "api/addFavById"; + private removeURL= "api/removeFavById"; + private pinurl ="api/addPinById"; + private pinremove ="api/removePinById"; + private starurl ="api/addStarById"; + private starremove ="api/removeStarById"; + private watchurl ="api/addWatchlistById"; + private watchremove = "api/removeWatchlistById"; + private futureurl = "api/addFuturisticById"; + private futureremove = "api/removeFuturisticById"; + private archurl ="api/addArchiveById"; + constructor(private apiRequest: ApiRequestService,) { } + create(data:any): Observable { + return this.apiRequest.post(this.addURL, data); + } + + delete(id: number): Observable { + const _http = this.removeURL + "/" + id; + return this.apiRequest.delete(_http); + } + createpin(data:any): Observable { + return this.apiRequest.post(this.pinurl, data); + } + + deletepin(id: number): Observable { + const _http = this.pinremove + "/" + id; + return this.apiRequest.delete(_http); + } + createstar(data:any): Observable { + return this.apiRequest.post(this. starurl, data); + } + + deletestar(id: number): Observable { + const _http = this.starremove + "/" + id; + return this.apiRequest.delete(_http); + } + createwatch(data:any): Observable { + return this.apiRequest.post(this. watchurl, data); + } + + deletewatch(id: number): Observable { + const _http = this.watchremove + "/" + id; + return this.apiRequest.delete(_http); + } + createfuture(data:any): Observable { + return this.apiRequest.post(this.futureurl, data); + } + + deletefuture(id: number): Observable { + const _http = this.futureremove + "/" + id; + return this.apiRequest.delete(_http); + } + createarch(data:any): Observable { + return this.apiRequest.post(this.archurl, data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/modulesetup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/modulesetup.service.ts new file mode 100644 index 0000000..c7aa258 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/modulesetup.service.ts @@ -0,0 +1,67 @@ +import { Injectable } from '@angular/core'; +import { ModuleSetup } from "../../models/builder/Module_Setup"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { HttpParams } from "@angular/common/http"; +@Injectable({ + providedIn: 'root' +}) +export class ModulesetupService { + private baseURL = "api/module-setup"; + private copyModuleURL = 'api/module-copy'; + private allrepourl ='api/getAllMyRepos'; + constructor( private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { // not in use + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getProjectModules(projectId:number, page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("projectId", projectId.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + + getByAccountId(): Observable { + const _http = this.baseURL + "/user-menu"; + return this.apiRequest.get(_http); + } + + create(moduleSetup: ModuleSetup): Observable { + let params: HttpParams = new HttpParams(); + // params = params.append("p_id", projectId.toString()); + return this.apiRequest.post(this.baseURL, moduleSetup); + } + + update(id: number, moduleSetup: ModuleSetup): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, moduleSetup); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + copy(moduleCopyForm: Object) :Observable { + return this.apiRequest.post(this.copyModuleURL, moduleCopyForm); + } + + getByallrepouserId(id: number): Observable { + const _http = this.allrepourl + "/" + id; + return this.apiRequest.get(_http); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/suredokr.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/suredokr.service.ts new file mode 100644 index 0000000..0676bab --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/suredokr.service.ts @@ -0,0 +1,13 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class SuredokrService { + private baseURL = "http://localhost:3000/dockerapi/images/json"; + constructor( private http:HttpClient) { } + getAll():Observable{ + return this.http.get(this.baseURL); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/surefarm.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/surefarm.service.ts new file mode 100644 index 0000000..6fa68fc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/surefarm.service.ts @@ -0,0 +1,13 @@ +import { Injectable } from '@angular/core'; +import { Observable } from "rxjs"; +import { HttpClient } from '@angular/common/http'; +@Injectable({ + providedIn: 'root' +}) +export class SurefarmService { + private baseURL = "http://localhost:3000/dockerapi/containers/json?all=1"; + constructor(private http:HttpClient) { } + getAll():Observable{ + return this.http.get(this.baseURL); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.spec.ts new file mode 100644 index 0000000..c54274d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SureopsService } from './sureops.service'; + +describe('SureopsService', () => { + let service: SureopsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SureopsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.ts new file mode 100644 index 0000000..79e0153 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/sureops.service.ts @@ -0,0 +1,77 @@ +import { HttpClient, HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { FileData } from 'src/app/models/builder/FileData'; +import { environment } from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class SureopsService { + private createFileURl = 'sureops/createfile'; + private getfileurl='sureops/getfile/get_allfile'; + private getbyid='sureops/getfile/getfile'; + private updateurl='sureops/fileupdate/updatefile'; + + baseurl = environment.cretedevlopmenturl; + appurl=environment.appbuilderurl; + constructor(private apiRequest: ApiRequestService, + private _http: HttpClient,) { } + public createFile(id: any,profile_id:any) { + // return this.apiRequest.post(this.createFileURl, id); + let _http = this.createFileURl + "/" + id +"/"+profile_id; + return this.apiRequest.get(_http); + } + public create(id: any,profile_id:any){ + return this._http.get(`${this.baseurl}/sureops/createfile/${id}/${profile_id}`); + } + public delete(profile_id:any,id:any){ + return this._http.delete(`${this.baseurl}/sureops/getfile/delete/${profile_id}/${id}`); + } + private scripturl='sureops/script_initilizer' + public createscript(id: any,profile_id:any,copy_from:any,deployemntProfile:any,commit_msg:any,Sure_filepath:any){ + console.log(id,profile_id,commit_msg,copy_from,deployemntProfile,Sure_filepath) + let params: HttpParams = new HttpParams(); + params =params.append("copy_from",copy_from); + params =params.append("Deployment_profile",deployemntProfile); + params =params.append("commit_msg",commit_msg); + params =params.append("Sure_filepath",Sure_filepath); + const _http = this.scripturl + "/" + id +"/"+ profile_id; + //return this.apiRequest.get(_http,params); + return this._http.get(`${this.baseurl}/sureops/script_initilizer/${id}/${profile_id}`,{ params: params }); + } +public getallfiles(id:any){ + let _http = this.getfileurl +"/" + id; + return this.apiRequest.get(_http); +} +public getallfile(id:any,pid:any){ + return this._http.get(`${this.baseurl}/sureops/getfile/get_allfile/${id}/${pid}`); +} +public getbysurepipeproid(pid:any){ + return this._http.get(`${this.baseurl}/sureops/get/${pid}`); +} +public getbypipeid(id:any){ + return this._http.get(`${this.baseurl}/sureops/getby/${id}`); +} +public getbyfileid(id:any){ + let _http = this.getbyid + "/" + id; + return this.apiRequest.get(_http); +} +public getbyfileeid(id:any){ + return this._http.get(`${this.baseurl}/sureops/getfile/getfile/${id}`); +} +updatefile(id:number,data:any){ + let _http = this.updateurl + "/" + id; + return this.apiRequest.put(_http,data); +} +public updatebyid(id:any,data:any){ + return this._http.put(`${this.baseurl}/sureops/fileupdate/updatefile/${id}`,data); +} +public build(Id: any){ + //return this.apiRequest.get(`entityBuilder/BuildByProject/${Id}`); + return this._http.get(`${this.appurl}/entityBuilder/BuildByProject/${Id}`); +} +public deploy(id: any){ + return this._http.get(`${this.baseurl}/sureops/deployapp/${id}`); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.spec.ts new file mode 100644 index 0000000..b1e6181 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WebpageBuilderService } from './webpage-builder.service'; + +describe('WebpageBuilderService', () => { + let service: WebpageBuilderService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WebpageBuilderService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.ts new file mode 100644 index 0000000..0cd0383 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/builder/webpage-builder.service.ts @@ -0,0 +1,68 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +import baseUrl from 'src/app/services/api/helper'; +@Injectable({ + providedIn: 'root' +}) +export class WebpageBuilderService { + + private getAllURL = 'get_by_module_id'; + private updaterowdata = 'Report_builder'; + private addDataURl = 'Report_builder'; + private deleteFieldURL = 'Report_builder'; + private getbyidURL = 'Report_builder'; + // private editURL = 'update_Dashbord1_Line'; + private updateURL = 'Report_line'; + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + getAll(module_id: number,page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } + + create(data:any): Observable { + return this.apiRequest.post(this.addDataURl, data); + } + + deleteField(id:number){ + let _http = this.deleteFieldURL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.getbyidURL + "/" + id; + return this.apiRequest.get(_http); + } + + // addToDB(line:any):Observable + // { + // return this.apiRequest.put(this.editURL,line); + // } + UpdateLineData(id:number, line:any) + { + let _http = this.updateURL + "/" + id; + return this.apiRequest.put(_http,line); + } + UpdateRowData(id:number, line:any) + { + let _http = this.updaterowdata + "/" + id; + return this.apiRequest.put(_http,line); + } + uploadImg(image:File): Observable + { + const formData = new FormData(); + formData.append('image', image,image.name); + // return this.apiRequest.post(this.imgUpload, formData); + return this._http.post(`${baseUrl}/image/upload/image_upload`, formData); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/excel.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/excel.service.ts new file mode 100644 index 0000000..2c4c582 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/excel.service.ts @@ -0,0 +1,30 @@ +import { Injectable } from '@angular/core'; +import * as FileSaver from 'file-saver'; +import * as XLSX from 'xlsx'; + +const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8'; +const EXCEL_EXTENSION = '.xlsx'; + +@Injectable({ + providedIn: 'root' +}) +export class ExcelService { + + constructor() { } + + public exportAsExcelFile(json: any[], excelFileName: string, fileNameSuffix=''): void { + + const worksheet: XLSX.WorkSheet = XLSX.utils.json_to_sheet(json); + const workbook: XLSX.WorkBook = { Sheets: { 'data': worksheet }, SheetNames: ['data'] }; + const excelBuffer: any = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' }); + this.saveAsExcelFile(excelBuffer, excelFileName, fileNameSuffix); + } + + private saveAsExcelFile(buffer: any, fileName = 'export', fileNameSuffix=''): void { + const data: Blob = new Blob([buffer], { + type: EXCEL_TYPE + }); + FileSaver.saveAs(data, fileName + fileNameSuffix + EXCEL_EXTENSION); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.spec.ts new file mode 100644 index 0000000..77a3ff5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AddDefinationService } from './add-defination.service'; + +describe('AddDefinationService', () => { + let service: AddDefinationService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AddDefinationService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.ts new file mode 100644 index 0000000..1d8f733 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/add-defination.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { BiDashLine } from 'src/app/models/fnd/BiDashLine'; +@Injectable({ + providedIn: 'root' +}) +export class AddDefinationService { + private baseURL ='api/widget-information'; + private baseupdateURL='api/widget-update'; + constructor(private apiRequest: ApiRequestService) { } + getById(id: number) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.get(_http); +} + + +update(id: number, biDash: BiDashLine) :Observable { + const _http = this.baseupdateURL + '/' + id; + return this.apiRequest.put(_http, biDash); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.spec.ts new file mode 100644 index 0000000..da627e2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { AdhocParamSetupService } from './adhoc-param-setup.service'; + +describe('AdhocParamSetupService', () => { + let service: AdhocParamSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(AdhocParamSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.ts new file mode 100644 index 0000000..49f83f2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/adhoc-param-setup.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { AdhocParam } from 'src/app/models/builder/AdhocParam'; +import { Observable } from 'rxjs'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class AdhocParamSetupService { + private baseURL ='api/add-adhoc-param'; + constructor(private apiRequest: ApiRequestService) { } + create(adhocParam: AdhocParam,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL, adhocParam,params); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.spec.ts new file mode 100644 index 0000000..31c9797 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { BiDashSetupService } from './bi-dash-setup.service'; + +describe('BiDashSetupService', () => { + let service: BiDashSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(BiDashSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.ts new file mode 100644 index 0000000..fda366d --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-dash-setup.service.ts @@ -0,0 +1,54 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +import { Observable } from 'rxjs'; +import { BiDashHeader } from 'src/app/models/fnd/BiDashHeader'; +@Injectable({ + providedIn: 'root' +}) +export class BiDashSetupService { + private storage: Storage = sessionStorage; + private moduleIdKey: string = "moduleId"; + private dashBaseURL ='api/dashboard-details'; + private saveURL ='api/add-dashboard'; + private baseURL ='api/dashboard'; + constructor(private apiRequest: ApiRequestService) { } + + getModuleId(): number { + let modId = +this.storage.getItem(this.moduleIdKey); + return modId; + } + + getById(id: number) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.get(_http); +} + + + + + getAll(moduleId: number, page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("moduleId", moduleId.toString()); + // get all + return this.apiRequest.get(this.dashBaseURL, params); + } + + create(biDash: BiDashHeader,moduleId:number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + return this.apiRequest.post(this.saveURL, biDash,params); +} + + + +buildDash(id: number) { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get("api/build_dashboard", params); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-widget-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-widget-setup.service.ts new file mode 100644 index 0000000..49e3eb7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/bi-widget-setup.service.ts @@ -0,0 +1,60 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpParams } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { BiWidget } from 'src/app/models/fnd/BiWidget'; +import { DropDown } from '../builder/dropdown.service'; +@Injectable({ + providedIn: 'root' +}) +export class BiWidgetSetupService { + private storage: Storage = sessionStorage; + private moduleIdKey: string = "moduleId"; + private widgetBaseURL ='api/widget-details'; + private widgetSaveUrl ='api/widget-details'; + private widgetListAPI ='api/widget-list/'; + private getwidget='api/getwidget/'; +private updatewidget='api/updatewidget/'; + constructor(private apiRequest: ApiRequestService) { } + getModuleId(): number { + let modId = +this.storage.getItem(this.moduleIdKey); + return modId; + } + + getwidgetList(moduleId: number): Observable { + const _http = this.widgetListAPI + moduleId; + return this.apiRequest.get(_http); + } + + getwidgetbyid(Id: number): Observable { + const _http = this.getwidget + Id; + return this.apiRequest.get(_http); + } + + updatewidgetbyid(Id: number,widget:any): Observable { + const _http = this.updatewidget + Id; + return this.apiRequest.put(_http,widget); + } + + getAll(moduleId: number, page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + params = params.append("moduleId", moduleId.toString()); + // get all + return this.apiRequest.get(this.widgetBaseURL, params); + } + + //save report + create(widget: BiWidget, moduleId: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("moduleId", moduleId.toString()); + return this.apiRequest.post(this.widgetSaveUrl, widget, params); + } + + getOrderStats2(field:string): Observable { + return this.apiRequest.get('api/order-stats-2/' + field ); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/builddetails.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/builddetails.service.ts new file mode 100644 index 0000000..b228fdc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/builddetails.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class BuilddetailsService { + private baseURL = "entityBuilder/project_builder"; + private allpkgurl="token/frontendtable/getall"; + constructor(private apiRequest: ApiRequestService,) { } + create(data: any): Observable { + return this.apiRequest.post(this.baseURL, data); + } + getall(): Observable { + return this.apiRequest.get(this.allpkgurl); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/code-extraction.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/code-extraction.service.ts new file mode 100644 index 0000000..8014dcc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/code-extraction.service.ts @@ -0,0 +1,153 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; + + +import { Bcf_Extractor } from 'src/app/models/fnd/Bcf_Extractor'; +import { Bcf_Extractor_Params } from 'src/app/models/fnd/Bcf_Extractor_Params'; +import { FileData } from 'src/app/models/builder/FileData'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class CodeExtractionService { + private codeExtractionURL = 'api/bcf-extractor'; + private codeExtractionParamsURL = 'api/bcf-extractor-params'; + private staticCodeExtractionURL = 'api/static_code_extraction'; + private dynamicCodeExtractionURL = 'api/dynamic_code_extraction'; + private buildMasterBuilderURL = 'api/build_master_builder'; + private extractionStatusChangeURL = 'api/bcf-extractor-params/extraction-status-change'; + private creationStatusChangeURL = 'api/bcf-extractor-params/creation-status-change'; + + constructor(private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // get all + // return this.apiRequest.get('api/instructors'); + // paginated data + return this.apiRequest.get(this.codeExtractionURL, params); + } + + getById(id: number): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.get(_http); + } + + create(bcf_extractor: Bcf_Extractor): Observable { + //`${this.baseURL}` + return this.apiRequest.post(this.codeExtractionURL, bcf_extractor); + } + + // UPLOAD ZIP FILE DATA + saveFormAndUploadFile(formData: FormData) :Observable { + //return this.http.post(this.appConfig.baseApiPath + this.codeExtractionURL, formData, { reportProgress:true, observe: 'events' }); + return this.apiRequest.postFormData(this.codeExtractionURL, formData); + } + delete1(id: number): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.delete(_http); + } + update(id: number, bcf_extractor: Bcf_Extractor): Observable { + const _http = this.codeExtractionURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor); + } + + // =========== CODE EXTRACTION PARAMS =============== + + getCodeExtractionParamById(id: number): Observable { + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.get(_http); + } + getCodeExtractionParams(header_id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + return this.apiRequest.get(this.codeExtractionParamsURL, params); + } + delete(id: number): Observable { + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.delete(_http); + } + createExtractionParams(header_id: number, bcf_extractor_params: Bcf_Extractor_Params): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + return this.apiRequest.post(this.codeExtractionParamsURL, bcf_extractor_params, params); + } + + updateExtractionParams(id: number, header_id: number, bcf_extractor_params: Bcf_Extractor_Params): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', header_id.toString()); + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor_params, params); + } +updatecodeparam(id:any,bcf_extractor_params: Bcf_Extractor_Params):Observable{ + const _http = this.codeExtractionParamsURL + "/" + id; + return this.apiRequest.put(_http, bcf_extractor_params, ); +} + // CREATION STATUS CHANGE + + creationStatusChange(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get(this.creationStatusChangeURL, params); + } + // EXTRACTION STATUS CHANGE + extractionStatusChange(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + return this.apiRequest.get(this.extractionStatusChangeURL, params); + } + // STATIC CODE EXTRACTOPN AND DYNAMIC CODE EXTRACTION + staticCodeExtraction(id:number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', id.toString()); + return this.apiRequest.get(this.staticCodeExtractionURL, params); + } + dynamicCodeExtraction(id:number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('header_id', id.toString()); + return this.apiRequest.get(this.dynamicCodeExtractionURL, params); + } + + // BUILD MASTER BUILDER + buildMasterBuilder(id: number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('id', id.toString()); + return this.apiRequest.get(this.buildMasterBuilderURL, params); + } + + // ========== code editor service ======= + + private codeExtractorFileListURL = 'api/bcf-extractor-file-list'; + private fileReadURL = 'api/file-code-read'; + private fileCodeSaveURL = 'api/file-code-save'; + + getFileList(id: number): Observable { + const _http = this.codeExtractorFileListURL + "/" + id; + return this.apiRequest.get(_http); + + } + + readFile(id: number): Observable { + const _http = this.fileReadURL + "/" + id; + return this.apiRequest.get(_http); + } + saveCodeIntoFile(fileData: FileData): Observable { + return this.apiRequest.post(this.fileCodeSaveURL, fileData); + } + + // ======= STATIC CODE READ AND SAVE ========== // + private staticFileReadURL = 'api/static-file-code-read'; + private SstaticFileCodeSaveURL = 'api/static-file-code-save'; + readStaticFile(id: number): Observable { + const _http = this.staticFileReadURL + "/" + id; + return this.apiRequest.get(_http); + } + + saveCodeIntoStaticFile(fileData: FileData): Observable { + return this.apiRequest.post(this.SstaticFileCodeSaveURL, fileData); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.spec.ts new file mode 100644 index 0000000..5cc28e4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ColumnSetupService } from './column-setup.service'; + +describe('ColumnSetupService', () => { + let service: ColumnSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ColumnSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.ts new file mode 100644 index 0000000..7094937 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/column-setup.service.ts @@ -0,0 +1,31 @@ +import { Injectable } from '@angular/core'; +import { ApiRequestService } from '../api/api-request.service'; +import { Observable } from 'rxjs'; +import { TableList } from 'src/app/models/fnd/TableList'; +import { RbColumns } from 'src/app/models/builder/RbColumns'; +import { HttpParams } from '@angular/common/http'; +import { DropDown } from '../builder/dropdown.service'; +@Injectable({ + providedIn: 'root' +}) +export class ColumnSetupService { + private tableListUrl ='api/table-list'; + private baseURL2 ='api/add-allcolumn'; + private columnAPI='api/column_alias_list/' + constructor(private apiRequest: ApiRequestService) { } + gettableAlias(id: number): Observable { + const _http = this.tableListUrl + "/" + id; + return this.apiRequest.get(_http); + } + + create(rb_columns: RbColumns,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL2, rb_columns,params); +} + +getColumnList(tableAlias: string): Observable { + const _http = this.columnAPI + tableAlias; + return this.apiRequest.get(_http); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.spec.ts new file mode 100644 index 0000000..68b9dee --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { CtemplateService } from './ctemplate.service'; + +describe('CtemplateService', () => { + let service: CtemplateService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(CtemplateService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.ts new file mode 100644 index 0000000..33baa37 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/ctemplate.service.ts @@ -0,0 +1,66 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { environment } from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class CtemplateService { + baseurl = environment.communicationurl; + addDataURl='Surecommunication/communication/jobtable/Com_jobTable'; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } +//template + public getAll() { + return this._http.get(`${this.baseurl}/Surecommunication/communication/template/template`); + } + public create(data: any){ + return this._http.post(`${this.baseurl}/Surecommunication/communication/template/template`, data); + } + + public getById(id: any){ + return this._http.get(`${this.baseurl}/Surecommunication/communication/template/template/${id}`); + } + + public delete(id:any){ + return this._http.delete(`${this.baseurl}/Surecommunication/communication/template/template/${id}`); + } + + public update(id:any,data:any){ + return this._http.put(`${this.baseurl}/Surecommunication/communication/template/template/${id}`, data); + } +//jobqueue +public getAll1() { + return this._http.get(`${this.baseurl}/Surecommunication/communication/jobtable/Com_jobTable`); +} +create1(data:any,file:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("file",file); + return this._http.post(`${this.baseurl}/Surecommunication/communication/jobtable/Com_jobTable`,formData); + + // return this.apiRequest.post(this.addDataURl, data); + } + update1(id: number, data:any,file:any): Observable { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("data",s); + formData.append("file",file); + + return this._http.put(`${this.baseurl}/Surecommunication/communication/jobtable/Com_jobTable/${id}`,formData); + + //const _http = this.updateurl + "/" + id; + //return this.apiRequest.put(_http, data); + } +public getById1(id: any){ + return this._http.get(`${this.baseurl}/Surecommunication/communication/jobtable/Com_jobTable/${id}`); +} + +public delete1(id:any){ + return this._http.delete(`${this.baseurl}/Surecommunication/communication/jobtable/Com_jobTable/${id}`); +} + + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.spec.ts new file mode 100644 index 0000000..57fd8a5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DataflowService } from './dataflow.service'; + +describe('DataflowService', () => { + let service: DataflowService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DataflowService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.ts new file mode 100644 index 0000000..e2f3912 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dataflow.service.ts @@ -0,0 +1,78 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +import { environment } from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class DataflowService { + baseurl = environment.surejobUrl; + private addDataURl = 'api/suredata'; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public getAll() { + return this._http.get(`${baseUrl}/dataflow/dataflow`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/dataflow/dataflow`, data); + } + create1(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i { + let service: DatastoreService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DatastoreService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/datastore.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/datastore.service.ts new file mode 100644 index 0000000..08627bd --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/datastore.service.ts @@ -0,0 +1,89 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class DatastoreService { + private addDataURl = 'api/suredata'; + private addDataURl1='api/suredatasource'; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public getAll() { + return this._http.get(`${baseUrl}/api/suredata`); + } + public create(data: any){ + return this._http.post(`${baseUrl}/api/suredata`, data); + } + create1(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + + return this.apiRequest.postFormData(`${this.addDataURl}/${id}`,formData); + + + } + public getAll2() { + return this._http.get(`${baseUrl}/api/suredatasource`); + } + + create2(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + // for(let i=0;i { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("data",s); + formData.append("ssh_file_key",files); + + return this.apiRequest.postFormData(`${this.addDataURl1}/${id}`,formData); + + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.spec.ts new file mode 100644 index 0000000..065b4d2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DateParamSetupService } from './date-param-setup.service'; + +describe('DateParamSetupService', () => { + let service: DateParamSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DateParamSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.ts new file mode 100644 index 0000000..043a411 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/date-param-setup.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { DateParam } from 'src/app/models/builder/DateParam'; +import { Observable } from 'rxjs'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class DateParamSetupService { + private baseURL2 ='api/add-date-param'; + constructor(private apiRequest: ApiRequestService) { } + create(dateParam: DateParam,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL2, dateParam,params); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.spec.ts new file mode 100644 index 0000000..18d7b08 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DynamicTransactionService } from './dynamic-transaction.service'; + +describe('DynamicTransactionService', () => { + let service: DynamicTransactionService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DynamicTransactionService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.ts new file mode 100644 index 0000000..5392ebc --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamic-transaction.service.ts @@ -0,0 +1,63 @@ +import { HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { DynamicForm } from 'src/app/models/fnd/DynamicForm'; +@Injectable({ + providedIn: 'root' +}) +export class DynamicTransactionService { + private baseURL = 'api/dynamic_transaction'; + constructor(private apiRequest: ApiRequestService,) { } + getAll(page?:number, size?:number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + const _http = this.baseURL + '/all'; + return this.apiRequest.get(_http, params); +} + +// get listof data (GRID) +getByFormId(form_id:number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append('form_id', form_id.toString()); + return this.apiRequest.get(this.baseURL, params); +} + +/* getById(id: number) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.get(_http); +} */ +//get one data (read-only, update form) +getByIdAndFormId(id: number, form_id:number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append('form_id', form_id.toString()); + const _http = this.baseURL + '/' + id; + return this.apiRequest.get(_http, params); +} + + + + +create(dynamicForm: DynamicForm) :Observable { + return this.apiRequest.post(this.baseURL, dynamicForm); +} + +/* update(id: number, dynamicForm: DynamicForm) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.put(_http, dynamicForm); +} */ + +updateByIdAndFormId(id: number, form_id: number, dynamicForm: DynamicForm) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append('form_id', form_id.toString()); + const _http = this.baseURL + '/' + id; + return this.apiRequest.put(_http, dynamicForm, params); +} +delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.spec.ts new file mode 100644 index 0000000..645b7c4 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { DynamicformService } from './dynamicform.service'; + +describe('DynamicformService', () => { + let service: DynamicformService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(DynamicformService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.ts new file mode 100644 index 0000000..a263e3f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/dynamicform.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { Observable, ReplaySubject, Subject } from 'rxjs'; +import { ApiRequestService } from '../../services/api/api-request.service'; +import { HttpParams} from "@angular/common/http"; +import { Rn_Forms_Setup } from 'src/app/models/fnd/Rn_Forms_Setup'; +@Injectable({ + providedIn: 'root' +}) +export class DynamicformService { + private baseURL = 'api/form_setup'; + private buildDynamicFormURL = 'api/dynamic_form_build'; + constructor( private apiRequest: ApiRequestService,) { } + getAll(page?:number, size?:number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + +} + +getById(id: number) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.get(_http); +} + +create(rn_forms_setup: Rn_Forms_Setup) :Observable { + return this.apiRequest.post(this.baseURL, rn_forms_setup); +} + +update(id: number, rn_forms_setup: Rn_Forms_Setup) :Observable { + const _http = this.baseURL + '/' + id; + return this.apiRequest.put(_http, rn_forms_setup); +} + +buildDynamicForm(form_id?:number): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('form_id', form_id.toString()); + return this.apiRequest.get(this.buildDynamicFormURL, params); + +} +delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.spec.ts new file mode 100644 index 0000000..22ba84b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ExceptionRuleLibraryService } from './exception-rule-library.service'; + +describe('ExceptionRuleLibraryService', () => { + let service: ExceptionRuleLibraryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ExceptionRuleLibraryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.ts new file mode 100644 index 0000000..6ccea4e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/exception-rule-library.service.ts @@ -0,0 +1,34 @@ +import { HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Bcf_Exception_Rule_Library } from 'src/app/models/fnd/Bcf_Exception_Rule_Library '; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class ExceptionRuleLibraryService { + private exceptionRuleLibraryBaseURL = 'api/exception-rule-library'; + constructor(private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.exceptionRuleLibraryBaseURL, params); + } + + getById(id: number): Observable { + const _http = this.exceptionRuleLibraryBaseURL + "/" + id; + return this.apiRequest.get(_http); + } + + save(exception_rule: Bcf_Exception_Rule_Library): Observable { + return this.apiRequest.post(this.exceptionRuleLibraryBaseURL, exception_rule); + } + + update(id: number, exception_rule: Bcf_Exception_Rule_Library): Observable { + const _http = this.exceptionRuleLibraryBaseURL + "/" + id; + return this.apiRequest.put(_http, exception_rule); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.spec.ts new file mode 100644 index 0000000..6898988 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { ExtensionService } from './extension.service'; + +describe('ExtensionService', () => { + let service: ExtensionService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(ExtensionService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.ts new file mode 100644 index 0000000..f7213e2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/extension.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { HttpParams} from "@angular/common/http"; +import { ExtensionField } from 'src/app/models/fnd/ExtensionField'; +@Injectable({ + providedIn: 'root' +}) +export class ExtensionService { + private extensionAPI = 'api/extension'; + private extensionBuildAPI = 'api/extension_build'; + private lookupAPI = 'api/lookup_values'; + private dataTypeAPI = 'api/datatypes'; + constructor(private apiRequest: ApiRequestService) { } + + getAll(page?:number, size?:number): Observable { + //Create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append('page', typeof page === "number"? page.toString():"0"); + params = params.append('size', typeof size === "number"? size.toString():"1000"); + return this.apiRequest.get(this.extensionAPI, params); + +} + +getById(id: number) :Observable { + return this.apiRequest.get(this.extensionAPI + '/' + id); + +} + +create(extensionField: Object) :Observable { + //`${this.baseURL}` + return this.apiRequest.post(this.extensionAPI, extensionField); + +} + +update(id: number, extensionField: ExtensionField) :Observable { + return this.apiRequest.put(this.extensionAPI + "/" + id, extensionField); +} + +// http://localhost:9119/api/extension_build?account_id=admin&form_code=teacher_form +// build extension +buildExtension(account_id?:any, form_code?:string): Observable { + let params: HttpParams = new HttpParams(); + params = params.append('account_id', account_id.toString()); + params = params.append('form_code', form_code.toString()); + return this.apiRequest.get(this.extensionBuildAPI, params); +} + +// look up code (attribute, flex) +getLookupValues() :Observable { + return this.apiRequest.get(this.lookupAPI); +} + +// datatypes code (string, varchar, int etc) +getDataTypeValues() :Observable { + return this.apiRequest.get(this.dataTypeAPI); +} +delete(id:any){ + return this.apiRequest.delete(`api/extension/${id}`); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.spec.ts new file mode 100644 index 0000000..ccc5d47 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { IncomingwebhookService } from './incomingwebhook.service'; + +describe('IncomingwebhookService', () => { + let service: IncomingwebhookService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(IncomingwebhookService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.ts new file mode 100644 index 0000000..8fef3ad --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/incomingwebhook.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class IncomingwebhookService { + + constructor(private apiRequest: ApiRequestService) { } + incomegetall(){ + let _http = `api/incoming/getall`; + return this.apiRequest.get(_http); + } + incomepost(data:any){ + let _http=`api/incoming/save`; + return this.apiRequest.post(_http,data); + } + getById(id: number) { + const _http =`api/incoming/getbyid/${id}`; + return this.apiRequest.get(_http); + } + update(id: number, data:any): Observable { + const _http =`api/incoming/update/${id}`; + return this.apiRequest.put(_http,data); + } + indelete(id:any){ + let _http=`api/incoming/delete/${id}`; + return this.apiRequest.delete(_http,); + } + generateuserkey(){ + let _http=`api/incoming/genrateuserkey`; + return this.apiRequest.get(_http); + } + generateapikey(){ + let _http=`api/incoming/genrateapikey`; + return this.apiRequest.get(_http); + } + generatetokenkey(){ + let _http=`api/incoming/genratetokenkey`; + return this.apiRequest.get(_http); + } + generateurlkey(){ + let _http=`api/incoming/generateurl`; + return this.apiRequest.get(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.spec.ts new file mode 100644 index 0000000..4da5076 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { JobmanagementService } from './jobmanagement.service'; + +describe('JobmanagementService', () => { + let service: JobmanagementService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(JobmanagementService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.ts new file mode 100644 index 0000000..b9281b2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/jobmanagement.service.ts @@ -0,0 +1,39 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import{environment} from 'src/environments/environment'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class JobmanagementService { + baseurl = environment.jobmgurl; + private updateWorkflowURL = 'updateByid'; + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + public getAll() { + return this._http.get(`${this.baseurl}/sureconnect/getalljob`); + } + + public create(data: any){ + return this._http.post(`${this.baseurl}/sureconnect/createschedule`, data); + } + public update(data: any){ + return this._http.post(`${this.baseurl}/sureconnect/updateschedule`, data); + } + public pause(data:any){ + return this._http.post(`${this.baseurl}/sureconnect/pauseschedule`, data); + } + public runonce(data:any){ + return this._http.post(`${this.baseurl}/sureconnect/runschedule`, data); + } + public resume(data:any){ + return this._http.post(`${this.baseurl}/sureconnect/resumeschedule`, data); + } + public delete(val:any){ + return this._http.delete(`${this.baseurl}/sureconnect/deleteschedule/${val}`,); + } + updateLineById(id:number,data:any){ + let _http = this.updateWorkflowURL + "/"+id; + return this.apiRequest.put(_http,data); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.spec.ts new file mode 100644 index 0000000..5d1cebf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { OutgoingwebhookService } from './outgoingwebhook.service'; + +describe('OutgoingwebhookService', () => { + let service: OutgoingwebhookService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(OutgoingwebhookService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.ts new file mode 100644 index 0000000..16d441f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/outgoingwebhook.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class OutgoingwebhookService { + + constructor(private apiRequest: ApiRequestService) { } + getall(){ + let _http = `api/outgoing/getall`; + return this.apiRequest.get(_http); + } + getallentity(){ + let _http = `api/outgoing/getentity`; + return this.apiRequest.get(_http); + } + wall(){ + let _http = `api/webhookdata/getall`; + return this.apiRequest.get(_http); + } + post(data:any){ + let _http=`api/outgoing/save`; + return this.apiRequest.post(_http,data); + } + getById(id: number) { + const _http =`api/outgoing/getById/${id}`; + return this.apiRequest.get(_http); + } + update(id: number, data:any): Observable { + const _http =`api/outgoing/update/${id}`; + return this.apiRequest.put(_http,data); + } + update1(id: number, data:any): Observable { + const _http =`api/outgoing_lines/update/${id}`; + return this.apiRequest.put(_http,data); + } + delete(id:any){ + let _http=`api/outgoing/delete/${id}`; + return this.apiRequest.delete(_http,); + } + getallworkflow(){ + let _http = `token/webhook/Workflow/getall`; + return this.apiRequest.get(_http); + } + getbyidworkflow(id:any){ + let _http = `token/webhook/Workflow/get/${id}`; + return this.apiRequest.get(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.spec.ts new file mode 100644 index 0000000..e08320a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { QueryRunnerService } from './query-runner.service'; + +describe('QueryRunnerService', () => { + let service: QueryRunnerService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(QueryRunnerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.ts new file mode 100644 index 0000000..ce95e28 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/query-runner.service.ts @@ -0,0 +1,20 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +import { Observable } from 'rxjs'; +@Injectable({ + providedIn: 'root' +}) +export class QueryRunnerService { + private baseURL = "api/report-data"; + constructor(private apiRequest: ApiRequestService) { } + getById(report_id:number, page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("report_id", report_id.toString()); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + return this.apiRequest.get(this.baseURL, params); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.spec.ts new file mode 100644 index 0000000..057e7bf --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { RuleLibraryService } from './rule-library.service'; + +describe('RuleLibraryService', () => { + let service: RuleLibraryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(RuleLibraryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.ts new file mode 100644 index 0000000..8788468 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/rule-library.service.ts @@ -0,0 +1,76 @@ +import { HttpParams } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import { Observable } from 'rxjs'; +import { Bcf_Rule_Library } from 'src/app/models/fnd/Bcf_Rule_Library'; +import { RuleCopy, Rule } from 'src/app/models/fnd/RuleCopy'; +import { ApiRequestService } from '../api/api-request.service'; + +@Injectable({ + providedIn: 'root' +}) +export class RuleLibraryService { + private ruleLibraryBaseURL = 'code_extractor/rule_keyword/Rule_library_keyword'; + private copyRuleURL = 'api/rule-copy'; + private keywordurl='codeextractor/rulelib_new/rule_keyword1'; + private filedurl='codeextractor/rulelib_new/rule_keyword'; + private copyURL = 'code_extractor/rule_keyword/copyrule' + constructor(private apiRequest: ApiRequestService) { } + + copy(data: RuleCopy) { + return this.apiRequest.post(this.copyRuleURL, data); + } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + return this.apiRequest.get(this.ruleLibraryBaseURL, params); + } + + getById(id: number): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.get(_http); + } + + save(rule: Bcf_Rule_Library): Observable { + return this.apiRequest.post(this.ruleLibraryBaseURL, rule); + } + + update(id: number, rule: Bcf_Rule_Library): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.put(_http, rule); + } + delete(id: number): Observable { + const _http = this.ruleLibraryBaseURL + "/" + id; + return this.apiRequest.delete(_http); + } + keyword(id: number,keyword: any): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params= params.append("keyword",keyword); + return this.apiRequest.get(this.keywordurl, params); + } + + insertfile(id:any,data:any,keyword:any,){ + let params: HttpParams = new HttpParams(); + params = params.append("id", id.toString()); + params= params.append("selectedarea",data); + params= params.append("keyword",keyword); + console.log(params); + return this.apiRequest.get(this.filedurl, params); + } + + copyRule(technologyStack: string, objectType: string, subObjectType: string, service: string, newTechStackName: string, rule: Rule){ + let params: HttpParams = new HttpParams(); + params =params.append("technology_stack",technologyStack); + params =params.append("object_type",objectType); + params =params.append("sub_object_type",subObjectType); + params =params.append("service",service), + params=params.append("new_tech_stack_name",newTechStackName) + return this.apiRequest.post(this.copyURL,rule,params); + //return this.apiRequest.post(this.copydeployurl,params); + //return this.http.get(`${baseUrl}/api/getmodulename`,params); + + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/scheduler.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/scheduler.service.ts new file mode 100644 index 0000000..195b0c5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/scheduler.service.ts @@ -0,0 +1,89 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from '../api/helper'; +import{environment} from 'src/environments/environment'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class SchedulerService { + //baseurl='http://localhost:8085'; + baseurl = environment.jobUrl; + registrationurl = environment.registrationurl; + sureopsurl = environment.sureops; + communicationUrl = environment.communicationurl; + constructor(private _http: HttpClient,private apiRequest: ApiRequestService) { } + public getAllinfo() { + return this._http.get(`${this.baseurl}/jobpro/schedule`); + } + public getAllsceduler() { + return this._http.get(`${this.baseurl}/jobpro/getalljob`); + } + public createsceduler(data: any){ + return this._http.post(`${this.baseurl}/jobpro/schedule`, data); + } + public update(data: any){ + return this._http.post(`${this.baseurl}/jobpro/schedule`, data); + } + public pause(data:any){ + return this._http.post(`${this.baseurl}/jobpro/pauseschedule`, data); + } + public runonce(data:any){ + return this._http.post(`${this.baseurl}/jobpro/runschedule`, data); + } + public resume(data:any){ + return this._http.post(`${this.baseurl}/jobpro/resumeschedule`, data); + } + public delete(val:any){ + return this._http.delete(`${this.baseurl}/jobpro/deleteschedule/${val}`,); + } + + + public getAll() { + return this._http.get(`${this.baseurl}/jobpro/pipiline-completed`); + } + public getAllpipe() { + return this._http.get(`${this.baseurl}/jobpro/getAllPipeline`); + } + + public createpipe(data: any){ + return this._http.post(`${this.baseurl}/jobpro/addPipeline`, data); + } + public updatepipe(data: any){ + return this._http.post(`${this.baseurl}/jobpro/addPipeline`, data); + } + public create(data: any){ + return this._http.post(`${this.baseurl}/jobpro/schedule`,data); + } + public requ(id:any,data:any){ + return this._http.post(`${this.baseurl}/jobpro/requeue/${id}`,data); + } + public getalllogfile() { + return this._http.get(`${this.baseurl}/jobpro/get_allfile`); + } + public createfile(filename:any){ + return this._http.get(`${this.baseurl}/jobpro/createfile/${filename}`); + } + public readlogfile(id:any){ + return this._http.get(`${this.baseurl}/jobpro/readfile/${id}`) + } + public deletefile(id:any){ + return this._http.delete(`${this.baseurl}/jobpro/deletefile/${id}`); + } + public getAllRegistrations(){ + return this._http.get(`${this.registrationurl}/token/getall`); + } + + public getAllSureOps(): Observable{ + return this._http.get(`${this.sureopsurl}/sureops/get`) + } + + public getAllCommunication(){ + return this._http.get(`${this.communicationUrl}/Surecommunication/communication/jobtable/Com_jobTable`) + } + + public getAllwebhook(){ + return this.apiRequest.get('token/webhook/Workflow/web_flagN') + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.spec.ts new file mode 100644 index 0000000..3751a44 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { StdParamSetupService } from './std-param-setup.service'; + +describe('StdParamSetupService', () => { + let service: StdParamSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(StdParamSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.ts new file mode 100644 index 0000000..2211f99 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/std-param-setup.service.ts @@ -0,0 +1,17 @@ +import { Injectable } from '@angular/core'; +import { StdParam } from 'src/app/models/builder/StdParam'; +import { Observable } from 'rxjs'; +import { HttpParams } from '@angular/common/http'; +import { ApiRequestService } from '../api/api-request.service'; +@Injectable({ + providedIn: 'root' +}) +export class StdParamSetupService { + private baseURL ='api/add-std-param'; + constructor(private apiRequest: ApiRequestService) { } + create(stdParam: StdParam,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL, stdParam,params); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.spec.ts new file mode 100644 index 0000000..e894a8b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { StepperService } from './stepper.service'; + +describe('StepperService', () => { + let service: StepperService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(StepperService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.ts new file mode 100644 index 0000000..ecaf10b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/stepper.service.ts @@ -0,0 +1,71 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpParams,HttpResponse } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { UserInfoService } from '../user-info.service'; +@Injectable({ + providedIn: 'root' +}) +export class StepperService { + private baseURL = "api/student"; + private baseURL1= "api/studentwf_id"; + private baseURL3="api/currentObj"; + constructor( private http: HttpClient, + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService) { } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + + //update json object + update(id: number,projectSetup: any,current_json: any): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("current_json", current_json.toString()); + //const _http = "api/currentObj/" + id; + const _http = this.baseURL3 + "/" + id; + + return this.apiRequest.put(_http,projectSetup, params); + } + + + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + getBywfId(id: number): Observable { + const _http = this.baseURL1 + "/" + id; + return this.apiRequest.get(_http); + } + updatewfid(id: number, projectSetup: any): Observable { + const _http = this.baseURL1 + "/" + id; + return this.apiRequest.put(_http, projectSetup); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } + + + create(college:any): Observable { + console.log("in a service"); + console.log(college); + + + return this.apiRequest.post(this.baseURL, college); + } + public deleteApp(appName: string, force: boolean = true): Observable> { + return this.http.delete(this.buildUrl("/deleteApp"),{ params: { name: appName, force: String(force)}, observe: 'response' }); + } + private buildUrl(uri: string): string { + return this.baseURL+ uri; + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.spec.ts new file mode 100644 index 0000000..6cccd0a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { StudentaddService } from './studentadd.service'; + +describe('StudentaddService', () => { + let service: StudentaddService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(StudentaddService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.ts new file mode 100644 index 0000000..5492c12 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/studentadd.service.ts @@ -0,0 +1,47 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from "@angular/common/http"; +import { student} from "src/app/models/fnd/Studentadd"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { UserInfoService } from "../user-info.service"; +@Injectable({ + providedIn: 'root' +}) +export class StudentaddService { + private baseURL = "api/studentadd"; + + constructor(private apiRequest: ApiRequestService, + private userInfoService: UserInfoService) { } + + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(college: student,current_json: any): Observable { + return this.apiRequest.post(this.baseURL, college); + } + + + + + update(id: number, projectSetup: student,current_json: any ): Observable { + let params: HttpParams = new HttpParams(); + params = params.append("current_json", current_json.toString()); + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup,params); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/university.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/university.service.ts new file mode 100644 index 0000000..1364856 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/university.service.ts @@ -0,0 +1,44 @@ +import { Injectable } from '@angular/core'; +import { HttpParams } from "@angular/common/http"; +import { university } from "../../models/fnd/university"; +import { Observable } from "rxjs"; +import { ApiRequestService } from "../api/api-request.service"; +import { UserInfoService } from "../user-info.service"; + +@Injectable({ + providedIn: 'root' +}) +export class UniversityService { + + private baseURL = "api/author"; + constructor( + private apiRequest: ApiRequestService, + private userInfoService: UserInfoService + ) { } + getAll(page?: number, size?: number): Observable { + //Create Request URL params + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + //const _http = this.baseURL + '/all'; + console.log(this.userInfoService.getUserInfo().userId); + let id = this.userInfoService.getUserInfo().userId; + return this.apiRequest.get(this.baseURL, params); + } + getById(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.get(_http); + } + create(college: university): Observable { + return this.apiRequest.post(this.baseURL, college); + } + + update(id: number, projectSetup: university): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.put(_http, projectSetup); + } + delete(id: number): Observable { + const _http = this.baseURL + "/" + id; + return this.apiRequest.delete(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.spec.ts new file mode 100644 index 0000000..41d41c9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WhereParamSetupService } from './where-param-setup.service'; + +describe('WhereParamSetupService', () => { + let service: WhereParamSetupService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WhereParamSetupService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.ts new file mode 100644 index 0000000..ec9bb4f --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/where-param-setup.service.ts @@ -0,0 +1,25 @@ +import { Injectable } from '@angular/core'; +import { ColumnList } from 'src/app/models/builder/ColumnList'; +import { Observable } from 'rxjs'; +import { ApiRequestService } from '../api/api-request.service'; +import { WhereParam } from 'src/app/models/builder/WhereParam'; +import { HttpParams } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class WhereParamSetupService { + private columnListUrl ='api/column-list'; + private baseURL2 ='api/add-where-param'; + constructor(private apiRequest: ApiRequestService) { } + getColumns(id: number): Observable { + const _http = this.columnListUrl + "/" + id; + return this.apiRequest.get(_http); + } + + create(whereParam: WhereParam,reportId: number) :Observable { + let params: HttpParams = new HttpParams(); + params = params.append("reportId", reportId.toString()); + return this.apiRequest.post(this.baseURL2, whereParam,params); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.spec.ts new file mode 100644 index 0000000..7b38791 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { WorkflowDataService } from './workflow-data.service'; + +describe('WorkflowDataService', () => { + let service: WorkflowDataService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(WorkflowDataService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.ts new file mode 100644 index 0000000..e640df7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/fnd/workflow-data.service.ts @@ -0,0 +1,61 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; +import { ApiRequestService } from "src/app/services/api/api-request.service"; + +@Injectable({ + providedIn: 'root' +}) +export class WorkflowDataService { + private getAllURL = 'work'; + private addDataURl = 'work'; + private editDataURL = 'work'; + private deleteURL ='work'; + private getByIdURL = 'work'; + private updateWorkflowURL = 'updateByid'; + private fileurl ='/sureops/createfile'; + private callurl='workflow/workflow/callworkflow' + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + getAll(page?: number, size?: number): Observable { + // create Request URL params + let me = this; + let params: HttpParams = new HttpParams(); + params = params.append("page", typeof page === "number" ? page.toString() : "0"); + params = params.append("size", typeof size === "number" ? size.toString() : "1000"); + // params = params.append("module_id", module_id.toString()); + // get all + return this.apiRequest.get(this.getAllURL, params); + } +getcallall(){ + return this.apiRequest.get(this.callurl); +} + create(data:any): Observable + { + return this.apiRequest.post(this.addDataURl, data); + } + + delete(id:number){ + let _http = this.deleteURL + "/" + id; + return this.apiRequest.delete(_http); + } + + getById(id:number) + { + let _http = this.getByIdURL + "/"+id; + return this.apiRequest.get(_http); + } + + updateLineById(id:number,data:any) + { + let _http = this.updateWorkflowURL + "/"+id; + return this.apiRequest.put(_http,data); + } + + update(id:number,data:any) + { + let _http = this.editDataURL + "/"+id; + return this.apiRequest.put(_http,data); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/jwt.interceptor.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/jwt.interceptor.ts new file mode 100644 index 0000000..257cd63 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/jwt.interceptor.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http'; +import { Observable } from 'rxjs'; +import { UserInfoService } from './user-info.service'; + +@Injectable() +export class JwtInterceptor implements HttpInterceptor { + constructor(private userInfoService: UserInfoService) {} + + intercept(request: HttpRequest, next: HttpHandler): Observable> { + // add authorization header with jwt token if available + let currentUser = this.userInfoService.getUserInfo(); + if (currentUser && currentUser.token) { + request = request.clone({ + setHeaders: { + Authorization: `Bearer ${currentUser.token}` + } + }); + } + return next.handle(request); + } +} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/main.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/main.service.ts new file mode 100644 index 0000000..9aaaa85 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/main.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { JwtHelperService } from '@auth0/angular-jwt'; +import { HttpClient } from '@angular/common/http'; + +@Injectable({ + providedIn: 'root' +}) +export class MainService { + token = sessionStorage.getItem('token'); + jwtHelper: JwtHelperService = new JwtHelperService(); + + constructor(private http: HttpClient) { } + + getIP() { + return this.http.get(`https://api.ipify.org?format=json`) + .toPromise() + .then(result => result) + .catch(error => error); + } + + getUser() { + // return this.http.get(`${this.url}/get-annouce/${month}/${year}`) + return this.http.get(`https://randomuser.me/api/?results=100`) + .toPromise() + .then(result => result) + .catch(error => error); + } + + getUserTest() { + return this.http.get(`https://randomuser.me/api/?results=100`) + .toPromise() + .then(result => result) + .catch(error => error); + } + +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/notification.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/notification.service.ts new file mode 100644 index 0000000..5ddf252 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/notification.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { Subject } from 'rxjs'; + +export enum NotificationType { + Warning = "warning", + Info = "info", + Danger = "danger" +} + +export class Notification { + constructor( + public readonly type: NotificationType, + public readonly message: string, + public readonly detail: string) { + } +} + +@Injectable({ + providedIn: 'root' +}) +export class NotificationService { + private readonly _notifications = new Subject(); + + public readonly notifications = this._notifications.asObservable(); + + public add(notification: Notification) { + if (!notification.message || notification.message.trim() == ""){ + console.error("ERROR NOTIFICATION WITHOUT MESSAGE: " + notification) + } + this._notifications.next(notification); + } + + public flushNotification() { + this._notifications.next(null); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.spec.ts new file mode 100644 index 0000000..51431d3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { TypesService } from './types.service'; + +describe('TypesService', () => { + let service: TypesService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(TypesService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.ts new file mode 100644 index 0000000..308f434 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/types.service.ts @@ -0,0 +1,38 @@ +import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; +import baseUrl from 'src/app/services/api/helper'; +import { Observable } from "rxjs"; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class TypesService { + private baseURL = "sec_type"; + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService,) { } + // create + public create(data: any){ + return this._http.post(`${baseUrl}/Sec_type`, data); + } + + // update + public update(id:number,data:any): Observable{ + //const _http = this.baseURL + "/" + id; + //return this.apiRequest.put(_http, data); + return this._http.put(`${baseUrl}/Sec_type/${id}`, data); + } + // get all + public getAll(){ + return this._http.get(`${baseUrl}/Sec_type`); + } + + // get one + public getOne(Id: any){ + return this._http.get(`${baseUrl}/Sec_type/${Id}`); + } + + // delete + public delete(id: any){ + return this._http.delete(`${baseUrl}/Sec_type/${id}`); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.spec.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.spec.ts new file mode 100644 index 0000000..f8eb94a --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { UserstoryService } from './userstory.service'; + +describe('UserstoryService', () => { + let service: UserstoryService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(UserstoryService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.ts new file mode 100644 index 0000000..6bf9112 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/sureboard/userstory.service.ts @@ -0,0 +1,51 @@ +import { Injectable } from '@angular/core'; +import { HttpClient, HttpHeaders, HttpParams } from "@angular/common/http"; +import { Observable } from 'rxjs'; +import baseUrl from 'src/app/services/api/helper'; +import { ApiRequestService } from "src/app/services/api/api-request.service"; +@Injectable({ + providedIn: 'root' +}) +export class UserstoryService { + private addDataURl = 'pmUser'; + + constructor(private _http: HttpClient, + private apiRequest: ApiRequestService) { } + getall(){ + return this._http.get(`${baseUrl}/pmUser`); + } + getById(id: number): Observable { + const _http = this.addDataURl + "/" + id; + return this.apiRequest.get(_http); + } + create(data:any,files:any): Observable { + const s = JSON.stringify(data); + const formData:FormData = new FormData(); + formData.append("o1",s); + for(let i=0;i { + const s =JSON.stringify(data); + const formData:FormData=new FormData(); + formData.append("o1",s); + for(let i=0;i { + const _http = this.addDataURl + "/" + id; + return this.apiRequest.delete(_http); + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/user-info.service.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/user-info.service.ts new file mode 100644 index 0000000..b9d3779 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/app/services/user-info.service.ts @@ -0,0 +1,122 @@ +import { HttpClient } from '@angular/common/http'; +import { Injectable } from '@angular/core'; +import baseUrl from './api/helper'; +export interface UserInStorage{ + userId:string; + email:string; + displayName:string; + username: string; + roles: string, + token:string; +} +export interface LoginInfoInStorage{ + success:boolean; + message:string; + landingPage:string; + user?:UserInStorage; +} +@Injectable() +export class UserInfoService { + + public currentUserKey:string="currentUser"; + public storage:Storage = sessionStorage; // <--- you may switch between sessionStorage or LocalStrage (only one place to change) + + + + constructor( private _http: HttpClient, + ) {} + + //Store userinfo from session storage + storeUserInfo(userInfoString:string) { + this.storage.setItem(this.currentUserKey, userInfoString); + } + + //Remove userinfo from session storage + removeUserInfo() { + this.storage.removeItem(this.currentUserKey); + } + + //Get userinfo from session storage + getUserInfo():UserInStorage|null { + try{ + let userInfoString:string = this.storage.getItem(this.currentUserKey); + if (userInfoString) { + let userObj:UserInStorage = JSON.parse(this.storage.getItem(this.currentUserKey)); + return userObj; + } + else{ + return null; + } + } + catch (e) { + return null; + } + } + + isLoggedIn():boolean { + return this.storage.getItem(this.currentUserKey)?true:false; + } + + //Get User's Display name from session storage + getUserName():string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.displayName + } + return "no-user"; + } + + getEmail():string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.email + } + return "no-user"; + } + + + getRoles(): string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.roles + } + return null; + } + + + // Get User Id from session storage + getUserId(): string { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj!== null) { + return userObj.userId; + } + return "no-user"; + } + + getStoredToken():string|null { + let userObj:UserInStorage = this.getUserInfo(); + if (userObj !== null) { + return userObj.token; + } + return null; + } + + public getAllUsers(){ + return this._http.get(`${baseUrl}/api/all-users`); + } + + public getUserById(id: any){ + return this._http.get(`${baseUrl}/api/get-one/${id}`); + } + + public updateUserById(id: any, user: any){ + return this._http.put(`${baseUrl}/api/org-users/${id}`, user); + } + + public deleteUserById(id: any){ + return this._http.delete(`${baseUrl}/api/org-users/${id}`); + } +public logout(){ + return this._http.get(`${baseUrl}/token/logout`); +} +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css new file mode 100644 index 0000000..45be443 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css @@ -0,0 +1,2198 @@ +/* + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ +/* FONT PATH + * -------------------------- */ +@font-face { + font-family: 'FontAwesome'; + src: url('../fonts/fontawesome-webfont.woff2') format('woff2'), url('../fonts/fontawesome-webfont.woff') format('woff'); + font-weight: normal; + font-style: normal; +} +.fa { + display: inline-block; + font: normal normal normal 14px/1 FontAwesome; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +/* makes the font 33% larger relative to the icon container */ +.fa-lg { + font-size: 1.33333333em; + line-height: 0.75em; + vertical-align: -15%; +} +.fa-2x { + font-size: 2em; +} +.fa-3x { + font-size: 3em; +} +.fa-4x { + font-size: 4em; +} +.fa-5x { + font-size: 5em; +} +.fa-fw { + width: 1.28571429em; + text-align: center; +} +.fa-ul { + padding-left: 0; + margin-left: 2.14285714em; + list-style-type: none; +} +.fa-ul > li { + position: relative; +} +.fa-li { + position: absolute; + left: -2.14285714em; + width: 2.14285714em; + top: 0.14285714em; + text-align: center; +} +.fa-li.fa-lg { + left: -1.85714286em; +} +.fa-border { + padding: .2em .25em .15em; + border: solid 0.08em #eeeeee; + border-radius: .1em; +} +.fa-pull-left { + float: left; +} +.fa-pull-right { + float: right; +} +.fa.fa-pull-left { + margin-right: .3em; +} +.fa.fa-pull-right { + margin-left: .3em; +} +/* Deprecated as of 4.4.0 */ +.pull-right { + float: right; +} +.pull-left { + float: left; +} +.fa.pull-left { + margin-right: .3em; +} +.fa.pull-right { + margin-left: .3em; +} +.fa-spin { + -webkit-animation: fa-spin 2s infinite linear; + animation: fa-spin 2s infinite linear; +} +.fa-pulse { + -webkit-animation: fa-spin 1s infinite steps(8); + animation: fa-spin 1s infinite steps(8); +} +@-webkit-keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes fa-spin { + 0% { + -webkit-transform: rotate(0deg); + transform: rotate(0deg); + } + 100% { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +.fa-rotate-90 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)"; + -webkit-transform: rotate(90deg); + -ms-transform: rotate(90deg); + transform: rotate(90deg); +} +.fa-rotate-180 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)"; + -webkit-transform: rotate(180deg); + -ms-transform: rotate(180deg); + transform: rotate(180deg); +} +.fa-rotate-270 { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)"; + -webkit-transform: rotate(270deg); + -ms-transform: rotate(270deg); + transform: rotate(270deg); +} +.fa-flip-horizontal { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)"; + -webkit-transform: scale(-1, 1); + -ms-transform: scale(-1, 1); + transform: scale(-1, 1); +} +.fa-flip-vertical { + -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"; + -webkit-transform: scale(1, -1); + -ms-transform: scale(1, -1); + transform: scale(1, -1); +} +:root .fa-rotate-90, +:root .fa-rotate-180, +:root .fa-rotate-270, +:root .fa-flip-horizontal, +:root .fa-flip-vertical { + filter: none; +} +.fa-stack { + position: relative; + display: inline-block; + width: 2em; + height: 2em; + line-height: 2em; + vertical-align: middle; +} +.fa-stack-1x, +.fa-stack-2x { + position: absolute; + left: 0; + width: 100%; + text-align: center; +} +.fa-stack-1x { + line-height: inherit; +} +.fa-stack-2x { + font-size: 2em; +} +.fa-inverse { + color: #ffffff; +} +/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen + readers do not read off random characters that represent icons */ +.fa-glass:before { + content: "\f000"; +} +.fa-music:before { + content: "\f001"; +} +.fa-search:before { + content: "\f002"; +} +.fa-envelope-o:before { + content: "\f003"; +} +.fa-heart:before { + content: "\f004"; +} +.fa-star:before { + content: "\f005"; +} +.fa-star-o:before { + content: "\f006"; +} +.fa-user:before { + content: "\f007"; +} +.fa-film:before { + content: "\f008"; +} +.fa-th-large:before { + content: "\f009"; +} +.fa-th:before { + content: "\f00a"; +} +.fa-th-list:before { + content: "\f00b"; +} +.fa-check:before { + content: "\f00c"; +} +.fa-remove:before, +.fa-close:before, +.fa-times:before { + content: "\f00d"; +} +.fa-search-plus:before { + content: "\f00e"; +} +.fa-search-minus:before { + content: "\f010"; +} +.fa-power-off:before { + content: "\f011"; +} +.fa-signal:before { + content: "\f012"; +} +.fa-gear:before, +.fa-cog:before { + content: "\f013"; +} +.fa-trash-o:before { + content: "\f014"; +} +.fa-home:before { + content: "\f015"; +} +.fa-file-o:before { + content: "\f016"; +} +.fa-clock-o:before { + content: "\f017"; +} +.fa-road:before { + content: "\f018"; +} +.fa-download:before { + content: "\f019"; +} +.fa-arrow-circle-o-down:before { + content: "\f01a"; +} +.fa-arrow-circle-o-up:before { + content: "\f01b"; +} +.fa-inbox:before { + content: "\f01c"; +} +.fa-play-circle-o:before { + content: "\f01d"; +} +.fa-rotate-right:before, +.fa-repeat:before { + content: "\f01e"; +} +.fa-refresh:before { + content: "\f021"; +} +.fa-list-alt:before { + content: "\f022"; +} +.fa-lock:before { + content: "\f023"; +} +.fa-flag:before { + content: "\f024"; +} +.fa-headphones:before { + content: "\f025"; +} +.fa-volume-off:before { + content: "\f026"; +} +.fa-volume-down:before { + content: "\f027"; +} +.fa-volume-up:before { + content: "\f028"; +} +.fa-qrcode:before { + content: "\f029"; +} +.fa-barcode:before { + content: "\f02a"; +} +.fa-tag:before { + content: "\f02b"; +} +.fa-tags:before { + content: "\f02c"; +} +.fa-book:before { + content: "\f02d"; +} +.fa-bookmark:before { + content: "\f02e"; +} +.fa-print:before { + content: "\f02f"; +} +.fa-camera:before { + content: "\f030"; +} +.fa-font:before { + content: "\f031"; +} +.fa-bold:before { + content: "\f032"; +} +.fa-italic:before { + content: "\f033"; +} +.fa-text-height:before { + content: "\f034"; +} +.fa-text-width:before { + content: "\f035"; +} +.fa-align-left:before { + content: "\f036"; +} +.fa-align-center:before { + content: "\f037"; +} +.fa-align-right:before { + content: "\f038"; +} +.fa-align-justify:before { + content: "\f039"; +} +.fa-list:before { + content: "\f03a"; +} +.fa-dedent:before, +.fa-outdent:before { + content: "\f03b"; +} +.fa-indent:before { + content: "\f03c"; +} +.fa-video-camera:before { + content: "\f03d"; +} +.fa-photo:before, +.fa-image:before, +.fa-picture-o:before { + content: "\f03e"; +} +.fa-pencil:before { + content: "\f040"; +} +.fa-map-marker:before { + content: "\f041"; +} +.fa-adjust:before { + content: "\f042"; +} +.fa-tint:before { + content: "\f043"; +} +.fa-edit:before, +.fa-pencil-square-o:before { + content: "\f044"; +} +.fa-share-square-o:before { + content: "\f045"; +} +.fa-check-square-o:before { + content: "\f046"; +} +.fa-arrows:before { + content: "\f047"; +} +.fa-step-backward:before { + content: "\f048"; +} +.fa-fast-backward:before { + content: "\f049"; +} +.fa-backward:before { + content: "\f04a"; +} +.fa-play:before { + content: "\f04b"; +} +.fa-pause:before { + content: "\f04c"; +} +.fa-stop:before { + content: "\f04d"; +} +.fa-forward:before { + content: "\f04e"; +} +.fa-fast-forward:before { + content: "\f050"; +} +.fa-step-forward:before { + content: "\f051"; +} +.fa-eject:before { + content: "\f052"; +} +.fa-chevron-left:before { + content: "\f053"; +} +.fa-chevron-right:before { + content: "\f054"; +} +.fa-plus-circle:before { + content: "\f055"; +} +.fa-minus-circle:before { + content: "\f056"; +} +.fa-times-circle:before { + content: "\f057"; +} +.fa-check-circle:before { + content: "\f058"; +} +.fa-question-circle:before { + content: "\f059"; +} +.fa-info-circle:before { + content: "\f05a"; +} +.fa-crosshairs:before { + content: "\f05b"; +} +.fa-times-circle-o:before { + content: "\f05c"; +} +.fa-check-circle-o:before { + content: "\f05d"; +} +.fa-ban:before { + content: "\f05e"; +} +.fa-arrow-left:before { + content: "\f060"; +} +.fa-arrow-right:before { + content: "\f061"; +} +.fa-arrow-up:before { + content: "\f062"; +} +.fa-arrow-down:before { + content: "\f063"; +} +.fa-mail-forward:before, +.fa-share:before { + content: "\f064"; +} +.fa-expand:before { + content: "\f065"; +} +.fa-compress:before { + content: "\f066"; +} +.fa-plus:before { + content: "\f067"; +} +.fa-minus:before { + content: "\f068"; +} +.fa-asterisk:before { + content: "\f069"; +} +.fa-exclamation-circle:before { + content: "\f06a"; +} +.fa-gift:before { + content: "\f06b"; +} +.fa-leaf:before { + content: "\f06c"; +} +.fa-fire:before { + content: "\f06d"; +} +.fa-eye:before { + content: "\f06e"; +} +.fa-eye-slash:before { + content: "\f070"; +} +.fa-warning:before, +.fa-exclamation-triangle:before { + content: "\f071"; +} +.fa-plane:before { + content: "\f072"; +} +.fa-calendar:before { + content: "\f073"; +} +.fa-random:before { + content: "\f074"; +} +.fa-comment:before { + content: "\f075"; +} +.fa-magnet:before { + content: "\f076"; +} +.fa-chevron-up:before { + content: "\f077"; +} +.fa-chevron-down:before { + content: "\f078"; +} +.fa-retweet:before { + content: "\f079"; +} +.fa-shopping-cart:before { + content: "\f07a"; +} +.fa-folder:before { + content: "\f07b"; +} +.fa-folder-open:before { + content: "\f07c"; +} +.fa-arrows-v:before { + content: "\f07d"; +} +.fa-arrows-h:before { + content: "\f07e"; +} +.fa-bar-chart-o:before, +.fa-bar-chart:before { + content: "\f080"; +} +.fa-twitter-square:before { + content: "\f081"; +} +.fa-facebook-square:before { + content: "\f082"; +} +.fa-camera-retro:before { + content: "\f083"; +} +.fa-key:before { + content: "\f084"; +} +.fa-gears:before, +.fa-cogs:before { + content: "\f085"; +} +.fa-comments:before { + content: "\f086"; +} +.fa-thumbs-o-up:before { + content: "\f087"; +} +.fa-thumbs-o-down:before { + content: "\f088"; +} +.fa-star-half:before { + content: "\f089"; +} +.fa-heart-o:before { + content: "\f08a"; +} +.fa-sign-out:before { + content: "\f08b"; +} +.fa-linkedin-square:before { + content: "\f08c"; +} +.fa-thumb-tack:before { + content: "\f08d"; +} +.fa-external-link:before { + content: "\f08e"; +} +.fa-sign-in:before { + content: "\f090"; +} +.fa-trophy:before { + content: "\f091"; +} +.fa-github-square:before { + content: "\f092"; +} +.fa-upload:before { + content: "\f093"; +} +.fa-lemon-o:before { + content: "\f094"; +} +.fa-phone:before { + content: "\f095"; +} +.fa-square-o:before { + content: "\f096"; +} +.fa-bookmark-o:before { + content: "\f097"; +} +.fa-phone-square:before { + content: "\f098"; +} +.fa-twitter:before { + content: "\f099"; +} +.fa-facebook-f:before, +.fa-facebook:before { + content: "\f09a"; +} +.fa-github:before { + content: "\f09b"; +} +.fa-unlock:before { + content: "\f09c"; +} +.fa-credit-card:before { + content: "\f09d"; +} +.fa-feed:before, +.fa-rss:before { + content: "\f09e"; +} +.fa-hdd-o:before { + content: "\f0a0"; +} +.fa-bullhorn:before { + content: "\f0a1"; +} +.fa-bell:before { + content: "\f0f3"; +} +.fa-certificate:before { + content: "\f0a3"; +} +.fa-hand-o-right:before { + content: "\f0a4"; +} +.fa-hand-o-left:before { + content: "\f0a5"; +} +.fa-hand-o-up:before { + content: "\f0a6"; +} +.fa-hand-o-down:before { + content: "\f0a7"; +} +.fa-arrow-circle-left:before { + content: "\f0a8"; +} +.fa-arrow-circle-right:before { + content: "\f0a9"; +} +.fa-arrow-circle-up:before { + content: "\f0aa"; +} +.fa-arrow-circle-down:before { + content: "\f0ab"; +} +.fa-globe:before { + content: "\f0ac"; +} +.fa-wrench:before { + content: "\f0ad"; +} +.fa-tasks:before { + content: "\f0ae"; +} +.fa-filter:before { + content: "\f0b0"; +} +.fa-briefcase:before { + content: "\f0b1"; +} +.fa-arrows-alt:before { + content: "\f0b2"; +} +.fa-group:before, +.fa-users:before { + content: "\f0c0"; +} +.fa-chain:before, +.fa-link:before { + content: "\f0c1"; +} +.fa-cloud:before { + content: "\f0c2"; +} +.fa-flask:before { + content: "\f0c3"; +} +.fa-cut:before, +.fa-scissors:before { + content: "\f0c4"; +} +.fa-copy:before, +.fa-files-o:before { + content: "\f0c5"; +} +.fa-paperclip:before { + content: "\f0c6"; +} +.fa-save:before, +.fa-floppy-o:before { + content: "\f0c7"; +} +.fa-square:before { + content: "\f0c8"; +} +.fa-navicon:before, +.fa-reorder:before, +.fa-bars:before { + content: "\f0c9"; +} +.fa-list-ul:before { + content: "\f0ca"; +} +.fa-list-ol:before { + content: "\f0cb"; +} +.fa-strikethrough:before { + content: "\f0cc"; +} +.fa-underline:before { + content: "\f0cd"; +} +.fa-table:before { + content: "\f0ce"; +} +.fa-magic:before { + content: "\f0d0"; +} +.fa-truck:before { + content: "\f0d1"; +} +.fa-pinterest:before { + content: "\f0d2"; +} +.fa-pinterest-square:before { + content: "\f0d3"; +} +.fa-google-plus-square:before { + content: "\f0d4"; +} +.fa-google-plus:before { + content: "\f0d5"; +} +.fa-money:before { + content: "\f0d6"; +} +.fa-caret-down:before { + content: "\f0d7"; +} +.fa-caret-up:before { + content: "\f0d8"; +} +.fa-caret-left:before { + content: "\f0d9"; +} +.fa-caret-right:before { + content: "\f0da"; +} +.fa-columns:before { + content: "\f0db"; +} +.fa-unsorted:before, +.fa-sort:before { + content: "\f0dc"; +} +.fa-sort-down:before, +.fa-sort-desc:before { + content: "\f0dd"; +} +.fa-sort-up:before, +.fa-sort-asc:before { + content: "\f0de"; +} +.fa-envelope:before { + content: "\f0e0"; +} +.fa-linkedin:before { + content: "\f0e1"; +} +.fa-rotate-left:before, +.fa-undo:before { + content: "\f0e2"; +} +.fa-legal:before, +.fa-gavel:before { + content: "\f0e3"; +} +.fa-dashboard:before, +.fa-tachometer:before { + content: "\f0e4"; +} +.fa-comment-o:before { + content: "\f0e5"; +} +.fa-comments-o:before { + content: "\f0e6"; +} +.fa-flash:before, +.fa-bolt:before { + content: "\f0e7"; +} +.fa-sitemap:before { + content: "\f0e8"; +} +.fa-umbrella:before { + content: "\f0e9"; +} +.fa-paste:before, +.fa-clipboard:before { + content: "\f0ea"; +} +.fa-lightbulb-o:before { + content: "\f0eb"; +} +.fa-exchange:before { + content: "\f0ec"; +} +.fa-cloud-download:before { + content: "\f0ed"; +} +.fa-cloud-upload:before { + content: "\f0ee"; +} +.fa-user-md:before { + content: "\f0f0"; +} +.fa-stethoscope:before { + content: "\f0f1"; +} +.fa-suitcase:before { + content: "\f0f2"; +} +.fa-bell-o:before { + content: "\f0a2"; +} +.fa-coffee:before { + content: "\f0f4"; +} +.fa-cutlery:before { + content: "\f0f5"; +} +.fa-file-text-o:before { + content: "\f0f6"; +} +.fa-building-o:before { + content: "\f0f7"; +} +.fa-hospital-o:before { + content: "\f0f8"; +} +.fa-ambulance:before { + content: "\f0f9"; +} +.fa-medkit:before { + content: "\f0fa"; +} +.fa-fighter-jet:before { + content: "\f0fb"; +} +.fa-beer:before { + content: "\f0fc"; +} +.fa-h-square:before { + content: "\f0fd"; +} +.fa-plus-square:before { + content: "\f0fe"; +} +.fa-angle-double-left:before { + content: "\f100"; +} +.fa-angle-double-right:before { + content: "\f101"; +} +.fa-angle-double-up:before { + content: "\f102"; +} +.fa-angle-double-down:before { + content: "\f103"; +} +.fa-angle-left:before { + content: "\f104"; +} +.fa-angle-right:before { + content: "\f105"; +} +.fa-angle-up:before { + content: "\f106"; +} +.fa-angle-down:before { + content: "\f107"; +} +.fa-desktop:before { + content: "\f108"; +} +.fa-laptop:before { + content: "\f109"; +} +.fa-tablet:before { + content: "\f10a"; +} +.fa-mobile-phone:before, +.fa-mobile:before { + content: "\f10b"; +} +.fa-circle-o:before { + content: "\f10c"; +} +.fa-quote-left:before { + content: "\f10d"; +} +.fa-quote-right:before { + content: "\f10e"; +} +.fa-spinner:before { + content: "\f110"; +} +.fa-circle:before { + content: "\f111"; +} +.fa-mail-reply:before, +.fa-reply:before { + content: "\f112"; +} +.fa-github-alt:before { + content: "\f113"; +} +.fa-folder-o:before { + content: "\f114"; +} +.fa-folder-open-o:before { + content: "\f115"; +} +.fa-smile-o:before { + content: "\f118"; +} +.fa-frown-o:before { + content: "\f119"; +} +.fa-meh-o:before { + content: "\f11a"; +} +.fa-gamepad:before { + content: "\f11b"; +} +.fa-keyboard-o:before { + content: "\f11c"; +} +.fa-flag-o:before { + content: "\f11d"; +} +.fa-flag-checkered:before { + content: "\f11e"; +} +.fa-terminal:before { + content: "\f120"; +} +.fa-code:before { + content: "\f121"; +} +.fa-mail-reply-all:before, +.fa-reply-all:before { + content: "\f122"; +} +.fa-star-half-empty:before, +.fa-star-half-full:before, +.fa-star-half-o:before { + content: "\f123"; +} +.fa-location-arrow:before { + content: "\f124"; +} +.fa-crop:before { + content: "\f125"; +} +.fa-code-fork:before { + content: "\f126"; +} +.fa-unlink:before, +.fa-chain-broken:before { + content: "\f127"; +} +.fa-question:before { + content: "\f128"; +} +.fa-info:before { + content: "\f129"; +} +.fa-exclamation:before { + content: "\f12a"; +} +.fa-superscript:before { + content: "\f12b"; +} +.fa-subscript:before { + content: "\f12c"; +} +.fa-eraser:before { + content: "\f12d"; +} +.fa-puzzle-piece:before { + content: "\f12e"; +} +.fa-microphone:before { + content: "\f130"; +} +.fa-microphone-slash:before { + content: "\f131"; +} +.fa-shield:before { + content: "\f132"; +} +.fa-calendar-o:before { + content: "\f133"; +} +.fa-fire-extinguisher:before { + content: "\f134"; +} +.fa-rocket:before { + content: "\f135"; +} +.fa-maxcdn:before { + content: "\f136"; +} +.fa-chevron-circle-left:before { + content: "\f137"; +} +.fa-chevron-circle-right:before { + content: "\f138"; +} +.fa-chevron-circle-up:before { + content: "\f139"; +} +.fa-chevron-circle-down:before { + content: "\f13a"; +} +.fa-html5:before { + content: "\f13b"; +} +.fa-css3:before { + content: "\f13c"; +} +.fa-anchor:before { + content: "\f13d"; +} +.fa-unlock-alt:before { + content: "\f13e"; +} +.fa-bullseye:before { + content: "\f140"; +} +.fa-ellipsis-h:before { + content: "\f141"; +} +.fa-ellipsis-v:before { + content: "\f142"; +} +.fa-rss-square:before { + content: "\f143"; +} +.fa-play-circle:before { + content: "\f144"; +} +.fa-ticket:before { + content: "\f145"; +} +.fa-minus-square:before { + content: "\f146"; +} +.fa-minus-square-o:before { + content: "\f147"; +} +.fa-level-up:before { + content: "\f148"; +} +.fa-level-down:before { + content: "\f149"; +} +.fa-check-square:before { + content: "\f14a"; +} +.fa-pencil-square:before { + content: "\f14b"; +} +.fa-external-link-square:before { + content: "\f14c"; +} +.fa-share-square:before { + content: "\f14d"; +} +.fa-compass:before { + content: "\f14e"; +} +.fa-toggle-down:before, +.fa-caret-square-o-down:before { + content: "\f150"; +} +.fa-toggle-up:before, +.fa-caret-square-o-up:before { + content: "\f151"; +} +.fa-toggle-right:before, +.fa-caret-square-o-right:before { + content: "\f152"; +} +.fa-euro:before, +.fa-eur:before { + content: "\f153"; +} +.fa-gbp:before { + content: "\f154"; +} +.fa-dollar:before, +.fa-usd:before { + content: "\f155"; +} +.fa-rupee:before, +.fa-inr:before { + content: "\f156"; +} +.fa-cny:before, +.fa-rmb:before, +.fa-yen:before, +.fa-jpy:before { + content: "\f157"; +} +.fa-ruble:before, +.fa-rouble:before, +.fa-rub:before { + content: "\f158"; +} +.fa-won:before, +.fa-krw:before { + content: "\f159"; +} +.fa-bitcoin:before, +.fa-btc:before { + content: "\f15a"; +} +.fa-file:before { + content: "\f15b"; +} +.fa-file-text:before { + content: "\f15c"; +} +.fa-sort-alpha-asc:before { + content: "\f15d"; +} +.fa-sort-alpha-desc:before { + content: "\f15e"; +} +.fa-sort-amount-asc:before { + content: "\f160"; +} +.fa-sort-amount-desc:before { + content: "\f161"; +} +.fa-sort-numeric-asc:before { + content: "\f162"; +} +.fa-sort-numeric-desc:before { + content: "\f163"; +} +.fa-thumbs-up:before { + content: "\f164"; +} +.fa-thumbs-down:before { + content: "\f165"; +} +.fa-youtube-square:before { + content: "\f166"; +} +.fa-youtube:before { + content: "\f167"; +} +.fa-xing:before { + content: "\f168"; +} +.fa-xing-square:before { + content: "\f169"; +} +.fa-youtube-play:before { + content: "\f16a"; +} +.fa-dropbox:before { + content: "\f16b"; +} +.fa-stack-overflow:before { + content: "\f16c"; +} +.fa-instagram:before { + content: "\f16d"; +} +.fa-flickr:before { + content: "\f16e"; +} +.fa-adn:before { + content: "\f170"; +} +.fa-bitbucket:before { + content: "\f171"; +} +.fa-bitbucket-square:before { + content: "\f172"; +} +.fa-tumblr:before { + content: "\f173"; +} +.fa-tumblr-square:before { + content: "\f174"; +} +.fa-long-arrow-down:before { + content: "\f175"; +} +.fa-long-arrow-up:before { + content: "\f176"; +} +.fa-long-arrow-left:before { + content: "\f177"; +} +.fa-long-arrow-right:before { + content: "\f178"; +} +.fa-apple:before { + content: "\f179"; +} +.fa-windows:before { + content: "\f17a"; +} +.fa-android:before { + content: "\f17b"; +} +.fa-linux:before { + content: "\f17c"; +} +.fa-dribbble:before { + content: "\f17d"; +} +.fa-skype:before { + content: "\f17e"; +} +.fa-foursquare:before { + content: "\f180"; +} +.fa-trello:before { + content: "\f181"; +} +.fa-female:before { + content: "\f182"; +} +.fa-male:before { + content: "\f183"; +} +.fa-gittip:before, +.fa-gratipay:before { + content: "\f184"; +} +.fa-sun-o:before { + content: "\f185"; +} +.fa-moon-o:before { + content: "\f186"; +} +.fa-archive:before { + content: "\f187"; +} +.fa-bug:before { + content: "\f188"; +} +.fa-vk:before { + content: "\f189"; +} +.fa-weibo:before { + content: "\f18a"; +} +.fa-renren:before { + content: "\f18b"; +} +.fa-pagelines:before { + content: "\f18c"; +} +.fa-stack-exchange:before { + content: "\f18d"; +} +.fa-arrow-circle-o-right:before { + content: "\f18e"; +} +.fa-arrow-circle-o-left:before { + content: "\f190"; +} +.fa-toggle-left:before, +.fa-caret-square-o-left:before { + content: "\f191"; +} +.fa-dot-circle-o:before { + content: "\f192"; +} +.fa-wheelchair:before { + content: "\f193"; +} +.fa-vimeo-square:before { + content: "\f194"; +} +.fa-turkish-lira:before, +.fa-try:before { + content: "\f195"; +} +.fa-plus-square-o:before { + content: "\f196"; +} +.fa-space-shuttle:before { + content: "\f197"; +} +.fa-slack:before { + content: "\f198"; +} +.fa-envelope-square:before { + content: "\f199"; +} +.fa-wordpress:before { + content: "\f19a"; +} +.fa-openid:before { + content: "\f19b"; +} +.fa-institution:before, +.fa-bank:before, +.fa-university:before { + content: "\f19c"; +} +.fa-mortar-board:before, +.fa-graduation-cap:before { + content: "\f19d"; +} +.fa-yahoo:before { + content: "\f19e"; +} +.fa-google:before { + content: "\f1a0"; +} +.fa-reddit:before { + content: "\f1a1"; +} +.fa-reddit-square:before { + content: "\f1a2"; +} +.fa-stumbleupon-circle:before { + content: "\f1a3"; +} +.fa-stumbleupon:before { + content: "\f1a4"; +} +.fa-delicious:before { + content: "\f1a5"; +} +.fa-digg:before { + content: "\f1a6"; +} +.fa-pied-piper-pp:before { + content: "\f1a7"; +} +.fa-pied-piper-alt:before { + content: "\f1a8"; +} +.fa-drupal:before { + content: "\f1a9"; +} +.fa-joomla:before { + content: "\f1aa"; +} +.fa-language:before { + content: "\f1ab"; +} +.fa-fax:before { + content: "\f1ac"; +} +.fa-building:before { + content: "\f1ad"; +} +.fa-child:before { + content: "\f1ae"; +} +.fa-paw:before { + content: "\f1b0"; +} +.fa-spoon:before { + content: "\f1b1"; +} +.fa-cube:before { + content: "\f1b2"; +} +.fa-cubes:before { + content: "\f1b3"; +} +.fa-behance:before { + content: "\f1b4"; +} +.fa-behance-square:before { + content: "\f1b5"; +} +.fa-steam:before { + content: "\f1b6"; +} +.fa-steam-square:before { + content: "\f1b7"; +} +.fa-recycle:before { + content: "\f1b8"; +} +.fa-automobile:before, +.fa-car:before { + content: "\f1b9"; +} +.fa-cab:before, +.fa-taxi:before { + content: "\f1ba"; +} +.fa-tree:before { + content: "\f1bb"; +} +.fa-spotify:before { + content: "\f1bc"; +} +.fa-deviantart:before { + content: "\f1bd"; +} +.fa-soundcloud:before { + content: "\f1be"; +} +.fa-database:before { + content: "\f1c0"; +} +.fa-file-pdf-o:before { + content: "\f1c1"; +} +.fa-file-word-o:before { + content: "\f1c2"; +} +.fa-file-excel-o:before { + content: "\f1c3"; +} +.fa-file-powerpoint-o:before { + content: "\f1c4"; +} +.fa-file-photo-o:before, +.fa-file-picture-o:before, +.fa-file-image-o:before { + content: "\f1c5"; +} +.fa-file-zip-o:before, +.fa-file-archive-o:before { + content: "\f1c6"; +} +.fa-file-sound-o:before, +.fa-file-audio-o:before { + content: "\f1c7"; +} +.fa-file-movie-o:before, +.fa-file-video-o:before { + content: "\f1c8"; +} +.fa-file-code-o:before { + content: "\f1c9"; +} +.fa-vine:before { + content: "\f1ca"; +} +.fa-codepen:before { + content: "\f1cb"; +} +.fa-jsfiddle:before { + content: "\f1cc"; +} +.fa-life-bouy:before, +.fa-life-buoy:before, +.fa-life-saver:before, +.fa-support:before, +.fa-life-ring:before { + content: "\f1cd"; +} +.fa-circle-o-notch:before { + content: "\f1ce"; +} +.fa-ra:before, +.fa-resistance:before, +.fa-rebel:before { + content: "\f1d0"; +} +.fa-ge:before, +.fa-empire:before { + content: "\f1d1"; +} +.fa-git-square:before { + content: "\f1d2"; +} +.fa-git:before { + content: "\f1d3"; +} +.fa-y-combinator-square:before, +.fa-yc-square:before, +.fa-hacker-news:before { + content: "\f1d4"; +} +.fa-tencent-weibo:before { + content: "\f1d5"; +} +.fa-qq:before { + content: "\f1d6"; +} +.fa-wechat:before, +.fa-weixin:before { + content: "\f1d7"; +} +.fa-send:before, +.fa-paper-plane:before { + content: "\f1d8"; +} +.fa-send-o:before, +.fa-paper-plane-o:before { + content: "\f1d9"; +} +.fa-history:before { + content: "\f1da"; +} +.fa-circle-thin:before { + content: "\f1db"; +} +.fa-header:before { + content: "\f1dc"; +} +.fa-paragraph:before { + content: "\f1dd"; +} +.fa-sliders:before { + content: "\f1de"; +} +.fa-share-alt:before { + content: "\f1e0"; +} +.fa-share-alt-square:before { + content: "\f1e1"; +} +.fa-bomb:before { + content: "\f1e2"; +} +.fa-soccer-ball-o:before, +.fa-futbol-o:before { + content: "\f1e3"; +} +.fa-tty:before { + content: "\f1e4"; +} +.fa-binoculars:before { + content: "\f1e5"; +} +.fa-plug:before { + content: "\f1e6"; +} +.fa-slideshare:before { + content: "\f1e7"; +} +.fa-twitch:before { + content: "\f1e8"; +} +.fa-yelp:before { + content: "\f1e9"; +} +.fa-newspaper-o:before { + content: "\f1ea"; +} +.fa-wifi:before { + content: "\f1eb"; +} +.fa-calculator:before { + content: "\f1ec"; +} +.fa-paypal:before { + content: "\f1ed"; +} +.fa-google-wallet:before { + content: "\f1ee"; +} +.fa-cc-visa:before { + content: "\f1f0"; +} +.fa-cc-mastercard:before { + content: "\f1f1"; +} +.fa-cc-discover:before { + content: "\f1f2"; +} +.fa-cc-amex:before { + content: "\f1f3"; +} +.fa-cc-paypal:before { + content: "\f1f4"; +} +.fa-cc-stripe:before { + content: "\f1f5"; +} +.fa-bell-slash:before { + content: "\f1f6"; +} +.fa-bell-slash-o:before { + content: "\f1f7"; +} +.fa-trash:before { + content: "\f1f8"; +} +.fa-copyright:before { + content: "\f1f9"; +} +.fa-at:before { + content: "\f1fa"; +} +.fa-eyedropper:before { + content: "\f1fb"; +} +.fa-paint-brush:before { + content: "\f1fc"; +} +.fa-birthday-cake:before { + content: "\f1fd"; +} +.fa-area-chart:before { + content: "\f1fe"; +} +.fa-pie-chart:before { + content: "\f200"; +} +.fa-line-chart:before { + content: "\f201"; +} +.fa-lastfm:before { + content: "\f202"; +} +.fa-lastfm-square:before { + content: "\f203"; +} +.fa-toggle-off:before { + content: "\f204"; +} +.fa-toggle-on:before { + content: "\f205"; +} +.fa-bicycle:before { + content: "\f206"; +} +.fa-bus:before { + content: "\f207"; +} +.fa-ioxhost:before { + content: "\f208"; +} +.fa-angellist:before { + content: "\f209"; +} +.fa-cc:before { + content: "\f20a"; +} +.fa-shekel:before, +.fa-sheqel:before, +.fa-ils:before { + content: "\f20b"; +} +.fa-meanpath:before { + content: "\f20c"; +} +.fa-buysellads:before { + content: "\f20d"; +} +.fa-connectdevelop:before { + content: "\f20e"; +} +.fa-dashcube:before { + content: "\f210"; +} +.fa-forumbee:before { + content: "\f211"; +} +.fa-leanpub:before { + content: "\f212"; +} +.fa-sellsy:before { + content: "\f213"; +} +.fa-shirtsinbulk:before { + content: "\f214"; +} +.fa-simplybuilt:before { + content: "\f215"; +} +.fa-skyatlas:before { + content: "\f216"; +} +.fa-cart-plus:before { + content: "\f217"; +} +.fa-cart-arrow-down:before { + content: "\f218"; +} +.fa-diamond:before { + content: "\f219"; +} +.fa-ship:before { + content: "\f21a"; +} +.fa-user-secret:before { + content: "\f21b"; +} +.fa-motorcycle:before { + content: "\f21c"; +} +.fa-street-view:before { + content: "\f21d"; +} +.fa-heartbeat:before { + content: "\f21e"; +} +.fa-venus:before { + content: "\f221"; +} +.fa-mars:before { + content: "\f222"; +} +.fa-mercury:before { + content: "\f223"; +} +.fa-intersex:before, +.fa-transgender:before { + content: "\f224"; +} +.fa-transgender-alt:before { + content: "\f225"; +} +.fa-venus-double:before { + content: "\f226"; +} +.fa-mars-double:before { + content: "\f227"; +} +.fa-venus-mars:before { + content: "\f228"; +} +.fa-mars-stroke:before { + content: "\f229"; +} +.fa-mars-stroke-v:before { + content: "\f22a"; +} +.fa-mars-stroke-h:before { + content: "\f22b"; +} +.fa-neuter:before { + content: "\f22c"; +} +.fa-genderless:before { + content: "\f22d"; +} +.fa-facebook-official:before { + content: "\f230"; +} +.fa-pinterest-p:before { + content: "\f231"; +} +.fa-whatsapp:before { + content: "\f232"; +} +.fa-server:before { + content: "\f233"; +} +.fa-user-plus:before { + content: "\f234"; +} +.fa-user-times:before { + content: "\f235"; +} +.fa-hotel:before, +.fa-bed:before { + content: "\f236"; +} +.fa-viacoin:before { + content: "\f237"; +} +.fa-train:before { + content: "\f238"; +} +.fa-subway:before { + content: "\f239"; +} +.fa-medium:before { + content: "\f23a"; +} +.fa-yc:before, +.fa-y-combinator:before { + content: "\f23b"; +} +.fa-optin-monster:before { + content: "\f23c"; +} +.fa-opencart:before { + content: "\f23d"; +} +.fa-expeditedssl:before { + content: "\f23e"; +} +.fa-battery-4:before, +.fa-battery-full:before { + content: "\f240"; +} +.fa-battery-3:before, +.fa-battery-three-quarters:before { + content: "\f241"; +} +.fa-battery-2:before, +.fa-battery-half:before { + content: "\f242"; +} +.fa-battery-1:before, +.fa-battery-quarter:before { + content: "\f243"; +} +.fa-battery-0:before, +.fa-battery-empty:before { + content: "\f244"; +} +.fa-mouse-pointer:before { + content: "\f245"; +} +.fa-i-cursor:before { + content: "\f246"; +} +.fa-object-group:before { + content: "\f247"; +} +.fa-object-ungroup:before { + content: "\f248"; +} +.fa-sticky-note:before { + content: "\f249"; +} +.fa-sticky-note-o:before { + content: "\f24a"; +} +.fa-cc-jcb:before { + content: "\f24b"; +} +.fa-cc-diners-club:before { + content: "\f24c"; +} +.fa-clone:before { + content: "\f24d"; +} +.fa-balance-scale:before { + content: "\f24e"; +} +.fa-hourglass-o:before { + content: "\f250"; +} +.fa-hourglass-1:before, +.fa-hourglass-start:before { + content: "\f251"; +} +.fa-hourglass-2:before, +.fa-hourglass-half:before { + content: "\f252"; +} +.fa-hourglass-3:before, +.fa-hourglass-end:before { + content: "\f253"; +} +.fa-hourglass:before { + content: "\f254"; +} +.fa-hand-grab-o:before, +.fa-hand-rock-o:before { + content: "\f255"; +} +.fa-hand-stop-o:before, +.fa-hand-paper-o:before { + content: "\f256"; +} +.fa-hand-scissors-o:before { + content: "\f257"; +} +.fa-hand-lizard-o:before { + content: "\f258"; +} +.fa-hand-spock-o:before { + content: "\f259"; +} +.fa-hand-pointer-o:before { + content: "\f25a"; +} +.fa-hand-peace-o:before { + content: "\f25b"; +} +.fa-trademark:before { + content: "\f25c"; +} +.fa-registered:before { + content: "\f25d"; +} +.fa-creative-commons:before { + content: "\f25e"; +} +.fa-gg:before { + content: "\f260"; +} +.fa-gg-circle:before { + content: "\f261"; +} +.fa-tripadvisor:before { + content: "\f262"; +} +.fa-odnoklassniki:before { + content: "\f263"; +} +.fa-odnoklassniki-square:before { + content: "\f264"; +} +.fa-get-pocket:before { + content: "\f265"; +} +.fa-wikipedia-w:before { + content: "\f266"; +} +.fa-safari:before { + content: "\f267"; +} +.fa-chrome:before { + content: "\f268"; +} +.fa-firefox:before { + content: "\f269"; +} +.fa-opera:before { + content: "\f26a"; +} +.fa-internet-explorer:before { + content: "\f26b"; +} +.fa-tv:before, +.fa-television:before { + content: "\f26c"; +} +.fa-contao:before { + content: "\f26d"; +} +.fa-500px:before { + content: "\f26e"; +} +.fa-amazon:before { + content: "\f270"; +} +.fa-calendar-plus-o:before { + content: "\f271"; +} +.fa-calendar-minus-o:before { + content: "\f272"; +} +.fa-calendar-times-o:before { + content: "\f273"; +} +.fa-calendar-check-o:before { + content: "\f274"; +} +.fa-industry:before { + content: "\f275"; +} +.fa-map-pin:before { + content: "\f276"; +} +.fa-map-signs:before { + content: "\f277"; +} +.fa-map-o:before { + content: "\f278"; +} +.fa-map:before { + content: "\f279"; +} +.fa-commenting:before { + content: "\f27a"; +} +.fa-commenting-o:before { + content: "\f27b"; +} +.fa-houzz:before { + content: "\f27c"; +} +.fa-vimeo:before { + content: "\f27d"; +} +.fa-black-tie:before { + content: "\f27e"; +} +.fa-fonticons:before { + content: "\f280"; +} +.fa-reddit-alien:before { + content: "\f281"; +} +.fa-edge:before { + content: "\f282"; +} +.fa-credit-card-alt:before { + content: "\f283"; +} +.fa-codiepie:before { + content: "\f284"; +} +.fa-modx:before { + content: "\f285"; +} +.fa-fort-awesome:before { + content: "\f286"; +} +.fa-usb:before { + content: "\f287"; +} +.fa-product-hunt:before { + content: "\f288"; +} +.fa-mixcloud:before { + content: "\f289"; +} +.fa-scribd:before { + content: "\f28a"; +} +.fa-pause-circle:before { + content: "\f28b"; +} +.fa-pause-circle-o:before { + content: "\f28c"; +} +.fa-stop-circle:before { + content: "\f28d"; +} +.fa-stop-circle-o:before { + content: "\f28e"; +} +.fa-shopping-bag:before { + content: "\f290"; +} +.fa-shopping-basket:before { + content: "\f291"; +} +.fa-hashtag:before { + content: "\f292"; +} +.fa-bluetooth:before { + content: "\f293"; +} +.fa-bluetooth-b:before { + content: "\f294"; +} +.fa-percent:before { + content: "\f295"; +} +.fa-gitlab:before { + content: "\f296"; +} +.fa-wpbeginner:before { + content: "\f297"; +} +.fa-wpforms:before { + content: "\f298"; +} +.fa-envira:before { + content: "\f299"; +} +.fa-universal-access:before { + content: "\f29a"; +} +.fa-wheelchair-alt:before { + content: "\f29b"; +} +.fa-question-circle-o:before { + content: "\f29c"; +} +.fa-blind:before { + content: "\f29d"; +} +.fa-audio-description:before { + content: "\f29e"; +} +.fa-volume-control-phone:before { + content: "\f2a0"; +} +.fa-braille:before { + content: "\f2a1"; +} +.fa-assistive-listening-systems:before { + content: "\f2a2"; +} +.fa-asl-interpreting:before, +.fa-american-sign-language-interpreting:before { + content: "\f2a3"; +} +.fa-deafness:before, +.fa-hard-of-hearing:before, +.fa-deaf:before { + content: "\f2a4"; +} +.fa-glide:before { + content: "\f2a5"; +} +.fa-glide-g:before { + content: "\f2a6"; +} +.fa-signing:before, +.fa-sign-language:before { + content: "\f2a7"; +} +.fa-low-vision:before { + content: "\f2a8"; +} +.fa-viadeo:before { + content: "\f2a9"; +} +.fa-viadeo-square:before { + content: "\f2aa"; +} +.fa-snapchat:before { + content: "\f2ab"; +} +.fa-snapchat-ghost:before { + content: "\f2ac"; +} +.fa-snapchat-square:before { + content: "\f2ad"; +} +.fa-pied-piper:before { + content: "\f2ae"; +} +.fa-first-order:before { + content: "\f2b0"; +} +.fa-yoast:before { + content: "\f2b1"; +} +.fa-themeisle:before { + content: "\f2b2"; +} +.fa-google-plus-circle:before, +.fa-google-plus-official:before { + content: "\f2b3"; +} +.fa-fa:before, +.fa-font-awesome:before { + content: "\f2b4"; +} +.sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + border: 0; +} +.sr-only-focusable:active, +.sr-only-focusable:focus { + position: static; + width: auto; + height: auto; + margin: 0; + overflow: visible; + clip: auto; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css.map b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css.map new file mode 100644 index 0000000..60763a8 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.css.map @@ -0,0 +1,7 @@ +{ +"version": 3, +"mappings": ";;;;;;;AAGA,UAUC;EATC,WAAW,EAAE,aAAa;EAC1B,GAAG,EAAE,+CAAgE;EACrE,GAAG,EAAE,ySAAmG;EAKxG,WAAW,EAAE,MAAM;EACnB,UAAU,EAAE,MAAM;ACTpB,GAAmB;EACjB,OAAO,EAAE,YAAY;EACrB,IAAI,EAAE,uCAAwD;EAC9D,SAAS,EAAE,OAAO;EAClB,cAAc,EAAE,IAAI;EACpB,sBAAsB,EAAE,WAAW;EACnC,uBAAuB,EAAE,SAAS;EAClC,SAAS,EAAE,eAAe;;;ACN5B,MAAsB;EACpB,SAAS,EAAE,SAAS;EACpB,WAAW,EAAE,MAAS;EACtB,cAAc,EAAE,IAAI;;AAEtB,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;AACtC,MAAsB;EAAE,SAAS,EAAE,GAAG;;ACVtC,MAAsB;EACpB,KAAK,EAAE,SAAW;EAClB,UAAU,EAAE,MAAM;;ACDpB,MAAsB;EACpB,YAAY,EAAE,CAAC;EACf,WAAW,ECKU,SAAS;EDJ9B,eAAe,EAAE,IAAI;EACrB,WAAK;IAAE,QAAQ,EAAE,QAAQ;;AAE3B,MAAsB;EACpB,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,UAAa;EACnB,KAAK,ECFgB,SAAS;EDG9B,GAAG,EAAE,SAAU;EACf,UAAU,EAAE,MAAM;EAClB,YAAuB;IACrB,IAAI,EAAE,UAA0B;;AEbpC,UAA0B;EACxB,OAAO,EAAE,gBAAgB;EACzB,MAAM,EAAE,iBAA4B;EACpC,aAAa,EAAE,IAAI;;AAGrB,WAAY;EAAE,KAAK,EAAE,KAAK;;AAC1B,UAAW;EAAE,KAAK,EAAE,IAAI;;AAGtB,aAAY;EAAE,YAAY,EAAE,IAAI;AAChC,cAAa;EAAE,WAAW,EAAE,IAAI;;ACXlC,QAAwB;EACtB,iBAAiB,EAAE,0BAA0B;EACrC,SAAS,EAAE,0BAA0B;;AAG/C,SAAyB;EACvB,iBAAiB,EAAE,4BAA4B;EACvC,SAAS,EAAE,4BAA4B;;AAGjD,0BASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AAIrC,kBASC;EARC,EAAG;IACD,iBAAiB,EAAE,YAAY;IACvB,SAAS,EAAE,YAAY;EAEjC,IAAK;IACH,iBAAiB,EAAE,cAAc;IACzB,SAAS,EAAE,cAAc;AC5BrC,aAA8B;ECY5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,aAAgB;EAC/B,aAAa,EAAE,aAAgB;EAC3B,SAAS,EAAE,aAAgB;;ADdrC,cAA8B;ECW5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADbrC,cAA8B;ECU5B,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,cAAgB;EAC/B,aAAa,EAAE,cAAgB;EAC3B,SAAS,EAAE,cAAgB;;ADXrC,mBAAmC;ECejC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADjBzC,iBAAmC;ECcjC,MAAM,EAAE,wDAAmE;EAC3E,iBAAiB,EAAE,YAAoB;EACnC,aAAa,EAAE,YAAoB;EAC/B,SAAS,EAAE,YAAoB;;ADZzC;;;;uBAIuC;EACrC,MAAM,EAAE,IAAI;;AEfd,SAAyB;EACvB,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,GAAG;EACV,MAAM,EAAE,GAAG;EACX,WAAW,EAAE,GAAG;EAChB,cAAc,EAAE,MAAM;;AAExB,0BAAyD;EACvD,QAAQ,EAAE,QAAQ;EAClB,IAAI,EAAE,CAAC;EACP,KAAK,EAAE,IAAI;EACX,UAAU,EAAE,MAAM;;AAEpB,YAA4B;EAAE,WAAW,EAAE,OAAO;;AAClD,YAA4B;EAAE,SAAS,EAAE,GAAG;;AAC5C,WAA2B;EAAE,KAAK,ELVZ,IAAI;;;;AMN1B,gBAAgC;EAAE,OAAO,ENoQ1B,GAAO;;AMnQtB,gBAAgC;EAAE,OAAO,EN0W1B,GAAO;;AMzWtB,iBAAiC;EAAE,OAAO,ENmb1B,GAAO;;AMlbvB,qBAAqC;EAAE,OAAO,ENmL1B,GAAO;;AMlL3B,gBAAgC;EAAE,OAAO,ENkR1B,GAAO;;AMjRtB,eAA+B;EAAE,OAAO,ENke1B,GAAO;;AMjerB,iBAAiC;EAAE,OAAO,ENse1B,GAAO;;AMrevB,eAA+B;EAAE,OAAO,EN+iB1B,GAAO;;AM9iBrB,eAA+B;EAAE,OAAO,ENyN1B,GAAO;;AMxNrB,mBAAmC;EAAE,OAAO,ENggB1B,GAAO;;AM/fzB,aAA6B;EAAE,OAAO,EN8f1B,GAAO;;AM7fnB,kBAAkC;EAAE,OAAO,EN+f1B,GAAO;;AM9fxB,gBAAgC;EAAE,OAAO,ENoG1B,GAAO;;AMnGtB;;gBAEgC;EAAE,OAAO,ENkgB1B,GAAO;;AMjgBtB,sBAAsC;EAAE,OAAO,ENua1B,GAAO;;AMta5B,uBAAuC;EAAE,OAAO,ENqa1B,GAAO;;AMpa7B,oBAAoC;EAAE,OAAO,EN+X1B,GAAO;;AM9X1B,iBAAiC;EAAE,OAAO,ENsb1B,GAAO;;AMrbvB;cAC8B;EAAE,OAAO,ENwH1B,GAAO;;AMvHpB,kBAAkC;EAAE,OAAO,ENygB1B,GAAO;;AMxgBxB,eAA+B;EAAE,OAAO,ENmQ1B,GAAO;;AMlQrB,iBAAiC;EAAE,OAAO,EN6L1B,GAAO;;AM5LvB,kBAAkC;EAAE,OAAO,EN0G1B,GAAO;;AMzGxB,eAA+B;EAAE,OAAO,EN+Y1B,GAAO;;AM9YrB,mBAAmC;EAAE,OAAO,ENiJ1B,GAAO;;AMhJzB,8BAA8C;EAAE,OAAO,ENI1B,GAAO;;AMHpC,4BAA4C;EAAE,OAAO,ENM1B,GAAO;;AMLlC,gBAAgC;EAAE,OAAO,ENkQ1B,GAAO;;AMjQtB,wBAAwC;EAAE,OAAO,EN4W1B,GAAO;;AM3W9B;iBACiC;EAAE,OAAO,ENmY1B,GAAO;;AMlYvB,kBAAkC;EAAE,OAAO,EN8X1B,GAAO;;AM7XxB,mBAAmC;EAAE,OAAO,ENiS1B,GAAO;;AMhSzB,eAA+B;EAAE,OAAO,ENoS1B,GAAO;;AMnSrB,eAA+B;EAAE,OAAO,ENgM1B,GAAO;;AM/LrB,qBAAqC;EAAE,OAAO,EN+O1B,GAAO;;AM9O3B,qBAAqC;EAAE,OAAO,EN8hB1B,GAAO;;AM7hB3B,sBAAsC;EAAE,OAAO,EN4hB1B,GAAO;;AM3hB5B,oBAAoC;EAAE,OAAO,EN6hB1B,GAAO;;AM5hB1B,iBAAiC;EAAE,OAAO,EN2W1B,GAAO;;AM1WvB,kBAAkC;EAAE,OAAO,ENW1B,GAAO;;AMVxB,cAA8B;EAAE,OAAO,ENod1B,GAAO;;AMndpB,eAA+B;EAAE,OAAO,ENod1B,GAAO;;AMndrB,eAA+B;EAAE,OAAO,EN2B1B,GAAO;;AM1BrB,mBAAmC;EAAE,OAAO,EN2B1B,GAAO;;AM1BzB,gBAAgC;EAAE,OAAO,ENkW1B,GAAO;;AMjWtB,iBAAiC;EAAE,OAAO,ENwC1B,GAAO;;AMvCvB,eAA+B;EAAE,OAAO,EN8L1B,GAAO;;AM7LrB,eAA+B;EAAE,OAAO,ENmB1B,GAAO;;AMlBrB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB,sBAAsC;EAAE,OAAO,ENid1B,GAAO;;AMhd5B,qBAAqC;EAAE,OAAO,ENid1B,GAAO;;AMhd3B,qBAAqC;EAAE,OAAO,EN1C1B,GAAO;;AM2C3B,uBAAuC;EAAE,OAAO,EN7C1B,GAAO;;AM8C7B,sBAAsC;EAAE,OAAO,EN3C1B,GAAO;;AM4C5B,wBAAwC;EAAE,OAAO,EN9C1B,GAAO;;AM+C9B,eAA+B;EAAE,OAAO,ENwQ1B,GAAO;;AMvQrB;kBACkC;EAAE,OAAO,ENmT1B,GAAO;;AMlTxB,iBAAiC;EAAE,OAAO,ENmO1B,GAAO;;AMlOvB,uBAAuC;EAAE,OAAO,ENigB1B,GAAO;;AMhgB7B;;oBAEoC;EAAE,OAAO,EN+T1B,GAAO;;AM9T1B,iBAAiC;EAAE,OAAO,ENwT1B,GAAO;;AMvTvB,qBAAqC;EAAE,OAAO,EN+Q1B,GAAO;;AM9Q3B,iBAAiC;EAAE,OAAO,EN5D1B,GAAO;;AM6DvB,eAA+B;EAAE,OAAO,EN8c1B,GAAO;;AM7crB;0BAC0C;EAAE,OAAO,ENqT1B,GAAO;;AMpThC,yBAAyC;EAAE,OAAO,ENuX1B,GAAO;;AMtX/B,yBAAyC;EAAE,OAAO,EN0C1B,GAAO;;AMzC/B,iBAAiC;EAAE,OAAO,ENjC1B,GAAO;;AMkCvB,wBAAwC;EAAE,OAAO,ENma1B,GAAO;;AMla9B,wBAAwC;EAAE,OAAO,EN4H1B,GAAO;;AM3H9B,mBAAmC;EAAE,OAAO,EN7B1B,GAAO;;AM8BzB,eAA+B;EAAE,OAAO,EN0T1B,GAAO;;AMzTrB,gBAAgC;EAAE,OAAO,ENwS1B,GAAO;;AMvStB,eAA+B;EAAE,OAAO,ENia1B,GAAO;;AMharB,kBAAkC;EAAE,OAAO,ENgK1B,GAAO;;AM/JxB,uBAAuC;EAAE,OAAO,ENuH1B,GAAO;;AMtH7B,uBAAuC;EAAE,OAAO,EN4Z1B,GAAO;;AM3Z7B,gBAAgC;EAAE,OAAO,EN4F1B,GAAO;;AM3FtB,uBAAuC;EAAE,OAAO,ENoC1B,GAAO;;AMnC7B,wBAAwC;EAAE,OAAO,ENoC1B,GAAO;;AMnC9B,sBAAsC;EAAE,OAAO,ENsT1B,GAAO;;AMrT5B,uBAAuC;EAAE,OAAO,ENyQ1B,GAAO;;AMxQ7B,uBAAuC;EAAE,OAAO,ENwb1B,GAAO;;AMvb7B,uBAAuC;EAAE,OAAO,ENsB1B,GAAO;;AMrB7B,0BAA0C;EAAE,OAAO,EN2T1B,GAAO;;AM1ThC,sBAAsC;EAAE,OAAO,ENsM1B,GAAO;;AMrM5B,qBAAqC;EAAE,OAAO,EN6D1B,GAAO;;AM5D3B,yBAAyC;EAAE,OAAO,ENob1B,GAAO;;AMnb/B,yBAAyC;EAAE,OAAO,ENkB1B,GAAO;;AMjB/B,cAA8B;EAAE,OAAO,EN/C1B,GAAO;;AMgDpB,qBAAqC;EAAE,OAAO,EN3D1B,GAAO;;AM4D3B,sBAAsC;EAAE,OAAO,EN3D1B,GAAO;;AM4D5B,mBAAmC;EAAE,OAAO,EN3D1B,GAAO;;AM4DzB,qBAAqC;EAAE,OAAO,EN/D1B,GAAO;;AMgE3B;gBACgC;EAAE,OAAO,ENqV1B,GAAO;;AMpVtB,iBAAiC;EAAE,OAAO,ENuF1B,GAAO;;AMtFvB,mBAAmC;EAAE,OAAO,EN4C1B,GAAO;;AM3CzB,eAA+B;EAAE,OAAO,ENmS1B,GAAO;;AMlSrB,gBAAgC;EAAE,OAAO,ENsP1B,GAAO;;AMrPtB,mBAAmC;EAAE,OAAO,EN9D1B,GAAO;;AM+DzB,6BAA6C;EAAE,OAAO,ENgF1B,GAAO;;AM/EnC,eAA+B;EAAE,OAAO,EN+I1B,GAAO;;AM9IrB,eAA+B;EAAE,OAAO,ENoM1B,GAAO;;AMnMrB,eAA+B;EAAE,OAAO,ENmH1B,GAAO;;AMlHrB,cAA8B;EAAE,OAAO,ENiF1B,GAAO;;AMhFpB,oBAAoC;EAAE,OAAO,ENiF1B,GAAO;;AMhF1B;+BAC+C;EAAE,OAAO,EN0E1B,GAAO;;AMzErC,gBAAgC;EAAE,OAAO,ENmR1B,GAAO;;AMlRtB,mBAAmC;EAAE,OAAO,EN/B1B,GAAO;;AMgCzB,iBAAiC;EAAE,OAAO,ENoS1B,GAAO;;AMnSvB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,iBAAiC;EAAE,OAAO,ENqN1B,GAAO;;AMpNvB,qBAAqC;EAAE,OAAO,ENE1B,GAAO;;AMD3B,uBAAuC;EAAE,OAAO,ENF1B,GAAO;;AMG7B,kBAAkC;EAAE,OAAO,EN2S1B,GAAO;;AM1SxB,wBAAwC;EAAE,OAAO,ENyU1B,GAAO;;AMxU9B,iBAAiC;EAAE,OAAO,EN8G1B,GAAO;;AM7GvB,sBAAsC;EAAE,OAAO,EN+G1B,GAAO;;AM9G5B,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,mBAAmC;EAAE,OAAO,ENrF1B,GAAO;;AMsFzB;oBACoC;EAAE,OAAO,EN/E1B,GAAO;;AMgF1B,yBAAyC;EAAE,OAAO,ENua1B,GAAO;;AMta/B,0BAA0C;EAAE,OAAO,ENmE1B,GAAO;;AMlEhC,uBAAuC;EAAE,OAAO,EN5C1B,GAAO;;AM6C7B,cAA8B;EAAE,OAAO,ENqK1B,GAAO;;AMpKpB;eAC+B;EAAE,OAAO,ENK1B,GAAO;;AMJrB,mBAAmC;EAAE,OAAO,ENQ1B,GAAO;;AMPzB,sBAAsC;EAAE,OAAO,ENmY1B,GAAO;;AMlY5B,wBAAwC;EAAE,OAAO,ENiY1B,GAAO;;AMhY9B,oBAAoC;EAAE,OAAO,EN2V1B,GAAO;;AM1V1B,kBAAkC;EAAE,OAAO,ENyI1B,GAAO;;AMxIxB,mBAAmC;EAAE,OAAO,ENyT1B,GAAO;;AMxTzB,0BAA0C;EAAE,OAAO,ENiL1B,GAAO;;AMhLhC,qBAAqC;EAAE,OAAO,EN0X1B,GAAO;;AMzX3B,wBAAwC;EAAE,OAAO,EN8C1B,GAAO;;AM7C9B,kBAAkC;EAAE,OAAO,ENoT1B,GAAO;;AMnTxB,iBAAiC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YvB,wBAAwC;EAAE,OAAO,EN6G1B,GAAO;;AM5G9B,iBAAiC;EAAE,OAAO,EN8Z1B,GAAO;;AM7ZvB,kBAAkC;EAAE,OAAO,EN+J1B,GAAO;;AM9JxB,gBAAgC;EAAE,OAAO,ENsO1B,GAAO;;AMrOtB,mBAAmC;EAAE,OAAO,EN2U1B,GAAO;;AM1UzB,qBAAqC;EAAE,OAAO,EN/E1B,GAAO;;AMgF3B,uBAAuC;EAAE,OAAO,ENoO1B,GAAO;;AMnO7B,kBAAkC;EAAE,OAAO,EN8Y1B,GAAO;;AM7YxB;mBACmC;EAAE,OAAO,ENuC1B,GAAO;;AMtCzB,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,iBAAiC;EAAE,OAAO,ENiZ1B,GAAO;;AMhZvB,sBAAsC;EAAE,OAAO,ENR1B,GAAO;;AMS5B,cAA8B;EAAE,OAAO,EN4Q1B,GAAO;;AM3QpB,gBAAgC;EAAE,OAAO,ENgH1B,GAAO;;AM/GtB,mBAAmC;EAAE,OAAO,ENnF1B,GAAO;;AMoFzB,eAA+B;EAAE,OAAO,ENzG1B,GAAO;;AM0GrB,sBAAsC;EAAE,OAAO,ENzD1B,GAAO;;AM0D5B,uBAAuC;EAAE,OAAO,EN0G1B,GAAO;;AMzG7B,sBAAsC;EAAE,OAAO,ENwG1B,GAAO;;AMvG5B,oBAAoC;EAAE,OAAO,ENyG1B,GAAO;;AMxG1B,sBAAsC;EAAE,OAAO,ENqG1B,GAAO;;AMpG5B,4BAA4C;EAAE,OAAO,EN5I1B,GAAO;;AM6IlC,6BAA6C;EAAE,OAAO,ENxI1B,GAAO;;AMyInC,0BAA0C;EAAE,OAAO,ENxI1B,GAAO;;AMyIhC,4BAA4C;EAAE,OAAO,ENhJ1B,GAAO;;AMiJlC,gBAAgC;EAAE,OAAO,ENsF1B,GAAO;;AMrFtB,iBAAiC;EAAE,OAAO,ENia1B,GAAO;;AMhavB,gBAAgC;EAAE,OAAO,ENiV1B,GAAO;;AMhVtB,iBAAiC;EAAE,OAAO,ENgD1B,GAAO;;AM/CvB,oBAAoC;EAAE,OAAO,ENvG1B,GAAO;;AMwG1B,qBAAqC;EAAE,OAAO,ENzI1B,GAAO;;AM0I3B;gBACgC;EAAE,OAAO,ENqY1B,GAAO;;AMpYtB;eAC+B;EAAE,OAAO,ENuI1B,GAAO;;AMtIrB,gBAAgC;EAAE,OAAO,ENpD1B,GAAO;;AMqDtB,gBAAgC;EAAE,OAAO,EN+C1B,GAAO;;AM9CtB;mBACmC;EAAE,OAAO,ENwP1B,GAAO;;AMvPzB;kBACkC;EAAE,OAAO,ENkC1B,GAAO;;AMjCxB,oBAAoC;EAAE,OAAO,ENsL1B,GAAO;;AMrL1B;mBACmC;EAAE,OAAO,EN0C1B,GAAO;;AMzCzB,iBAAiC;EAAE,OAAO,ENiS1B,GAAO;;AMhSvB;;eAE+B;EAAE,OAAO,EN9I1B,GAAO;;AM+IrB,kBAAkC;EAAE,OAAO,ENgI1B,GAAO;;AM/HxB,kBAAkC;EAAE,OAAO,EN8H1B,GAAO;;AM7HxB,wBAAwC;EAAE,OAAO,EN4S1B,GAAO;;AM3S9B,oBAAoC;EAAE,OAAO,ENoW1B,GAAO;;AMnW1B,gBAAgC;EAAE,OAAO,ENmT1B,GAAO;;AMlTtB,gBAAgC;EAAE,OAAO,ENkI1B,GAAO;;AMjItB,gBAAgC;EAAE,OAAO,ENuV1B,GAAO;;AMtVtB,oBAAoC;EAAE,OAAO,ENwL1B,GAAO;;AMvL1B,2BAA2C;EAAE,OAAO,ENyL1B,GAAO;;AMxLjC,6BAA6C;EAAE,OAAO,ENyD1B,GAAO;;AMxDnC,sBAAsC;EAAE,OAAO,ENuD1B,GAAO;;AMtD5B,gBAAgC;EAAE,OAAO,ENsJ1B,GAAO;;AMrJtB,qBAAqC;EAAE,OAAO,ENtH1B,GAAO;;AMuH3B,mBAAmC;EAAE,OAAO,ENhH1B,GAAO;;AMiHzB,qBAAqC;EAAE,OAAO,ENvH1B,GAAO;;AMwH3B,sBAAsC;EAAE,OAAO,ENvH1B,GAAO;;AMwH5B,kBAAkC;EAAE,OAAO,ENvE1B,GAAO;;AMwExB;eAC+B;EAAE,OAAO,EN2P1B,GAAO;;AM1PrB;oBACoC;EAAE,OAAO,EN+P1B,GAAO;;AM9P1B;mBACmC;EAAE,OAAO,EN4P1B,GAAO;;AM3PzB,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,mBAAmC;EAAE,OAAO,ENkG1B,GAAO;;AMjGzB;eAC+B;EAAE,OAAO,EN8U1B,GAAO;;AM7UrB;gBACgC;EAAE,OAAO,ENqB1B,GAAO;;AMpBtB;qBACqC;EAAE,OAAO,EN2R1B,GAAO;;AM1R3B,oBAAoC;EAAE,OAAO,ENpF1B,GAAO;;AMqF1B,qBAAqC;EAAE,OAAO,ENnF1B,GAAO;;AMoF3B;eAC+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,kBAAkC;EAAE,OAAO,ENkO1B,GAAO;;AMjOxB,mBAAmC;EAAE,OAAO,ENkU1B,GAAO;;AMjUzB;oBACoC;EAAE,OAAO,EN1G1B,GAAO;;AM2G1B,sBAAsC;EAAE,OAAO,ENgF1B,GAAO;;AM/E5B,mBAAmC;EAAE,OAAO,ENnD1B,GAAO;;AMoDzB,yBAAyC;EAAE,OAAO,ENzG1B,GAAO;;AM0G/B,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,kBAAkC;EAAE,OAAO,ENsU1B,GAAO;;AMrUxB,sBAAsC;EAAE,OAAO,EN+P1B,GAAO;;AM9P5B,mBAAmC;EAAE,OAAO,ENsQ1B,GAAO;;AMrQzB,iBAAiC;EAAE,OAAO,ENvL1B,GAAO;;AMwLvB,iBAAiC;EAAE,OAAO,ENzG1B,GAAO;;AM0GvB,kBAAkC;EAAE,OAAO,ENtF1B,GAAO;;AMuFxB,sBAAsC;EAAE,OAAO,EN3B1B,GAAO;;AM4B5B,qBAAqC;EAAE,OAAO,ENxK1B,GAAO;;AMyK3B,qBAAqC;EAAE,OAAO,ENkC1B,GAAO;;AMjC3B,oBAAoC;EAAE,OAAO,EN3O1B,GAAO;;AM4O1B,iBAAiC;EAAE,OAAO,ENiG1B,GAAO;;AMhGvB,sBAAsC;EAAE,OAAO,EN/C1B,GAAO;;AMgD5B,eAA+B;EAAE,OAAO,ENpM1B,GAAO;;AMqMrB,mBAAmC;EAAE,OAAO,ENe1B,GAAO;;AMdzB,sBAAsC;EAAE,OAAO,ENgJ1B,GAAO;;AM/I5B,4BAA4C;EAAE,OAAO,EN5O1B,GAAO;;AM6OlC,6BAA6C;EAAE,OAAO,EN5O1B,GAAO;;AM6OnC,0BAA0C;EAAE,OAAO,EN5O1B,GAAO;;AM6OhC,4BAA4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC,qBAAqC;EAAE,OAAO,EN5O1B,GAAO;;AM6O3B,sBAAsC;EAAE,OAAO,EN5O1B,GAAO;;AM6O5B,mBAAmC;EAAE,OAAO,EN5O1B,GAAO;;AM6OzB,qBAAqC;EAAE,OAAO,ENhP1B,GAAO;;AMiP3B,kBAAkC;EAAE,OAAO,ENlG1B,GAAO;;AMmGxB,iBAAiC;EAAE,OAAO,ENuC1B,GAAO;;AMtCvB,iBAAiC;EAAE,OAAO,ENoP1B,GAAO;;AMnPvB;iBACiC;EAAE,OAAO,ENyF1B,GAAO;;AMxFvB,mBAAmC;EAAE,OAAO,EN9I1B,GAAO;;AM+IzB,qBAAqC;EAAE,OAAO,EN0I1B,GAAO;;AMzI3B,sBAAsC;EAAE,OAAO,EN0I1B,GAAO;;AMzI5B,kBAAkC;EAAE,OAAO,ENgN1B,GAAO;;AM/MxB,iBAAiC;EAAE,OAAO,ENnJ1B,GAAO;;AMoJvB;gBACgC;EAAE,OAAO,ENkJ1B,GAAO;;AMjJtB,qBAAqC;EAAE,OAAO,ENnB1B,GAAO;;AMoB3B,mBAAmC;EAAE,OAAO,ENxC1B,GAAO;;AMyCzB,wBAAwC;EAAE,OAAO,ENvC1B,GAAO;;AMwC9B,kBAAkC;EAAE,OAAO,EN0L1B,GAAO;;AMzLxB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,gBAAgC;EAAE,OAAO,ENoE1B,GAAO;;AMnEtB,kBAAkC;EAAE,OAAO,ENpC1B,GAAO;;AMqCxB,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,iBAAiC;EAAE,OAAO,ENrD1B,GAAO;;AMsDvB,yBAAyC;EAAE,OAAO,ENvD1B,GAAO;;AMwD/B,mBAAmC;EAAE,OAAO,ENuO1B,GAAO;;AMtOzB,eAA+B;EAAE,OAAO,ENtJ1B,GAAO;;AMuJrB;oBACoC;EAAE,OAAO,ENqI1B,GAAO;;AMpI1B;;sBAEsC;EAAE,OAAO,ENuM1B,GAAO;;AMtM5B,yBAAyC;EAAE,OAAO,ENkC1B,GAAO;;AMjC/B,eAA+B;EAAE,OAAO,EN5I1B,GAAO;;AM6IrB,oBAAoC;EAAE,OAAO,EN7J1B,GAAO;;AM8J1B;uBACuC;EAAE,OAAO,EN1L1B,GAAO;;AM2L7B,mBAAmC;EAAE,OAAO,EN4G1B,GAAO;;AM3GzB,eAA+B;EAAE,OAAO,ENT1B,GAAO;;AMUrB,sBAAsC;EAAE,OAAO,ENhH1B,GAAO;;AMiH5B,sBAAsC;EAAE,OAAO,EN8M1B,GAAO;;AM7M5B,oBAAoC;EAAE,OAAO,ENyM1B,GAAO;;AMxM1B,iBAAiC;EAAE,OAAO,ENvH1B,GAAO;;AMwHvB,uBAAuC;EAAE,OAAO,ENmG1B,GAAO;;AMlG7B,qBAAqC;EAAE,OAAO,EN8C1B,GAAO;;AM7C3B,2BAA2C;EAAE,OAAO,EN8C1B,GAAO;;AM7CjC,iBAAiC;EAAE,OAAO,ENgJ1B,GAAO;;AM/IvB,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,4BAA4C;EAAE,OAAO,ENjF1B,GAAO;;AMkFlC,iBAAiC;EAAE,OAAO,ENoH1B,GAAO;;AMnHvB,iBAAiC;EAAE,OAAO,ENkC1B,GAAO;;AMjCvB,8BAA8C;EAAE,OAAO,ENlM1B,GAAO;;AMmMpC,+BAA+C;EAAE,OAAO,ENlM1B,GAAO;;AMmMrC,4BAA4C;EAAE,OAAO,ENlM1B,GAAO;;AMmMlC,8BAA8C;EAAE,OAAO,ENtM1B,GAAO;;AMuMpC,gBAAgC;EAAE,OAAO,EN/B1B,GAAO;;AMgCtB,eAA+B;EAAE,OAAO,ENjK1B,GAAO;;AMkKrB,iBAAiC;EAAE,OAAO,EN9S1B,GAAO;;AM+SvB,qBAAqC;EAAE,OAAO,ENmP1B,GAAO;;AMlP3B,mBAAmC;EAAE,OAAO,EN9O1B,GAAO;;AM+OzB,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN/I1B,GAAO;;AMgJ3B,qBAAqC;EAAE,OAAO,EN4G1B,GAAO;;AM3G3B,sBAAsC;EAAE,OAAO,ENsE1B,GAAO;;AMrE5B,iBAAiC;EAAE,OAAO,EN2M1B,GAAO;;AM1MvB,uBAAuC;EAAE,OAAO,EN6B1B,GAAO;;AM5B7B,yBAAyC;EAAE,OAAO,EN6B1B,GAAO;;AM5B/B,mBAAmC;EAAE,OAAO,ENhB1B,GAAO;;AMiBzB,qBAAqC;EAAE,OAAO,ENlB1B,GAAO;;AMmB3B,uBAAuC;EAAE,OAAO,ENvN1B,GAAO;;AMwN7B,wBAAwC;EAAE,OAAO,ENiD1B,GAAO;;AMhD9B,+BAA+C;EAAE,OAAO,EN3I1B,GAAO;;AM4IrC,uBAAuC;EAAE,OAAO,ENkH1B,GAAO;;AMjH7B,kBAAkC;EAAE,OAAO,EN1L1B,GAAO;;AM2LxB;8BAC8C;EAAE,OAAO,ENjP1B,GAAO;;AMkPpC;4BAC4C;EAAE,OAAO,ENhP1B,GAAO;;AMiPlC;+BAC+C;EAAE,OAAO,ENnP1B,GAAO;;AMoPrC;cAC8B;EAAE,OAAO,EN7J1B,GAAO;;AM8JpB,cAA8B;EAAE,OAAO,EN/F1B,GAAO;;AMgGpB;cAC8B;EAAE,OAAO,EN4N1B,GAAO;;AM3NpB;cAC8B;EAAE,OAAO,ENvD1B,GAAO;;AMwDpB;;;cAG8B;EAAE,OAAO,ENrD1B,GAAO;;AMsDpB;;cAE8B;EAAE,OAAO,EN8E1B,GAAO;;AM7EpB;cAC8B;EAAE,OAAO,ENtD1B,GAAO;;AMuDpB;cAC8B;EAAE,OAAO,ENzR1B,GAAO;;AM0RpB,eAA+B;EAAE,OAAO,ENzJ1B,GAAO;;AM0JrB,oBAAoC;EAAE,OAAO,EN7I1B,GAAO;;AM8I1B,yBAAyC;EAAE,OAAO,EN2G1B,GAAO;;AM1G/B,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,0BAA0C;EAAE,OAAO,EN2G1B,GAAO;;AM1GhC,2BAA2C;EAAE,OAAO,EN2G1B,GAAO;;AM1GjC,2BAA2C;EAAE,OAAO,EN8G1B,GAAO;;AM7GjC,4BAA4C;EAAE,OAAO,EN8G1B,GAAO;;AM7GlC,oBAAoC;EAAE,OAAO,ENgK1B,GAAO;;AM/J1B,sBAAsC;EAAE,OAAO,EN4J1B,GAAO;;AM3J5B,yBAAyC;EAAE,OAAO,ENwO1B,GAAO;;AMvO/B,kBAAkC;EAAE,OAAO,ENqO1B,GAAO;;AMpOxB,eAA+B;EAAE,OAAO,EN+N1B,GAAO;;AM9NrB,sBAAsC;EAAE,OAAO,EN+N1B,GAAO;;AM9N5B,uBAAuC;EAAE,OAAO,ENmO1B,GAAO;;AMlO7B,kBAAkC;EAAE,OAAO,ENxM1B,GAAO;;AMyMxB,yBAAyC;EAAE,OAAO,EN+G1B,GAAO;;AM9G/B,oBAAoC;EAAE,OAAO,ENnF1B,GAAO;;AMoF1B,iBAAiC;EAAE,OAAO,EN/I1B,GAAO;;AMgJvB,cAA8B;EAAE,OAAO,ENhX1B,GAAO;;AMiXpB,oBAAoC;EAAE,OAAO,ENxT1B,GAAO;;AMyT1B,2BAA2C;EAAE,OAAO,ENxT1B,GAAO;;AMyTjC,iBAAiC;EAAE,OAAO,ENyK1B,GAAO;;AMxKvB,wBAAwC;EAAE,OAAO,ENyK1B,GAAO;;AMxK9B,0BAA0C;EAAE,OAAO,ENtD1B,GAAO;;AMuDhC,wBAAwC;EAAE,OAAO,ENpD1B,GAAO;;AMqD9B,0BAA0C;EAAE,OAAO,ENvD1B,GAAO;;AMwDhC,2BAA2C;EAAE,OAAO,ENvD1B,GAAO;;AMwDjC,gBAAgC;EAAE,OAAO,ENxW1B,GAAO;;AMyWtB,kBAAkC;EAAE,OAAO,EN0M1B,GAAO;;AMzMxB,kBAAkC;EAAE,OAAO,ENpX1B,GAAO;;AMqXxB,gBAAgC;EAAE,OAAO,ENpE1B,GAAO;;AMqEtB,mBAAmC;EAAE,OAAO,EN1N1B,GAAO;;AM2NzB,gBAAgC;EAAE,OAAO,ENqE1B,GAAO;;AMpEtB,qBAAqC;EAAE,OAAO,ENtJ1B,GAAO;;AMuJ3B,iBAAiC;EAAE,OAAO,ENuJ1B,GAAO;;AMtJvB,iBAAiC;EAAE,OAAO,EN/L1B,GAAO;;AMgMvB,eAA+B;EAAE,OAAO,EN1D1B,GAAO;;AM2DrB;mBACmC;EAAE,OAAO,ENnI1B,GAAO;;AMoIzB,gBAAgC;EAAE,OAAO,EN2G1B,GAAO;;AM1GtB,iBAAiC;EAAE,OAAO,ENxC1B,GAAO;;AMyCvB,kBAAkC;EAAE,OAAO,ENrX1B,GAAO;;AMsXxB,cAA8B;EAAE,OAAO,ENpU1B,GAAO;;AMqUpB,aAA6B;EAAE,OAAO,ENgL1B,GAAO;;AM/KnB,gBAAgC;EAAE,OAAO,ENqL1B,GAAO;;AMpLtB,iBAAiC;EAAE,OAAO,ENa1B,GAAO;;AMZvB,oBAAoC;EAAE,OAAO,ENrC1B,GAAO;;AMsC1B,yBAAyC;EAAE,OAAO,EN8E1B,GAAO;;AM7E/B,+BAA+C;EAAE,OAAO,ENtX1B,GAAO;;AMuXrC,8BAA8C;EAAE,OAAO,ENxX1B,GAAO;;AMyXpC;8BAC8C;EAAE,OAAO,EN3T1B,GAAO;;AM4TpC,uBAAuC;EAAE,OAAO,ENjP1B,GAAO;;AMkP7B,qBAAqC;EAAE,OAAO,EN+K1B,GAAO;;AM9K3B,uBAAuC;EAAE,OAAO,ENmK1B,GAAO;;AMlK7B;cAC8B;EAAE,OAAO,ENoI1B,GAAO;;AMnIpB,wBAAwC;EAAE,OAAO,ENjB1B,GAAO;;AMkB9B,wBAAwC;EAAE,OAAO,EN6D1B,GAAO;;AM5D9B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,0BAA0C;EAAE,OAAO,EN7O1B,GAAO;;AM8OhC,oBAAoC;EAAE,OAAO,EN2K1B,GAAO;;AM1K1B,iBAAiC;EAAE,OAAO,ENvD1B,GAAO;;AMwDvB;;qBAEqC;EAAE,OAAO,ENsI1B,GAAO;;AMrI3B;yBACyC;EAAE,OAAO,ENjK1B,GAAO;;AMkK/B,gBAAgC;EAAE,OAAO,ENwK1B,GAAO;;AMvKtB,iBAAiC;EAAE,OAAO,ENvK1B,GAAO;;AMwKvB,iBAAiC;EAAE,OAAO,ENhB1B,GAAO;;AMiBvB,wBAAwC;EAAE,OAAO,ENhB1B,GAAO;;AMiB9B,6BAA6C;EAAE,OAAO,ENsE1B,GAAO;;AMrEnC,sBAAsC;EAAE,OAAO,ENoE1B,GAAO;;AMnE5B,oBAAoC;EAAE,OAAO,EN7Q1B,GAAO;;AM8Q1B,eAA+B;EAAE,OAAO,EN1Q1B,GAAO;;AM2QrB,qBAAqC;EAAE,OAAO,ENjD1B,GAAO;;AMkD3B,yBAAyC;EAAE,OAAO,ENjD1B,GAAO;;AMkD/B,iBAAiC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQvB,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,mBAAmC;EAAE,OAAO,ENzI1B,GAAO;;AM0IzB,cAA8B;EAAE,OAAO,EN9O1B,GAAO;;AM+OpB,mBAAmC;EAAE,OAAO,EN3W1B,GAAO;;AM4WzB,gBAAgC;EAAE,OAAO,EN9T1B,GAAO;;AM+TtB,cAA8B;EAAE,OAAO,ENnE1B,GAAO;;AMoEpB,gBAAgC;EAAE,OAAO,ENoC1B,GAAO;;AMnCtB,eAA+B;EAAE,OAAO,ENjS1B,GAAO;;AMkSrB,gBAAgC;EAAE,OAAO,ENjS1B,GAAO;;AMkStB,kBAAkC;EAAE,OAAO,ENtY1B,GAAO;;AMuYxB,yBAAyC;EAAE,OAAO,ENtY1B,GAAO;;AMuY/B,gBAAgC;EAAE,OAAO,EN2C1B,GAAO;;AM1CtB,uBAAuC;EAAE,OAAO,EN2C1B,GAAO;;AM1C7B,kBAAkC;EAAE,OAAO,ENvC1B,GAAO;;AMwCxB;cAC8B;EAAE,OAAO,EN3W1B,GAAO;;AM4WpB;eAC+B;EAAE,OAAO,EN2D1B,GAAO;;AM1DrB,eAA+B;EAAE,OAAO,ENuF1B,GAAO;;AMtFrB,kBAAkC;EAAE,OAAO,ENwB1B,GAAO;;AMvBxB,qBAAqC;EAAE,OAAO,ENpS1B,GAAO;;AMqS3B,qBAAqC;EAAE,OAAO,ENkB1B,GAAO;;AMjB3B,mBAAmC;EAAE,OAAO,EN1S1B,GAAO;;AM2SzB,qBAAqC;EAAE,OAAO,ENxP1B,GAAO;;AMyP3B,sBAAsC;EAAE,OAAO,ENjP1B,GAAO;;AMkP5B,uBAAuC;EAAE,OAAO,EN9P1B,GAAO;;AM+P7B,4BAA4C;EAAE,OAAO,ENxP1B,GAAO;;AMyPlC;;uBAEuC;EAAE,OAAO,ENjQ1B,GAAO;;AMkQ7B;yBACyC;EAAE,OAAO,ENvQ1B,GAAO;;AMwQ/B;uBACuC;EAAE,OAAO,ENxQ1B,GAAO;;AMyQ7B;uBACuC;EAAE,OAAO,EN7P1B,GAAO;;AM8P7B,sBAAsC;EAAE,OAAO,EN1Q1B,GAAO;;AM2Q5B,eAA+B;EAAE,OAAO,ENsG1B,GAAO;;AMrGrB,kBAAkC;EAAE,OAAO,ENlV1B,GAAO;;AMmVxB,mBAAmC;EAAE,OAAO,ENnL1B,GAAO;;AMoLzB;;;;oBAIoC;EAAE,OAAO,ENxK1B,GAAO;;AMyK1B,yBAAyC;EAAE,OAAO,ENpW1B,GAAO;;AMqW/B;gBACgC;EAAE,OAAO,EN1E1B,GAAO;;AM2EtB;iBACiC;EAAE,OAAO,ENpT1B,GAAO;;AMqTvB,qBAAqC;EAAE,OAAO,EN1O1B,GAAO;;AM2O3B,cAA8B;EAAE,OAAO,EN5O1B,GAAO;;AM6OpB,sBAAsC;EAAE,OAAO,EN7N1B,GAAO;;AM8N5B,wBAAwC;EAAE,OAAO,ENwB1B,GAAO;;AMvB9B,aAA6B;EAAE,OAAO,ENzF1B,GAAO;;AM0FnB;iBACiC;EAAE,OAAO,EN2F1B,GAAO;;AM1FvB;sBACsC;EAAE,OAAO,EN9H1B,GAAO;;AM+H5B;wBACwC;EAAE,OAAO,EN/H1B,GAAO;;AMgI9B,kBAAkC;EAAE,OAAO,EN3N1B,GAAO;;AM4NxB;sBACsC;EAAE,OAAO,ENrX1B,GAAO;;AMsX5B,iBAAiC;EAAE,OAAO,ENnO1B,GAAO;;AMoOvB,oBAAoC;EAAE,OAAO,ENlI1B,GAAO;;AMmI1B,kBAAkC;EAAE,OAAO,EN1C1B,GAAO;;AM2CxB,oBAAoC;EAAE,OAAO,EN7D1B,GAAO;;AM8D1B,2BAA2C;EAAE,OAAO,EN7D1B,GAAO;;AM8DjC,eAA+B;EAAE,OAAO,ENpb1B,GAAO;;AMqbrB;mBACmC;EAAE,OAAO,ENzQ1B,GAAO;;AM0QzB,cAA8B;EAAE,OAAO,ENsC1B,GAAO;;AMrCpB,qBAAqC;EAAE,OAAO,EN/b1B,GAAO;;AMgc3B,eAA+B;EAAE,OAAO,ENrH1B,GAAO;;AMsHrB,qBAAqC;EAAE,OAAO,ENlD1B,GAAO;;AMmD3B,iBAAiC;EAAE,OAAO,ENsC1B,GAAO;;AMrCvB,eAA+B;EAAE,OAAO,ENiF1B,GAAO;;AMhFrB,sBAAsC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ5B,eAA+B;EAAE,OAAO,ENuE1B,GAAO;;AMtErB,qBAAqC;EAAE,OAAO,ENjb1B,GAAO;;AMkb3B,iBAAiC;EAAE,OAAO,EN9I1B,GAAO;;AM+IvB,wBAAwC;EAAE,OAAO,ENhQ1B,GAAO;;AMiQ9B,kBAAkC;EAAE,OAAO,EN9Z1B,GAAO;;AM+ZxB,wBAAwC;EAAE,OAAO,ENla1B,GAAO;;AMma9B,sBAAsC;EAAE,OAAO,ENpa1B,GAAO;;AMqa5B,kBAAkC;EAAE,OAAO,ENta1B,GAAO;;AMuaxB,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,oBAAoC;EAAE,OAAO,ENpa1B,GAAO;;AMqa1B,qBAAqC;EAAE,OAAO,ENld1B,GAAO;;AMmd3B,uBAAuC;EAAE,OAAO,ENld1B,GAAO;;AMmd7B,gBAAgC;EAAE,OAAO,ENY1B,GAAO;;AMXtB,oBAAoC;EAAE,OAAO,EN3X1B,GAAO;;AM4X1B,aAA6B;EAAE,OAAO,ENre1B,GAAO;;AMsenB,qBAAqC;EAAE,OAAO,ENjV1B,GAAO;;AMkV3B,sBAAsC;EAAE,OAAO,ENpK1B,GAAO;;AMqK5B,wBAAwC;EAAE,OAAO,ENrd1B,GAAO;;AMsd9B,qBAAqC;EAAE,OAAO,EN3f1B,GAAO;;AM4f3B,oBAAoC;EAAE,OAAO,ENvJ1B,GAAO;;AMwJ1B,qBAAqC;EAAE,OAAO,EN5N1B,GAAO;;AM6N3B,iBAAiC;EAAE,OAAO,EN1O1B,GAAO;;AM2OvB,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,qBAAqC;EAAE,OAAO,ENN1B,GAAO;;AMO3B,oBAAoC;EAAE,OAAO,ENN1B,GAAO;;AMO1B,kBAAkC;EAAE,OAAO,EN/d1B,GAAO;;AMgexB,cAA8B;EAAE,OAAO,EN7c1B,GAAO;;AM8cpB,kBAAkC;EAAE,OAAO,EN1P1B,GAAO;;AM2PxB,oBAAoC;EAAE,OAAO,ENhhB1B,GAAO;;AMihB1B,aAA6B;EAAE,OAAO,EN7b1B,GAAO;;AM8bnB;;cAE8B;EAAE,OAAO,ENxQ1B,GAAO;;AMyQpB,mBAAmC;EAAE,OAAO,EN7M1B,GAAO;;AM8MzB,qBAAqC;EAAE,OAAO,ENpd1B,GAAO;;AMqd3B,yBAAyC;EAAE,OAAO,ENnZ1B,GAAO;;AMoZ/B,mBAAmC;EAAE,OAAO,ENxY1B,GAAO;;AMyYzB,mBAAmC;EAAE,OAAO,EN1T1B,GAAO;;AM2TzB,kBAAkC;EAAE,OAAO,ENxP1B,GAAO;;AMyPxB,iBAAiC;EAAE,OAAO,ENrH1B,GAAO;;AMsHvB,uBAAuC;EAAE,OAAO,ENzG1B,GAAO;;AM0G7B,sBAAsC;EAAE,OAAO,ENrG1B,GAAO;;AMsG5B,mBAAmC;EAAE,OAAO,ENpG1B,GAAO;;AMqGzB,oBAAoC;EAAE,OAAO,EN5c1B,GAAO;;AM6c1B,0BAA0C;EAAE,OAAO,EN9c1B,GAAO;;AM+chC,kBAAkC;EAAE,OAAO,EN3Y1B,GAAO;;AM4YxB,eAA+B;EAAE,OAAO,ENhH1B,GAAO;;AMiHrB,sBAAsC;EAAE,OAAO,ENI1B,GAAO;;AMH5B,qBAAqC;EAAE,OAAO,EN5M1B,GAAO;;AM6M3B,sBAAsC;EAAE,OAAO,ENpE1B,GAAO;;AMqE5B,oBAAoC;EAAE,OAAO,ENhS1B,GAAO;;AMiS1B,gBAAgC;EAAE,OAAO,ENG1B,GAAO;;AMFtB,eAA+B;EAAE,OAAO,ENtO1B,GAAO;;AMuOrB,kBAAkC;EAAE,OAAO,EN7N1B,GAAO;;AM8NxB,sBAAsC;EAAE,OAAO,ENhC1B,GAAO;;AMiC5B,0BAA0C;EAAE,OAAO,ENhC1B,GAAO;;AMiChC,uBAAuC;EAAE,OAAO,END1B,GAAO;;AME7B,sBAAsC;EAAE,OAAO,EN1O1B,GAAO;;AM2O5B,qBAAqC;EAAE,OAAO,ENF1B,GAAO;;AMG3B,sBAAsC;EAAE,OAAO,EN3O1B,GAAO;;AM4O5B,wBAAwC;EAAE,OAAO,EN1O1B,GAAO;;AM2O9B,wBAAwC;EAAE,OAAO,EN5O1B,GAAO;;AM6O9B,iBAAiC;EAAE,OAAO,ENvN1B,GAAO;;AMwNvB,4BAA4C;EAAE,OAAO,EN9X1B,GAAO;;AM+XlC,sBAAsC;EAAE,OAAO,ENhM1B,GAAO;;AMiM5B,mBAAmC;EAAE,OAAO,ENI1B,GAAO;;AMHzB,iBAAiC;EAAE,OAAO,EN7I1B,GAAO;;AM8IvB,oBAAoC;EAAE,OAAO,ENjB1B,GAAO;;AMkB1B,qBAAqC;EAAE,OAAO,ENhB1B,GAAO;;AMiB3B;cAC8B;EAAE,OAAO,ENphB1B,GAAO;;AMqhBpB,kBAAkC;EAAE,OAAO,ENd1B,GAAO;;AMexB,gBAAgC;EAAE,OAAO,ENnD1B,GAAO;;AMoDtB,iBAAiC;EAAE,OAAO,ENvF1B,GAAO;;AMwFvB,iBAAiC;EAAE,OAAO,ENrP1B,GAAO", +"sources": ["../scss/_path.scss","../scss/_core.scss","../scss/_larger.scss","../scss/_fixed-width.scss","../scss/_list.scss","../scss/_variables.scss","../scss/_bordered-pulled.scss","../scss/_animated.scss","../scss/_rotated-flipped.scss","../scss/_mixins.scss","../scss/_stacked.scss","../scss/_icons.scss"], +"names": [], +"file": "font-awesome.css" +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.min.css b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.min.css new file mode 100644 index 0000000..b3dc463 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/font-awesome.min.css @@ -0,0 +1,6 @@ +/*! + * Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */ + @font-face{font-family:'FontAwesome'; + src: url('../fonts/fontawesome-webfont.woff2') format('woff2'), url('../fonts/fontawesome-webfont.woff') format('woff');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/sonicglyph.css b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/sonicglyph.css new file mode 100644 index 0000000..3422842 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/css/sonicglyph.css @@ -0,0 +1,14 @@ +@font-face { + font-family: 'sonicglyph'; + src: url('../fonts/sonicglyph.woff') format('woff'); + font-weight: normal; + font-style: normal; +} +.s-glyph { + display: inline-block; + font: normal normal normal 16px/1 sonicglyph; + font-size: inherit; + text-rendering: auto; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/data/data.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/data/data.json new file mode 100644 index 0000000..08778d7 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/data/data.json @@ -0,0 +1 @@ +{\rtf1} \ No newline at end of file diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/download.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/download.png new file mode 100644 index 0000000..4e878ed Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/download.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold Italic.ttf b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold Italic.ttf new file mode 100644 index 0000000..f286d7b Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold Italic.ttf differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold.ttf b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold.ttf new file mode 100644 index 0000000..4366b43 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Bold.ttf differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun BoldItalic.ttf b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun BoldItalic.ttf new file mode 100644 index 0000000..beb5249 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun BoldItalic.ttf differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Italic.ttf b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Italic.ttf new file mode 100644 index 0000000..4be8ad8 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun Italic.ttf differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun.ttf b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun.ttf new file mode 100644 index 0000000..23dd82b Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/fonts/THSarabun.ttf differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/2021-12-24_1662642503238.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/2021-12-24_1662642503238.png new file mode 100644 index 0000000..3a1c499 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/2021-12-24_1662642503238.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/403.webp b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/403.webp new file mode 100644 index 0000000..3084cda Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/403.webp differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Header.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Header.png new file mode 100644 index 0000000..7c31ed6 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Header.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/HeaderLines.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/HeaderLines.png new file mode 100644 index 0000000..aeb32c8 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/HeaderLines.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/MultipleLines.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/MultipleLines.png new file mode 100644 index 0000000..15c6c0f Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/MultipleLines.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/OnlyLines.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/OnlyLines.png new file mode 100644 index 0000000..57cc6c3 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/OnlyLines.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Web-Page-Background-Color.jpg b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Web-Page-Background-Color.jpg new file mode 100644 index 0000000..d9a6044 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/Web-Page-Background-Color.jpg differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Actions.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Actions.png new file mode 100644 index 0000000..d8e8991 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Actions.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Dashboards.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Dashboards.png new file mode 100644 index 0000000..00b0dfb Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Dashboards.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Form.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Form.png new file mode 100644 index 0000000..c76f76f Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Form.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Integrations.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Integrations.png new file mode 100644 index 0000000..d2cbf55 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Integrations.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Jobs.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Jobs.png new file mode 100644 index 0000000..8a46130 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Jobs.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Permissions.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Permissions.png new file mode 100644 index 0000000..78de3a1 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Permissions.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Process.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Process.png new file mode 100644 index 0000000..5f49937 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Process.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Reports.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Reports.png new file mode 100644 index 0000000..061bdc2 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/Reports.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/web.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/web.png new file mode 100644 index 0000000..9d87be7 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/action/web.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copyfromPrj.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copyfromPrj.png new file mode 100644 index 0000000..557df67 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copyfromPrj.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copytemplate.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copytemplate.png new file mode 100644 index 0000000..f771715 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/copytemplate.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/database.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/database.png new file mode 100644 index 0000000..01622c7 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/database.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/fromscratch.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/fromscratch.png new file mode 100644 index 0000000..e51ca35 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/fromscratch.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/git.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/git.png new file mode 100644 index 0000000..89268b1 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/git.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/cradiant.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/cradiant.png new file mode 100644 index 0000000..620640a Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/cradiant.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/micrologo.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/micrologo.png new file mode 100644 index 0000000..7334d56 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/micrologo.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/sitelogo.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/sitelogo.png new file mode 100644 index 0000000..41e834f Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/icon/sitelogo.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/images.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/images.png new file mode 100644 index 0000000..e8798a3 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/images.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/logo.svg b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/logo.svg new file mode 100644 index 0000000..4abf5f5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/logo.svg @@ -0,0 +1,28 @@ + + + my vector image + + + + + Layer 1 + + + +

+ Sprin +

+
+ +

+ Gular +

+
+
+ + +
diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/micro logo.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/micro logo.png new file mode 100644 index 0000000..7334d56 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/micro logo.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/new.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/new.png new file mode 100644 index 0000000..b114da1 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/new.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/profile-icon.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/profile-icon.png new file mode 100644 index 0000000..bf82252 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/profile-icon.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/qr-code.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/qr-code.png new file mode 100644 index 0000000..9199216 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/qr-code.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/view.jpg b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/view.jpg new file mode 100644 index 0000000..40bd299 Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/view.jpg differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/who.png b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/who.png new file mode 100644 index 0000000..4311a3f Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/images/who.png differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/json/form-setup-mapping.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/json/form-setup-mapping.json new file mode 100644 index 0000000..3ef892b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/json/form-setup-mapping.json @@ -0,0 +1,33 @@ +[ + { "label": "textfield1", "value": "comp1" }, + { "label": "textfield2", "value": "comp2" }, + { "label": "textfield3", "value": "comp3" }, + { "label": "textfield4", "value": "comp4" }, + { "label": "textfield5", "value": "comp5" }, + { "label": "textfield6", "value": "comp6" }, + { "label": "textfield7", "value": "comp7" }, + { "label": "textfield8", "value": "comp8" }, + { "label": "textfield9", "value": "comp9" }, + { "label": "textfield10", "value": "comp10" }, + { "label": "textfield11", "value": "comp11" }, + { "label": "textfield12", "value": "comp12" }, + { "label": "textfield13", "value": "comp13" }, + { "label": "textfield14", "value": "comp14" }, + { "label": "textfield15", "value": "comp15" }, + { "label": "textfield16", "value": "comp16" }, + { "label": "textfield17", "value": "comp17" }, + { "label": "textfield18", "value": "comp18" }, + { "label": "textfield19", "value": "comp19" }, + { "label": "textfield20", "value": "comp20" }, + { "label": "textfield21", "value": "comp21" }, + { "label": "textfield22", "value": "comp22" }, + { "label": "textfield23", "value": "comp23" }, + { "label": "textfield24", "value": "comp24" }, + { "label": "textfield25", "value": "comp25" }, + { "label": "textfield26", "value": "comp26" }, + { "label": "longtext1", "value": "comp_l27" }, + { "label": "longtext2", "value": "comp_l28" }, + { "label": "longtext3", "value": "comp_l29" }, + { "label": "longtext4", "value": "comp_l30" } + +] diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss new file mode 100644 index 0000000..b54d8a2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss @@ -0,0 +1,90 @@ +body { + font-size:12px; + font-weight: normal; + overflow: auto; + margin:0; + padding:0; +} + +/* +h1 { font:$s-f1-size $s-f-family;font-weight:600 } +h2 { font:$s-f2-size $s-f-family;font-weight:600 } +h3 { font:$s-f3-size $s-f-family;font-weight:600 } +h4 { font:$s-f4-size $s-f-family;font-weight:600 } +h5 { font:$s-f5-size $s-f-family;font-weight:600 } +h6 { font:$s-f6-size $s-f-family;font-weight:600 } +*/ + +//.s-f {font-family: $s-f-family;} +.s-f1 { font:$s-f1-size;} +.s-f2 { font:$s-f2-size;} +.s-f3 { font:$s-f3-size;} +.s-f4 { font:$s-f4-size;} +.s-f5 { font:$s-f5-size;} +.s-f6 { font:$s-f6-size;} + +.s-f-tiny { font-size:$s-f-tiny-size;} +.s-f-body { font-size:$s-f-body-size;} +.s-f-small { font-size:$s-f-small-size;} +.s-f-medium { font-size:$s-f-medium-size;} +.s-f-large { font-size:$s-f-large-size;} + +.s-bold-500 { font-weight: 500; } +.s-bold-600 { font-weight: 600; } +.s-bold { font-weight: bold; } // weight:700 + +.s-c-text { color: $s-c-text; } +.s-c-inverse-text { color: $s-c-inverse-text; } +.s-c-disable-text { color: $s-c-disable-text; } + +.s-c-white { color: $s-c-white; } +.s-c-gray { color: $s-c-gray; } +.s-c-primary { color: $s-c-primary; } +.s-c-info { color: $s-c-info; } +.s-c-error { color: $s-c-error; } +.s-c-warning { color: $s-c-warning; } +.s-c-good { color: $s-c-good; } + +.s-bg-main { background-color: $s-bg-main; } +.s-bg-inverse { background-color: $s-bg-inverse; } +.s-bg-soft-white { background-color: $s-bg-soft-white;} +.s-bg-info { background-color: $s-c-info; } +.s-bg-error { background-color: $s-c-error; } +.s-bg-warning { background-color: $s-c-warning; } +.s-bg-good { background-color: $s-c-good; } + +.s-shadow-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } +.s-shadow-2 { box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } +.s-shadow-3 { box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); } +.s-shadow-4 { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); } +.s-shadow-5 { box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22); } + +.s-hidden { display: none;} +.s-ellipses { text-overflow: ellipsis;overflow: hidden;} +.s-nowrap { white-space: nowrap;} +.s-err-msg { color: $s-c-error;} +.s-link { color :$s-c-link-text;cursor:pointer;text-decoration: none;} +.s-link:hover { text-decoration: underline;} + +//Padding +.pad-16{ padding:16px;} +.no-margin{ padding:0; margin:0} + +//Align +.s-hbox-align-right{ + display: flex; + justify-content: flex-end; + flex-direction: row; +} + +.s-hbox-align-left{ + display: flex; + justify-content: flex-start; + flex-direction: row; +} + +.s-hbox-align-center{ + display: flex; + justify-content: center; + flex-direction: row; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~7e877128953f01225c7f977ebe54c7ae2aef2cab b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~7e877128953f01225c7f977ebe54c7ae2aef2cab new file mode 100644 index 0000000..b54d8a2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~7e877128953f01225c7f977ebe54c7ae2aef2cab @@ -0,0 +1,90 @@ +body { + font-size:12px; + font-weight: normal; + overflow: auto; + margin:0; + padding:0; +} + +/* +h1 { font:$s-f1-size $s-f-family;font-weight:600 } +h2 { font:$s-f2-size $s-f-family;font-weight:600 } +h3 { font:$s-f3-size $s-f-family;font-weight:600 } +h4 { font:$s-f4-size $s-f-family;font-weight:600 } +h5 { font:$s-f5-size $s-f-family;font-weight:600 } +h6 { font:$s-f6-size $s-f-family;font-weight:600 } +*/ + +//.s-f {font-family: $s-f-family;} +.s-f1 { font:$s-f1-size;} +.s-f2 { font:$s-f2-size;} +.s-f3 { font:$s-f3-size;} +.s-f4 { font:$s-f4-size;} +.s-f5 { font:$s-f5-size;} +.s-f6 { font:$s-f6-size;} + +.s-f-tiny { font-size:$s-f-tiny-size;} +.s-f-body { font-size:$s-f-body-size;} +.s-f-small { font-size:$s-f-small-size;} +.s-f-medium { font-size:$s-f-medium-size;} +.s-f-large { font-size:$s-f-large-size;} + +.s-bold-500 { font-weight: 500; } +.s-bold-600 { font-weight: 600; } +.s-bold { font-weight: bold; } // weight:700 + +.s-c-text { color: $s-c-text; } +.s-c-inverse-text { color: $s-c-inverse-text; } +.s-c-disable-text { color: $s-c-disable-text; } + +.s-c-white { color: $s-c-white; } +.s-c-gray { color: $s-c-gray; } +.s-c-primary { color: $s-c-primary; } +.s-c-info { color: $s-c-info; } +.s-c-error { color: $s-c-error; } +.s-c-warning { color: $s-c-warning; } +.s-c-good { color: $s-c-good; } + +.s-bg-main { background-color: $s-bg-main; } +.s-bg-inverse { background-color: $s-bg-inverse; } +.s-bg-soft-white { background-color: $s-bg-soft-white;} +.s-bg-info { background-color: $s-c-info; } +.s-bg-error { background-color: $s-c-error; } +.s-bg-warning { background-color: $s-c-warning; } +.s-bg-good { background-color: $s-c-good; } + +.s-shadow-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } +.s-shadow-2 { box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } +.s-shadow-3 { box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); } +.s-shadow-4 { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); } +.s-shadow-5 { box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22); } + +.s-hidden { display: none;} +.s-ellipses { text-overflow: ellipsis;overflow: hidden;} +.s-nowrap { white-space: nowrap;} +.s-err-msg { color: $s-c-error;} +.s-link { color :$s-c-link-text;cursor:pointer;text-decoration: none;} +.s-link:hover { text-decoration: underline;} + +//Padding +.pad-16{ padding:16px;} +.no-margin{ padding:0; margin:0} + +//Align +.s-hbox-align-right{ + display: flex; + justify-content: flex-end; + flex-direction: row; +} + +.s-hbox-align-left{ + display: flex; + justify-content: flex-start; + flex-direction: row; +} + +.s-hbox-align-center{ + display: flex; + justify-content: center; + flex-direction: row; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~HEAD b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~HEAD new file mode 100644 index 0000000..b54d8a2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_base.scss~HEAD @@ -0,0 +1,90 @@ +body { + font-size:12px; + font-weight: normal; + overflow: auto; + margin:0; + padding:0; +} + +/* +h1 { font:$s-f1-size $s-f-family;font-weight:600 } +h2 { font:$s-f2-size $s-f-family;font-weight:600 } +h3 { font:$s-f3-size $s-f-family;font-weight:600 } +h4 { font:$s-f4-size $s-f-family;font-weight:600 } +h5 { font:$s-f5-size $s-f-family;font-weight:600 } +h6 { font:$s-f6-size $s-f-family;font-weight:600 } +*/ + +//.s-f {font-family: $s-f-family;} +.s-f1 { font:$s-f1-size;} +.s-f2 { font:$s-f2-size;} +.s-f3 { font:$s-f3-size;} +.s-f4 { font:$s-f4-size;} +.s-f5 { font:$s-f5-size;} +.s-f6 { font:$s-f6-size;} + +.s-f-tiny { font-size:$s-f-tiny-size;} +.s-f-body { font-size:$s-f-body-size;} +.s-f-small { font-size:$s-f-small-size;} +.s-f-medium { font-size:$s-f-medium-size;} +.s-f-large { font-size:$s-f-large-size;} + +.s-bold-500 { font-weight: 500; } +.s-bold-600 { font-weight: 600; } +.s-bold { font-weight: bold; } // weight:700 + +.s-c-text { color: $s-c-text; } +.s-c-inverse-text { color: $s-c-inverse-text; } +.s-c-disable-text { color: $s-c-disable-text; } + +.s-c-white { color: $s-c-white; } +.s-c-gray { color: $s-c-gray; } +.s-c-primary { color: $s-c-primary; } +.s-c-info { color: $s-c-info; } +.s-c-error { color: $s-c-error; } +.s-c-warning { color: $s-c-warning; } +.s-c-good { color: $s-c-good; } + +.s-bg-main { background-color: $s-bg-main; } +.s-bg-inverse { background-color: $s-bg-inverse; } +.s-bg-soft-white { background-color: $s-bg-soft-white;} +.s-bg-info { background-color: $s-c-info; } +.s-bg-error { background-color: $s-c-error; } +.s-bg-warning { background-color: $s-c-warning; } +.s-bg-good { background-color: $s-c-good; } + +.s-shadow-1 { box-shadow: 0 1px 3px rgba(0,0,0,0.12), 0 1px 2px rgba(0,0,0,0.24); } +.s-shadow-2 { box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); } +.s-shadow-3 { box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.23); } +.s-shadow-4 { box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22); } +.s-shadow-5 { box-shadow: 0 19px 38px rgba(0,0,0,0.30), 0 15px 12px rgba(0,0,0,0.22); } + +.s-hidden { display: none;} +.s-ellipses { text-overflow: ellipsis;overflow: hidden;} +.s-nowrap { white-space: nowrap;} +.s-err-msg { color: $s-c-error;} +.s-link { color :$s-c-link-text;cursor:pointer;text-decoration: none;} +.s-link:hover { text-decoration: underline;} + +//Padding +.pad-16{ padding:16px;} +.no-margin{ padding:0; margin:0} + +//Align +.s-hbox-align-right{ + display: flex; + justify-content: flex-end; + flex-direction: row; +} + +.s-hbox-align-left{ + display: flex; + justify-content: flex-start; + flex-direction: row; +} + +.s-hbox-align-center{ + display: flex; + justify-content: center; + flex-direction: row; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_var.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_var.scss new file mode 100644 index 0000000..c3cc48b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/assets/scss/_var.scss @@ -0,0 +1,44 @@ +//Fonts +$s-f-family: Metropolis,Avenir Next,Helvetica Neue,Arial,sans-serif; +$s-f1-size: 24px; +$s-f2-size: 20px; +$s-f3-size: 18px; +$s-f4-size: 16px; +$s-f5-size: 14px; +$s-f6-size: 12px; +$s-f-body-size: 12px; +$s-f-tiny-size: 10px; +$s-f-small-size : 16px; +$s-f-medium-size: 24px; +$s-f-large-size : 32px; + +//****************** Color Scheme ******************** + +//Status Colors +$s-c-error : #CE1126; //critical +$s-c-warning: #E3642B; +$s-c-alert : #FFCC00; +$s-c-good : #6EA204; +$s-c-info : #007cbb; + +//Text Colors +$s-c-text : #333; // Main Text color used in most places +$s-c-inverse-text : #eee; // Text Color used on contrasting backgrounds such as buttons/tabs +$s-c-disable-text : gray; // Text Color used for displaying less emphasized text (eg:detail chart axis color) +$s-c-link-text : #007cbb; + +//Backgrounds +$s-bg-main : #ffffff; // Main Body Background Color +$s-bg-soft-white : whitesmoke; // Alternate Body Background (Such as Windows, Panels, Dropdowns) +$s-bg-inverse : #32404e; +$s-bg-gray : rgb(250, 250, 250); +$s-bg-white : #fff; + +//Borders +$s-c-bd : #ccc; + +//Named Colors +$s-c-white : #fff; +$s-c-gray : gray; +$s-c-soft-white : whitesmoke; +$s-c-primary : #005d84; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.prod.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.prod.ts new file mode 100644 index 0000000..f321af9 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.prod.ts @@ -0,0 +1,16 @@ +export const environment = { + production: true, + appName: 'My Application', + version: '11.2.13', + subVersion: '2021.05.13-01', + apiUrl: 'http://localhost:3000', + whiteUrl: 'http://localhost:3000', + blackUrl: 'http://localhost:3000/login', + // changeble url // port + + jobUrl:'http://localhost:8085', // http://realits.ml:30168/ jobprourl + chaturl:'http://localhost:4500', + //Deployment configs + + +}; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.ts new file mode 100644 index 0000000..ff04f93 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/environments/environment.ts @@ -0,0 +1,17 @@ +export const environment = { + production: false, + appName: 'My Application', + version: '11.2.13', + subVersion: '2021.05.13-01', + apiUrl: 'http://localhost:3000', + whiteUrl: 'http://localhost:3000', + blackUrl: 'http://localhost:3000/login', + + //Deployment configs + + backendUrl:'http://localhost:9292', + backport:'9292', + + + +}; diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/favicon.ico b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/favicon.ico new file mode 100644 index 0000000..997406a Binary files /dev/null and b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/favicon.ico differ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/index.html b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/index.html new file mode 100644 index 0000000..6c81ac2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/index.html @@ -0,0 +1,43 @@ + + + + + + cloudnSure + + + + + + + + + + + + + + + + + + + + + + + + + + Application Loading... + + + + diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/main.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/main.ts new file mode 100644 index 0000000..c7b673c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/main.ts @@ -0,0 +1,12 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule) + .catch(err => console.error(err)); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/polyfills.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/polyfills.ts new file mode 100644 index 0000000..03711e5 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/polyfills.ts @@ -0,0 +1,63 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/guide/browser-support + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** + * Web Animations `@angular/platform-browser/animations` + * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. + * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). + */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + +/** + * By default, zone.js will patch all possible macroTask and DomEvents + * user can disable parts of macroTask/DomEvents patch by setting following flags + * because those flags need to be set before `zone.js` being loaded, and webpack + * will put import in the top of bundle, so user need to create a separate file + * in this directory (for example: zone-flags.ts), and put the following flags + * into that file, and then add the following code before importing zone.js. + * import './zone-flags'; + * + * The flags allowed in zone-flags.ts are listed here. + * + * The following flags will work for all browsers. + * + * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame + * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick + * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames + * + * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js + * with the following flag, it will bypass `zone.js` patch for IE/Edge + * + * (window as any).__Zone_enable_cross_context_check = true; + * + */ + +/*************************************************************************************************** + * Zone JS is required by default for Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/app.js b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/app.js new file mode 100644 index 0000000..3cee833 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/app.js @@ -0,0 +1,27 @@ + +const express = require('express'); +const { createProxyMiddleware } = require('http-proxy-middleware'); +const cors = require('cors') +const app = express(); +const proxy = require('express-http-proxy'); + +app.use(cors({ + origin: '*' +})) +app.use('/repos', createProxyMiddleware({ target: 'https://try.gitea.io/api/v1', changeOrigin: true })); +app.use('/sureconnect', createProxyMiddleware({ target: 'http://43.205.154.152:30174', changeOrigin: true })); +app.use('/sureops', createProxyMiddleware({ target: 'http://43.205.154.152:31123', changeOrigin: true })); +app.use('/entityBuilder', createProxyMiddleware({ target: 'http://43.205.154.152:30171', changeOrigin: true })); +app.use('/surechat', createProxyMiddleware({ target: 'http://43.205.154.152:30172', changeOrigin: true })); +app.use('/jobpro', createProxyMiddleware({ target: 'http://43.205.154.152:30167', changeOrigin: true })); +app.use('/Surecommunication', createProxyMiddleware({ target: 'http://43.205.154.152:30187', changeOrigin: true })); +app.use('/surejob', createProxyMiddleware({ target: 'http://43.205.154.152:30188', changeOrigin: true })); + +//Deployment configs + + +// app.listen(3000); +// console.log('Node server running on port 3000'); +app.listen(3000, () => { + console.log("Server started in port 3000!"); +}); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/db.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/db.json new file mode 100644 index 0000000..16b3149 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/db.json @@ -0,0 +1,8 @@ +{ + "add": [ + { + "title": "todo", + "id": "Gosd82Z" + } + ] +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package-lock.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package-lock.json new file mode 100644 index 0000000..0d6968c --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package-lock.json @@ -0,0 +1,537 @@ +{ + "name": "server", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.33.tgz", + "integrity": "sha512-miWq2m2FiQZmaHfdZNcbpp9PuXg34W5JZ5CrJ/BaS70VuhoJENBEQybeiYSaPBRNq6KQGnjfEnc/F3PN++D+XQ==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" + }, + "axios": { + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.1.tgz", + "integrity": "sha512-dKQiRHxGD9PPRIUNIWvZhPTPpl1rf/OxTYKsqKUDjBwYylTvV7SjSHJb9ratfyzM6wCdLCOYLzs73qpg5c4iGA==", + "requires": { + "follow-redirects": "^1.10.0" + } + }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "requires": { + "safe-buffer": "5.1.2" + } + }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + } + }, + "express-http-proxy": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/express-http-proxy/-/express-http-proxy-1.6.3.tgz", + "integrity": "sha512-/l77JHcOUrDUX8V67E287VEUQT0lbm71gdGVoodnlWBziarYKgMcpqT7xvh/HM8Jv52phw8Bd8tY+a7QjOr7Yg==", + "requires": { + "debug": "^3.0.1", + "es6-promise": "^4.1.1", + "raw-body": "^2.3.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + } + }, + "follow-redirects": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.2.tgz", + "integrity": "sha512-yLR6WaE2lbF0x4K2qE2p9PEXKLDjUjnR/xmjS3wHAYxtlsI9MLLBJUZirAHKzUZDGLxje7w/cXR49WOUo4rbsA==" + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-1.0.5.tgz", + "integrity": "sha512-CKzML7u4RdGob8wuKI//H8Ein6wNTEQR7yjVEzPbhBLGdOfkfvgTnp2HLnniKBDP9QW4eG10/724iTWLBeER3g==", + "requires": { + "@types/http-proxy": "^1.17.4", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.19", + "micromatch": "^4.0.2" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + }, + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==" + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "requires": { + "mime-db": "1.49.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + } + }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + } + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package.json new file mode 100644 index 0000000..5ea1e92 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/server/package.json @@ -0,0 +1,18 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "axios": "^0.21.1", + "cors": "^2.8.5", + "express": "^4.17.1", + "express-http-proxy": "^1.6.3", + "http-proxy-middleware": "^1.0.5" + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles.scss new file mode 100644 index 0000000..ede814e --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles.scss @@ -0,0 +1,206 @@ +@import url(//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css); +@import '~bootstrap-icons/font/bootstrap-icons.css'; +@import '~codemirror/lib/codemirror.css'; +@import '~codemirror/theme/idea.css'; +@import '~codemirror/addon/fold/foldgutter.css'; +@import '~codemirror/addon/lint/lint.css'; + + + + + +/* font set ==================== */ +@import url(https://fonts.googleapis.com/css?family=Athiti|Bai+Jamjuree|Chakra+Petch|Charmonman|Chonburi|Fahkwang|Itim|K2D|Kanit|KoHo|Kodchasan|Krub|Maitree|Mali|Mitr|Niramit|Pattaya|Pridi|Prompt|Sriracha|Srisakdi|Taviraj|Trirong); + +.font-athiti { font-family: 'Athiti', sans-serif; } +.font-bai-jamjuree { font-family: 'Bai Jamjuree', sans-serif; } +.font-chakra-petch { font-family: 'Chakra Petch', sans-serif; } +.font-charmonman { font-family: 'Charmonman', cursive; } +.font-chonburi { font-family: 'Chonburi', cursive; } +.font-fahkwang { font-family: 'Fahkwang', sans-serif; } +.font-itim { font-family: 'Itim', cursive; } +.font-k2d { font-family: 'K2D', sans-serif; } +.font-kodchasan { font-family: 'Kodchasan', sans-serif; } +.font-kanit { font-family: 'Kanit', sans-serif; } +.font-koHo { font-family: 'KoHo', sans-serif; } +.font-krub { font-family: 'Krub', sans-serif; } +.font-mali { font-family: 'Mali', cursive; } +.font-mitr { font-family: 'Mitr', sans-serif; } +.font-maitree { font-family: 'Maitree', serif; } +.font-niramit { font-family: 'Niramit', sans-serif; } +.font-pattaya { font-family: 'Pattaya', sans-serif; } +.font-pridi { font-family: 'Pridi', serif; } +.font-prompt { font-family: 'Prompt', sans-serif; } +.font-srisakdi { font-family: 'Srisakdi', cursive; } +.font-taviraj { font-family: 'Taviraj', serif; } +.font-sriracha { font-family: 'Sriracha', cursive; } +.font-trirong { font-family: 'Trirong', serif; } + +@font-face { + font-family: 'th-sarabun'; + src: url('./assets/fonts/THSarabun.ttf') format('truetype'), + url('/assets/fonts/THSarabun Bold.ttf') format('truetype'), + url('/assets/fonts/THSarabun Italic.ttf') format('truetype'), + url('/assets/fonts/THSarabun Bold Italic.ttf') format('truetype'); + } +.font-thsarabun { font-family: 'th-sarabun', cursive; font-size : 16pt; } + +.font-bold { font-weight: bold; } +.font-italic { font-style: italic; } +/* end font set ==================== */ + +.breadcrumb { + font-family: 'calibri'; + margin-top: 0px !important; +} + +.breadcrumb-arrow { + height: 36px; + padding: 0 !important; + line-height: 36px; + list-style: none !important; + background-color: #ebeceb !important; +} +.breadcrumb-arrow li:first-child a { + border-radius: 4px 0 0 4px; + -webkit-border-radius: 4px 0 0 4px; + -moz-border-radius: 4px 0 0 4px +} +.breadcrumb-arrow li, .breadcrumb-arrow li a, .breadcrumb-arrow li span { + display: inline-block; + vertical-align: top +} +.breadcrumb-arrow li:not(:first-child) { + margin-left: -5px +} +.breadcrumb-arrow li+li:before { + padding: 0; + content: "" +} +.breadcrumb-arrow li span { + padding: 0 10px +} +.breadcrumb-arrow li a, .breadcrumb-arrow li:not(:first-child) span { + height: 36px; + padding: 0 10px 0 25px; + line-height: 36px +} +.breadcrumb-arrow li:first-child a { + padding: 0 10px +} +.breadcrumb-arrow li a { + position: relative; + color: #fff; + text-decoration: none; + background-color: rgb(128, 130, 131); + border: 1px solid rgb(128, 130, 131); +} +.breadcrumb-arrow li:first-child a { + padding-left: 10px +} +.breadcrumb-arrow li a:after, .breadcrumb-arrow li a:before { + position: absolute; + top: -1px; + width: 0; + height: 0; + content: ''; + border-top: 18px solid transparent; + border-bottom: 18px solid transparent +} +.breadcrumb-arrow li a:before { + right: -10px; + z-index: 3; + border-left-color: rgb(128, 130, 131); + border-left-style: solid; + border-left-width: 11px +} +.breadcrumb-arrow li a:after { + right: -11px; + z-index: 2; + border-left: 11px solid #38393a +} +.breadcrumb-arrow li a:focus, .breadcrumb-arrow li a:hover { + background-color: #b7bbb7; + border: 1px solid #b7bbb7; + text-shadow: 1px 1px 1px rgb(20, 20, 20); +} +.breadcrumb-arrow li a:focus:before, .breadcrumb-arrow li a:hover:before { + border-left-color: #b7bbb7 +} +.breadcrumb-arrow li a:active { + background-color: #c5ccc5; + border: 1px solid #c5ccc5; +} +.breadcrumb-arrow li a:active:after, .breadcrumb-arrow li a:active:before { + border-left-color: #adb6ad; +} +.breadcrumb-arrow li span { + color: #7e8a83; +} + +.full-div { +padding: 0px 0px 0px 0px; +height: 100vh; +width: 100%; +margin-right: 0; +} + +.dg-wrapper { + margin-top: 0; + display: flex; + flex-direction: column; + height: 500px; +} + +.dg-wrapper-300 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 300px; +} + +.dg-wrapper-400 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 400px; +} + +.dg-wrapper-450 { + margin-top: 0; + display: flex; + flex-direction: column; + height: 450px; +} + +.dg-wrapper-500 { + display: flex; + flex-direction: column; + height: 500px; +} + +.dg-wrapper-600 { + display: flex; + flex-direction: column; + height: 600px; +} + +.dg-wrapper-700 { + display: flex; + flex-direction: column; + height: 700px; +} + +.dg-wrapper-800 { + display: flex; + flex-direction: column; + height: 800px; +} + +.float-left { + float: left !important; +} + +.float-right { + float: right !important; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles1.scss b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles1.scss new file mode 100644 index 0000000..5a058a2 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/styles1.scss @@ -0,0 +1,54 @@ +input[type=text],[type=date],[type=password] { + width: 100%; + padding: 5px 20px; + // margin: 3px 0; + background-color:rgb(255, 255, 255); + display: inline-block; + border: 1px solid #ccc; + border-radius: 4px; + box-sizing: border-box; +} +.required-field{ + color: red; +font-size: 18px; + +} +.green{ + background-color: rgb(156, 231, 156); + color: black; +} +.blue{ + background-color: #57abcf;//rgb(82, 87, 161); + color: black; +} +.td-title { + text-align: center; + width: 150px; +color: white; + font-weight: bold; + background-color: rgba(63, 122, 231, 0.863); + //color: rgb(24, 13, 13); +} +th{ + background-color:rgb(170, 169, 169); + font-weight: bold; +} +.td-content{ + text-align: left; +} +.delete,.heading{ + text-align: center; + color: red; +} +.section p { +background-color: rgb(206, 201, 201); + padding: 10px; + font-size: 18px; +} + +select{ + width: 100%; + padding: 5px 5px; + border: 1px solid #ccc; + border-radius: 4px; +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/test.ts b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/test.ts new file mode 100644 index 0000000..50193eb --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/src/test.ts @@ -0,0 +1,25 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/zone-testing'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +declare const require: { + context(path: string, deep?: boolean, filter?: RegExp): { + keys(): string[]; + (id: string): T; + }; +}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.app.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.app.json new file mode 100644 index 0000000..f0f7de3 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.app.json @@ -0,0 +1,19 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/app", + "types": [], + "skipLibCheck": true + }, + "files": [ + "src/main.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ], + "angularCompilerOptions": { + "enableIvy": false + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.json new file mode 100644 index 0000000..b62b646 --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.json @@ -0,0 +1,21 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "compileOnSave": false, + "compilerOptions": { + "baseUrl": "./", + "outDir": "./dist/out-tsc", + "sourceMap": true, + "declaration": false, + "downlevelIteration": true, + "experimentalDecorators": true, + "moduleResolution": "node", + "importHelpers": true, + "target": "ES2022", + "module": "ES2022", + "lib": [ + "ES2022", + "dom" + ], + "useDefineForClassFields": false + } +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.spec.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.spec.json new file mode 100644 index 0000000..092345b --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tsconfig.spec.json @@ -0,0 +1,18 @@ +/* To learn more about this file see: https://angular.io/config/tsconfig. */ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "./out-tsc/spec", + "types": [ + "jasmine" + ] + }, + "files": [ + "src/test.ts", + "src/polyfills.ts" + ], + "include": [ + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tslint.json b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tslint.json new file mode 100644 index 0000000..67bcdea --- /dev/null +++ b/pro103ab-front-f/authsec_angular_bootsstrap/angular-bootstrap/tslint.json @@ -0,0 +1,152 @@ +{ + "extends": "tslint:recommended", + "rules": { + "align": { + "options": [ + "parameters", + "statements" + ] + }, + "array-type": false, + "arrow-return-shorthand": true, + "curly": true, + "deprecation": { + "severity": "warning" + }, + "component-class-suffix": true, + "contextual-lifecycle": true, + "directive-class-suffix": true, + "directive-selector": [ + true, + "attribute", + "app", + "camelCase" + ], + "component-selector": [ + true, + "element", + "app", + "kebab-case" + ], + "eofline": true, + "import-blacklist": [ + true, + "rxjs/Rx" + ], + "import-spacing": true, + "indent": { + "options": [ + "spaces" + ] + }, + "max-classes-per-file": false, + "max-line-length": [ + true, + 140 + ], + "member-ordering": [ + true, + { + "order": [ + "static-field", + "instance-field", + "static-method", + "instance-method" + ] + } + ], + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-empty": false, + "no-inferrable-types": [ + true, + "ignore-params" + ], + "no-non-null-assertion": true, + "no-redundant-jsdoc": true, + "no-switch-case-fall-through": true, + "no-var-requires": false, + "object-literal-key-quotes": [ + true, + "as-needed" + ], + "quotemark": [ + true, + "single" + ], + "semicolon": { + "options": [ + "always" + ] + }, + "space-before-function-paren": { + "options": { + "anonymous": "never", + "asyncArrow": "always", + "constructor": "never", + "method": "never", + "named": "never" + } + }, + "typedef": [ + true, + "call-signature" + ], + "typedef-whitespace": { + "options": [ + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + }, + { + "call-signature": "onespace", + "index-signature": "onespace", + "parameter": "onespace", + "property-declaration": "onespace", + "variable-declaration": "onespace" + } + ] + }, + "variable-name": { + "options": [ + "ban-keywords", + "check-format", + "allow-pascal-case" + ] + }, + "whitespace": { + "options": [ + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type", + "check-typecast" + ] + }, + "no-conflicting-lifecycle": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-inputs-metadata-property": true, + "no-output-native": true, + "no-output-on-prefix": true, + "no-output-rename": true, + "no-outputs-metadata-property": true, + "template-banana-in-box": true, + "template-no-negated-async": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true + }, + "rulesDirectory": [ + "codelyzer" + ] +} \ No newline at end of file