diff --git a/pom.xml b/pom.xml index a41a611..4961a2c 100644 --- a/pom.xml +++ b/pom.xml @@ -38,10 +38,12 @@ spring-boot-starter-test test + org.springframework.boot spring-boot-starter-security + org.projectlombok lombok diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java index 9769c9a..aed21b6 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/ExpenseController.java @@ -4,10 +4,8 @@ import com.faf223.expensetrackerfaf.model.Expense; import com.faf223.expensetrackerfaf.service.ExpenseService; 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 org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; import java.util.List; @@ -15,17 +13,47 @@ import java.util.List; @RequestMapping("/expenses") public class ExpenseController { - @Autowired - private ExpenseService expenseService; + private final ExpenseService expenseService; - @GetMapping("/user/{userUuid}") - public ResponseEntity> getExpensesByUser(@PathVariable String userUuid) { - List expenses = expenseService.getExpensesByUserId(userUuid); - if (!expenses.isEmpty()) { - return ResponseEntity.ok(expenses); + @Autowired + public ExpenseController(ExpenseService expenseService) { + this.expenseService = expenseService; + } + + @GetMapping() + public ResponseEntity> getAllExpenses() { + List expenses = expenseService.getExpenses(); + if (!expenses.isEmpty()) return ResponseEntity.ok(expenses); + else return ResponseEntity.notFound().build(); + } + + @PostMapping() + public ResponseEntity createNewExpense(@RequestBody Expense expense, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + expenseService.createOrUpdateExpense(expense); + return ResponseEntity.ok(expense); } else { return ResponseEntity.notFound().build(); } } + + @PatchMapping() + public ResponseEntity updateExpense(@RequestBody Expense expense, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + expenseService.createOrUpdateExpense(expense); + return ResponseEntity.ok(expense); + } else { + return ResponseEntity.notFound().build(); + } + } + + @GetMapping("/{userUuid}") + public ResponseEntity> getExpensesByUser(@PathVariable String userUuid) { + List expenses = expenseService.getExpensesByUserId(userUuid); + if (!expenses.isEmpty()) return ResponseEntity.ok(expenses); + else return ResponseEntity.notFound().build(); + } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java index 078c65a..ffc0497 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/IncomeController.java @@ -4,27 +4,57 @@ import com.faf223.expensetrackerfaf.model.Income; import com.faf223.expensetrackerfaf.service.IncomeService; 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 org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/incomes") public class IncomeController { - @Autowired - private IncomeService incomeService; - @GetMapping("/user/{userUuid}") - public ResponseEntity> getIncomesByUser(@PathVariable String userUuid) { - List incomes = incomeService.getIncomesByUserId(userUuid); - if (!incomes.isEmpty()) { - return ResponseEntity.ok(incomes); + private final IncomeService incomeService; + + @Autowired + public IncomeController(IncomeService incomeService) { + this.incomeService = incomeService; + } + + @GetMapping() + public ResponseEntity> getAllIncomes() { + List incomes = incomeService.getIncomes(); + if (!incomes.isEmpty()) return ResponseEntity.ok(incomes); + else return ResponseEntity.notFound().build(); + } + + @PostMapping() + public ResponseEntity createNewIncome(@RequestBody Income income, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + incomeService.createOrUpdateIncome(income); + return ResponseEntity.ok(income); } else { return ResponseEntity.notFound().build(); } } + + @PatchMapping() + public ResponseEntity updateIncome(@RequestBody Income income, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + System.out.println("amount: " + income.getAmount()); + incomeService.createOrUpdateIncome(income); + return ResponseEntity.ok(income); + } else { + return ResponseEntity.notFound().build(); + } + } + + @GetMapping("/{userUuid}") + public ResponseEntity> getIncomesByUser(@PathVariable String userUuid) { + List incomes = incomeService.getIncomesByUserId(userUuid); + if (!incomes.isEmpty()) return ResponseEntity.ok(incomes); + else return ResponseEntity.notFound().build(); + } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java deleted file mode 100644 index 47ba33b..0000000 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/MainController.java +++ /dev/null @@ -1,66 +0,0 @@ -//package com.faf223.expensetrackerfaf.controller; -// -//import com.faf223.expensetrackerfaf.model.Expense; -//import com.faf223.expensetrackerfaf.model.Income; -//import com.faf223.expensetrackerfaf.model.Role; -//import com.faf223.expensetrackerfaf.model.User; -//import org.springframework.web.bind.annotation.*; -// -//import java.util.List; -// -//@RestController -//public class MainController { -// -// @GetMapping("/") -// public String helloWorld() { -// return "Hello, World!"; -// } -// -// @GetMapping("/users/get/{id}") -// public User getUser(@PathVariable int id) { -// return new User(id, "Test", null, null, null, null, null, null); -// } -// -// @PostMapping("/users/set/{id}/name") -// public String setName(@PathVariable int id, -// @RequestParam("name") String name) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/email") -// public String setEmail(@PathVariable int id, -// @RequestParam("email") String email) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/login") -// public String setLogin(@PathVariable int id, -// @RequestParam("login") String login) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/password") -// public String setPassword(@PathVariable int id, -// @RequestParam("password") String password) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/role") -// public String setRole(@PathVariable int id, -// @RequestParam("role") Role role) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/expenses") -// public String setExpenses(@PathVariable int id, -// @RequestParam("expenses") List expenses) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -// @PostMapping("/users/set/{id}/incomes") -// public String setIncomes(@PathVariable int id, -// @RequestParam("incomes")List incomes) { -// throw new UnsupportedOperationException("Waiting for the DB."); -// } -// -//} diff --git a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java index a9de44e..afe8623 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java +++ b/src/main/java/com/faf223/expensetrackerfaf/controller/UserController.java @@ -4,26 +4,56 @@ import com.faf223.expensetrackerfaf.model.User; import com.faf223.expensetrackerfaf.service.UserService; 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 org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import java.util.List; @RestController @RequestMapping("/users") public class UserController { - @Autowired - private UserService userService; + private final UserService userService; - @GetMapping("/{userUuid}") - public ResponseEntity getUser(@PathVariable String userUuid) { - User user = userService.getUserById(userUuid); - if (user != null) { + @Autowired + public UserController(UserService userService) { + this.userService = userService; + } + + @GetMapping() + public ResponseEntity> getAllUsers() { + List users = userService.getUsers(); + if (!users.isEmpty()) return ResponseEntity.ok(users); + else return ResponseEntity.notFound().build(); + } + + @PostMapping() + public ResponseEntity createNewUser(@RequestBody User user, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + userService.createOrUpdateUser(user); return ResponseEntity.ok(user); } else { return ResponseEntity.notFound().build(); } } + + @PatchMapping() + public ResponseEntity updateUser(@RequestBody User user, + BindingResult bindingResult) { + if (!bindingResult.hasErrors()) { + userService.createOrUpdateUser(user); + return ResponseEntity.ok(user); + } else { + return ResponseEntity.notFound().build(); + } + } + + @GetMapping("/{userUuid}") + public ResponseEntity getUser(@PathVariable String userUuid) { + User user = userService.getUserById(userUuid); + if (user != null) return ResponseEntity.ok(user); + else return ResponseEntity.notFound().build(); + } } diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java index 443ca0d..56ef226 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/ExpenseService.java @@ -10,10 +10,22 @@ import java.util.List; @Service public class ExpenseService { + private final ExpenseRepository expenseRepository; + @Autowired - private ExpenseRepository expenseRepository; + public ExpenseService(ExpenseRepository expenseRepository) { + this.expenseRepository = expenseRepository; + } + + public void createOrUpdateExpense(Expense expense) { + expenseRepository.save(expense); + } public List getExpensesByUserId(String userUuid) { return expenseRepository.findByUserUserUuid(userUuid); } + + public List getExpenses() { + return expenseRepository.findAll(); + } } \ No newline at end of file diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java index 5ca97d1..65347fb 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/IncomeService.java @@ -9,8 +9,21 @@ import java.util.List; @Service public class IncomeService { + + private final IncomeRepository incomeRepository; + @Autowired - private IncomeRepository incomeRepository; + public IncomeService(IncomeRepository incomeRepository) { + this.incomeRepository = incomeRepository; + } + + public void createOrUpdateIncome(Income income) { + incomeRepository.save(income); + } + + public List getIncomes() { + return incomeRepository.findAll(); + } public List getIncomesByUserId(String userUuid) { return incomeRepository.findByUserUserUuid(userUuid); diff --git a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java index e9c3798..956dfe1 100644 --- a/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java +++ b/src/main/java/com/faf223/expensetrackerfaf/service/UserService.java @@ -5,11 +5,25 @@ import com.faf223.expensetrackerfaf.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class UserService { + private final UserRepository userRepository; + @Autowired - private UserRepository userRepository; + public UserService(UserRepository userRepository) { + this.userRepository = userRepository; + } + + public void createOrUpdateUser(User user) { + userRepository.save(user); + } + + public List getUsers() { + return userRepository.findAll(); + } public User getUserById(String userUuid) { return userRepository.findById(userUuid).orElse(null); diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties deleted file mode 100644 index 11854ec..0000000 --- a/src/main/resources/application.properties +++ /dev/null @@ -1,9 +0,0 @@ -# MySQL Connection Configuration -spring.datasource.url=jdbc:mariadb://194.195.242.137:3306/expensetracker -spring.datasource.username=root -spring.datasource.password=daniel$$$javatop -spring.datasource.driver-class-name=org.mariadb.jdbc.Driver - -# Hibernate Configuration -spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect -server.port=8081