From 62cf05fc457d95260eabf9df5d6aa5db1c0d257c Mon Sep 17 00:00:00 2001
From: Rhys Nute <nuterd@cardiff.ac.uk>
Date: Sun, 10 Dec 2023 10:58:51 +0000
Subject: [PATCH] updated databases

---
 .../Organisation/organisationControllers.java | 29 +++++++++-
 .../Team5/SmartTowns/business/business.java   | 57 +++++++++++++++++++
 .../business/businessRepository.java          | 10 ++++
 .../business/businessRepositoryJDBC.java      | 47 +++++++++++++++
 4 files changed, 140 insertions(+), 3 deletions(-)
 create mode 100644 src/main/java/Team5/SmartTowns/business/business.java
 create mode 100644 src/main/java/Team5/SmartTowns/business/businessRepository.java
 create mode 100644 src/main/java/Team5/SmartTowns/business/businessRepositoryJDBC.java

diff --git a/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java b/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
index 3108a2dd..098cad81 100644
--- a/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
+++ b/src/main/java/Team5/SmartTowns/Organisation/organisationControllers.java
@@ -1,11 +1,18 @@
 package Team5.SmartTowns.Organisation;
 
+import Team5.SmartTowns.business.business;
+import Team5.SmartTowns.business.businessRepository;
+import jakarta.validation.Valid;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.ui.Model;
+import org.springframework.validation.BindingResult;
 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.ModelAttribute;
 import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.bind.annotation.PostMapping;
+
 import org.springframework.stereotype.Controller;
+
 @Controller
 public class organisationControllers {
     @GetMapping("/localauthorities")
@@ -18,7 +25,23 @@ public class organisationControllers {
         ModelAndView modelAndView = new ModelAndView("WorkWith/business.html");
         return modelAndView;
     }
-    @GetMapping("/consumers")
+    @Autowired
+    private businessRepository businessRepository;
+    @PostMapping("/businesssub")
+    public ModelAndView localAuthSent(@Valid @ModelAttribute("business-data")business  business, BindingResult bindingResult, Model model ) {
+        if (bindingResult.hasErrors()) {
+            ModelAndView modelAndView = new ModelAndView("business-data", model.asMap());
+            return modelAndView;
+        } else {// converts user input using the organisation constructor into a submittable format to the sql table
+
+            business bus = new business(business.getBusinessName(), business.getAddress1(), business.getAddress2(), business.getCity(), business.getCounty(), business.getPostcode(), business.getWebsite());
+            System.out.println(bus);
+            businessRepository.addBusiness(bus); //add local authority to local authority table
+            ModelAndView modelAndView = new ModelAndView("redirect:/businesses");
+            return modelAndView;
+        }
+    }
+        @GetMapping("/consumers")
     public ModelAndView getConsumersPage(){
         ModelAndView modelAndView = new ModelAndView("WorkWith/consumers.html");
         return modelAndView;
diff --git a/src/main/java/Team5/SmartTowns/business/business.java b/src/main/java/Team5/SmartTowns/business/business.java
new file mode 100644
index 00000000..361fda10
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/business/business.java
@@ -0,0 +1,57 @@
+package Team5.SmartTowns.business;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+
+@AllArgsConstructor
+@Data
+public class business {
+    private String businessName;
+    private String address1;
+    private String address2;
+    private String city;
+    private String county;
+    private String postcode;
+    private String website;
+
+    @Override
+    public String toString(){
+        return "business{" +
+                businessName + '\'' +
+                address1 + '\'' +
+                address2 + '\'' +
+                city + '\'' +
+                county + '\'' +
+                postcode + '\'' +
+                website +
+                '}';
+    }
+
+    public String getBusinessName() {
+        return businessName;
+    }
+
+    public String getAddress1() {
+        return address1;
+    }
+
+    public String getAddress2() {
+        return address2;
+    }
+
+    public String getCity() {
+        return city;
+    }
+
+    public String getCounty() {
+        return county;
+    }
+
+    public String getPostcode() {
+        return postcode;
+    }
+
+    public String getWebsite() {
+        return website;
+    }
+}
diff --git a/src/main/java/Team5/SmartTowns/business/businessRepository.java b/src/main/java/Team5/SmartTowns/business/businessRepository.java
new file mode 100644
index 00000000..00bcc879
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/business/businessRepository.java
@@ -0,0 +1,10 @@
+package Team5.SmartTowns.business;
+
+import java.util.List;
+
+public interface businessRepository {
+    List<business> getAllBusinesses();
+    void addBusiness(business bus);
+
+    void addLocalAuthority(business bus);
+}
diff --git a/src/main/java/Team5/SmartTowns/business/businessRepositoryJDBC.java b/src/main/java/Team5/SmartTowns/business/businessRepositoryJDBC.java
new file mode 100644
index 00000000..cdf4f78b
--- /dev/null
+++ b/src/main/java/Team5/SmartTowns/business/businessRepositoryJDBC.java
@@ -0,0 +1,47 @@
+package Team5.SmartTowns.business;
+import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.RowMapper;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+@Repository
+public class businessRepositoryJDBC implements businessRepository{
+
+        private JdbcTemplate jdbc;
+        private RowMapper<business> businessMapper;
+
+        public businessRepositoryJDBC(JdbcTemplate ajdbc){
+            this.jdbc = ajdbc;
+            setbusinessMapper();
+        }
+
+        private void setbusinessMapper(){
+            businessMapper = (rs, i) -> new business(
+                    rs.getString("businessName"),
+                    rs.getString("address1"),
+                    rs.getString("address2"),
+                    rs.getString("city"),
+                    rs.getString("county"),
+                    rs.getString("postcode"),
+                    rs.getString("website")
+            );
+        }
+        public List<business> getAllBusinesses(){
+            String sql = "SELECT * FROM localAuthority";
+            return jdbc.query(sql, businessMapper);
+        }
+
+    @Override
+    public void addBusiness(business bus) {
+
+    }
+
+    @Override
+        public void addLocalAuthority(business bus){
+            String sql = "INSERT INTO business( businessName, address1, address2, city, county, postcode, website) values (?, ?, ?, ?, ?, ?, ?)";
+            jdbc.update(sql, bus.getBusinessName(),bus.getAddress1(),bus.getAddress2(),bus.getCity(),bus.getCounty(),bus.getPostcode(),bus.getWebsite());
+        }
+
+    }
+
+
-- 
GitLab