From 0dbbd6b4af63994022f0779b34aeff10c6ec7849 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 10:38:51 -0400 Subject: [PATCH 01/22] saving --- src/main/java/io/zipcoder/Enums/AccountType.java | 7 +++++++ src/main/java/io/zipcoder/Enums/DespostType.java | 7 +++++++ src/main/java/io/zipcoder/Enums/Medium.java | 6 ++++++ src/main/java/io/zipcoder/Enums/Status.java | 8 ++++++++ 4 files changed, 28 insertions(+) create mode 100644 src/main/java/io/zipcoder/Enums/AccountType.java create mode 100644 src/main/java/io/zipcoder/Enums/DespostType.java create mode 100644 src/main/java/io/zipcoder/Enums/Medium.java create mode 100644 src/main/java/io/zipcoder/Enums/Status.java diff --git a/src/main/java/io/zipcoder/Enums/AccountType.java b/src/main/java/io/zipcoder/Enums/AccountType.java new file mode 100644 index 0000000..8ac49f1 --- /dev/null +++ b/src/main/java/io/zipcoder/Enums/AccountType.java @@ -0,0 +1,7 @@ +package io.zipcoder.Enums; + +public enum AccountType { + SAVINGS, + CHECKING, + CREDIT; +} diff --git a/src/main/java/io/zipcoder/Enums/DespostType.java b/src/main/java/io/zipcoder/Enums/DespostType.java new file mode 100644 index 0000000..df9877e --- /dev/null +++ b/src/main/java/io/zipcoder/Enums/DespostType.java @@ -0,0 +1,7 @@ +package io.zipcoder.Enums; + +public enum DespostType { + P2P, + DEPOSIT, + WITHDRAWAL; +} diff --git a/src/main/java/io/zipcoder/Enums/Medium.java b/src/main/java/io/zipcoder/Enums/Medium.java new file mode 100644 index 0000000..8c9c0f9 --- /dev/null +++ b/src/main/java/io/zipcoder/Enums/Medium.java @@ -0,0 +1,6 @@ +package io.zipcoder.Enums; + +public enum Medium { + BALANCE, + REWARDS +} diff --git a/src/main/java/io/zipcoder/Enums/Status.java b/src/main/java/io/zipcoder/Enums/Status.java new file mode 100644 index 0000000..21b13f5 --- /dev/null +++ b/src/main/java/io/zipcoder/Enums/Status.java @@ -0,0 +1,8 @@ +package io.zipcoder.Enums; + +public enum Status { + PENDING, + CANCELLED, + COMPLETED, + RECURRING +} From cd980d3db147a221cda0142c60fe11ec7e56d762 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Mon, 9 Apr 2018 10:47:43 -0400 Subject: [PATCH 02/22] added customer and address --- src/main/java/io/zipcoder/domain/Address.java | 4 ++++ src/main/java/io/zipcoder/domain/Customer.java | 14 ++++++++++++++ 2 files changed, 18 insertions(+) create mode 100644 src/main/java/io/zipcoder/domain/Address.java create mode 100644 src/main/java/io/zipcoder/domain/Customer.java diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java new file mode 100644 index 0000000..9227325 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Address { +} diff --git a/src/main/java/io/zipcoder/domain/Customer.java b/src/main/java/io/zipcoder/domain/Customer.java new file mode 100644 index 0000000..8394fe8 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Customer.java @@ -0,0 +1,14 @@ +package io.zipcoder.domain; + +import java.util.Set; + +public class Customer { + private long id; + private String firstName; + private String lastName; + private Set
addresses; + + // + + +} From f3dcb0026c9083d1ebfc37523bcd666e7ea12d26 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Mon, 9 Apr 2018 10:55:12 -0400 Subject: [PATCH 03/22] created fields in address and customer objs --- src/main/java/io/zipcoder/domain/Address.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java index 9227325..c566a28 100644 --- a/src/main/java/io/zipcoder/domain/Address.java +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -1,4 +1,10 @@ package io.zipcoder.domain; public class Address { + private Long id; + private String streetNumber; + private String streetName; + private String city; + private String state; + private String zip; } From 48c2965a984ccf216d79a9970b500f74fcd954c9 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 10:55:51 -0400 Subject: [PATCH 04/22] saving --- src/main/java/io/zipcoder/controller/CustomerController.java | 4 ++++ src/main/java/io/zipcoder/repository/CustomerRepository.java | 4 ++++ src/main/java/io/zipcoder/service/CustomerService.java | 4 ++++ 3 files changed, 12 insertions(+) create mode 100644 src/main/java/io/zipcoder/controller/CustomerController.java create mode 100644 src/main/java/io/zipcoder/repository/CustomerRepository.java create mode 100644 src/main/java/io/zipcoder/service/CustomerService.java diff --git a/src/main/java/io/zipcoder/controller/CustomerController.java b/src/main/java/io/zipcoder/controller/CustomerController.java new file mode 100644 index 0000000..896d8b1 --- /dev/null +++ b/src/main/java/io/zipcoder/controller/CustomerController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class CustomerController { +} diff --git a/src/main/java/io/zipcoder/repository/CustomerRepository.java b/src/main/java/io/zipcoder/repository/CustomerRepository.java new file mode 100644 index 0000000..335dd6d --- /dev/null +++ b/src/main/java/io/zipcoder/repository/CustomerRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repository; + +public interface CustomerRepository { +} diff --git a/src/main/java/io/zipcoder/service/CustomerService.java b/src/main/java/io/zipcoder/service/CustomerService.java new file mode 100644 index 0000000..8db03f5 --- /dev/null +++ b/src/main/java/io/zipcoder/service/CustomerService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class CustomerService { +} From ee8ef70332be0467260d7d6101f2476898d1838a Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 10:57:46 -0400 Subject: [PATCH 05/22] saving --- src/main/java/io/zipcoder/domain/Address.java | 48 +++++++++++++++++++ .../java/io/zipcoder/domain/Customer.java | 30 +++++++++++- 2 files changed, 77 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java index c566a28..66508b5 100644 --- a/src/main/java/io/zipcoder/domain/Address.java +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -7,4 +7,52 @@ public class Address { private String city; private String state; private String zip; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getStreetNumber() { + return streetNumber; + } + + public void setStreetNumber(String streetNumber) { + this.streetNumber = streetNumber; + } + + public String getStreetName() { + return streetName; + } + + public void setStreetName(String streetName) { + this.streetName = streetName; + } + + public String getCity() { + return city; + } + + public void setCity(String city) { + this.city = city; + } + + public String getState() { + return state; + } + + public void setState(String state) { + this.state = state; + } + + public String getZip() { + return zip; + } + + public void setZip(String zip) { + this.zip = zip; + } } diff --git a/src/main/java/io/zipcoder/domain/Customer.java b/src/main/java/io/zipcoder/domain/Customer.java index 8394fe8..4159964 100644 --- a/src/main/java/io/zipcoder/domain/Customer.java +++ b/src/main/java/io/zipcoder/domain/Customer.java @@ -8,7 +8,35 @@ public class Customer { private String lastName; private Set
addresses; - // + public long getId() { + return id; + } + public void setId(long id) { + this.id = id; + } + 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 Set
getAddresses() { + return addresses; + } + + public void setAddresses(Set
addresses) { + this.addresses = addresses; + } } From 33e952a3ad24b65ddd04404e152611e3f170716a Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Mon, 9 Apr 2018 11:10:00 -0400 Subject: [PATCH 06/22] Added string names to enums --- src/main/java/io/zipcoder/Enums/AccountType.java | 12 +++++++++--- src/main/java/io/zipcoder/Enums/DespostType.java | 12 +++++++++--- src/main/java/io/zipcoder/Enums/Medium.java | 10 ++++++++-- src/main/java/io/zipcoder/Enums/Status.java | 14 ++++++++++---- 4 files changed, 36 insertions(+), 12 deletions(-) diff --git a/src/main/java/io/zipcoder/Enums/AccountType.java b/src/main/java/io/zipcoder/Enums/AccountType.java index 8ac49f1..10b21bf 100644 --- a/src/main/java/io/zipcoder/Enums/AccountType.java +++ b/src/main/java/io/zipcoder/Enums/AccountType.java @@ -1,7 +1,13 @@ package io.zipcoder.Enums; public enum AccountType { - SAVINGS, - CHECKING, - CREDIT; + SAVINGS("Savings"), + CHECKING("Checking"), + CREDIT("Credit"); + + private String name; + + AccountType(String name){ + this.name = name; + } } diff --git a/src/main/java/io/zipcoder/Enums/DespostType.java b/src/main/java/io/zipcoder/Enums/DespostType.java index df9877e..02c5a52 100644 --- a/src/main/java/io/zipcoder/Enums/DespostType.java +++ b/src/main/java/io/zipcoder/Enums/DespostType.java @@ -1,7 +1,13 @@ package io.zipcoder.Enums; public enum DespostType { - P2P, - DEPOSIT, - WITHDRAWAL; + P2P("P2P"), + DEPOSIT("Deposit"), + WITHDRAWAL("Withdrawal"); + + private String name; + + DespostType(String name){ + this.name = name; + } } diff --git a/src/main/java/io/zipcoder/Enums/Medium.java b/src/main/java/io/zipcoder/Enums/Medium.java index 8c9c0f9..79a94b1 100644 --- a/src/main/java/io/zipcoder/Enums/Medium.java +++ b/src/main/java/io/zipcoder/Enums/Medium.java @@ -1,6 +1,12 @@ package io.zipcoder.Enums; public enum Medium { - BALANCE, - REWARDS + BALANCE("Balance"), + REWARDS("Rewards"); + + private String name; + + Medium(String name){ + this.name = name; + } } diff --git a/src/main/java/io/zipcoder/Enums/Status.java b/src/main/java/io/zipcoder/Enums/Status.java index 21b13f5..dc0ad8c 100644 --- a/src/main/java/io/zipcoder/Enums/Status.java +++ b/src/main/java/io/zipcoder/Enums/Status.java @@ -1,8 +1,14 @@ package io.zipcoder.Enums; public enum Status { - PENDING, - CANCELLED, - COMPLETED, - RECURRING + PENDING("Pending"), + CANCELLED("Cancelled"), + COMPLETED("Completed"), + RECURRING("Recurring"); + + private String name; + + Status(String name){ + this.name = name; + } } From 50b4c4d9a0485f71f08c03eaaf0607388f9154be Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 11:11:03 -0400 Subject: [PATCH 07/22] saving --- .../controller/AccountController.java | 21 +++++++++++++++++++ src/main/java/io/zipcoder/domain/Account.java | 4 ++++ .../repository/AccountRepository.java | 7 +++++++ .../io/zipcoder/service/AccountService.java | 15 +++++++++++++ 4 files changed, 47 insertions(+) create mode 100644 src/main/java/io/zipcoder/controller/AccountController.java create mode 100644 src/main/java/io/zipcoder/domain/Account.java create mode 100644 src/main/java/io/zipcoder/repository/AccountRepository.java create mode 100644 src/main/java/io/zipcoder/service/AccountService.java diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java new file mode 100644 index 0000000..6b3e96b --- /dev/null +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -0,0 +1,21 @@ +package io.zipcoder.controller; + +import io.zipcoder.service.AccountService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class AccountController { + + @Autowired + AccountService service; + + @RequestMapping(value = "/accounts", method = RequestMethod.GET) + public ResponseEntity getAllAccount() { + return null; + } + +} diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java new file mode 100644 index 0000000..7ccfbf0 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Account { +} diff --git a/src/main/java/io/zipcoder/repository/AccountRepository.java b/src/main/java/io/zipcoder/repository/AccountRepository.java new file mode 100644 index 0000000..9e47e6c --- /dev/null +++ b/src/main/java/io/zipcoder/repository/AccountRepository.java @@ -0,0 +1,7 @@ +package io.zipcoder.repository; + +import io.zipcoder.domain.Account; +import org.springframework.data.repository.CrudRepository; + +public interface AccountRepository extends CrudRepository { +} diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java new file mode 100644 index 0000000..f50c4b0 --- /dev/null +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -0,0 +1,15 @@ +package io.zipcoder.service; + +import io.zipcoder.repository.AccountRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class AccountService { + + @Autowired + AccountRepository repo; + + + +} From 1a9f624c6e655cbe85d13d83011592a592f3ae67 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 11:22:14 -0400 Subject: [PATCH 08/22] saving --- src/main/java/io/zipcoder/domain/Account.java | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java index 7ccfbf0..405e58d 100644 --- a/src/main/java/io/zipcoder/domain/Account.java +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -1,4 +1,69 @@ package io.zipcoder.domain; +import io.zipcoder.Enums.AccountType; + +import javax.persistence.Entity; + +@Entity public class Account { + + private Long id; + + private AccountType type; + + private String nickname; + + private Integer rewards; + + private Double balance; + + private Customer customer; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getType() { + return type.name(); + } + + public void setType(AccountType type) { + this.type = type; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public Integer getRewards() { + return rewards; + } + + public void setRewards(Integer rewards) { + this.rewards = rewards; + } + + public Double getBalance() { + return balance; + } + + public void setBalance(Double balance) { + this.balance = balance; + } + + public Customer getCustomer() { + return customer; + } + + public void setCustomer(Customer customer) { + this.customer = customer; + } } From c7879a3a09a0d97c41d1e91cbf61f9ccca13e680 Mon Sep 17 00:00:00 2001 From: Katrice Williams-Dredden Date: Mon, 9 Apr 2018 11:28:28 -0400 Subject: [PATCH 09/22] fleshed out controller, service and repo for customer --- .../controller/CustomerController.java | 44 +++++++++++++++++++ .../repository/CustomerRepository.java | 5 ++- .../io/zipcoder/service/CustomerService.java | 6 +++ 3 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/controller/CustomerController.java b/src/main/java/io/zipcoder/controller/CustomerController.java index 896d8b1..01c95c8 100644 --- a/src/main/java/io/zipcoder/controller/CustomerController.java +++ b/src/main/java/io/zipcoder/controller/CustomerController.java @@ -1,4 +1,48 @@ package io.zipcoder.controller; +import io.zipcoder.service.CustomerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + public class CustomerController { + + @Autowired + CustomerService service; + + @RequestMapping(value = "/customer/{customer}/accounts", method = RequestMethod.GET) + public ResponseEntity getAllAcctsForCust() { + return null; + } + + @RequestMapping(value = "/customer/{customerId}/accounts", method = RequestMethod.POST) + public ResponseEntity createAccount(){ + return null; + } + + @RequestMapping(value = "/customers", method = RequestMethod.GET) + public ResponseEntity getAllCustomers(){ + return null; + } + + @RequestMapping(value = "/customers/{id}", method = RequestMethod.GET) + public ResponseEntity getSpecificCusomer(){ + return null; + } + + @RequestMapping(value = "/customers", method = RequestMethod.POST) + public ResponseEntity createACustomer(){ + return null; + } + + @RequestMapping(value = "/customer/{id}", method = RequestMethod.PUT) + public ResponseEntity updateCustomer(){ + return null; + } + + @RequestMapping(value = "/customer/{id}/bills", method = RequestMethod.GET) + public ResponseEntity getAllBillsForCust(){ + return null; + } } diff --git a/src/main/java/io/zipcoder/repository/CustomerRepository.java b/src/main/java/io/zipcoder/repository/CustomerRepository.java index 335dd6d..af70f4b 100644 --- a/src/main/java/io/zipcoder/repository/CustomerRepository.java +++ b/src/main/java/io/zipcoder/repository/CustomerRepository.java @@ -1,4 +1,7 @@ package io.zipcoder.repository; -public interface CustomerRepository { +import io.zipcoder.domain.Customer; +import org.springframework.data.repository.CrudRepository; + +public interface CustomerRepository extends CrudRepository{ } diff --git a/src/main/java/io/zipcoder/service/CustomerService.java b/src/main/java/io/zipcoder/service/CustomerService.java index 8db03f5..e6018b1 100644 --- a/src/main/java/io/zipcoder/service/CustomerService.java +++ b/src/main/java/io/zipcoder/service/CustomerService.java @@ -1,4 +1,10 @@ package io.zipcoder.service; +import io.zipcoder.repository.CustomerRepository; +import org.springframework.beans.factory.annotation.Autowired; + public class CustomerService { + + @Autowired + CustomerRepository repo; } From 8bf78f66f3c43f090ba85874774d97e34b438c9d Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Mon, 9 Apr 2018 11:35:39 -0400 Subject: [PATCH 10/22] saving --- .../java/io/zipcoder/controller/AccountController.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java index 6b3e96b..64c2534 100644 --- a/src/main/java/io/zipcoder/controller/AccountController.java +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -14,8 +14,14 @@ public class AccountController { AccountService service; @RequestMapping(value = "/accounts", method = RequestMethod.GET) - public ResponseEntity getAllAccount() { + public ResponseEntity getAllAccounts() { return null; } + @RequestMapping(value = "/accounts/{id}", method = RequestMethod.GET) + public ResponseEntity getAccount() { + return null; + } + + } From 80f630f88537cafbdc5a3deb0351ef2453186001 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Tue, 10 Apr 2018 21:28:08 -0400 Subject: [PATCH 11/22] account controller stubbed out --- .../controller/AccountController.java | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java index 64c2534..c1c5458 100644 --- a/src/main/java/io/zipcoder/controller/AccountController.java +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -3,6 +3,7 @@ import io.zipcoder.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @@ -19,9 +20,59 @@ public ResponseEntity getAllAccounts() { } @RequestMapping(value = "/accounts/{id}", method = RequestMethod.GET) - public ResponseEntity getAccount() { + public ResponseEntity getAccount(@PathVariable Long id) { return null; } + @RequestMapping(value = "/accounts/{id}", method = RequestMethod.PUT) + public ResponseEntity updateAccount(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}", method = RequestMethod.DELETE) + public ResponseEntity deleteAccount(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/customer", method = RequestMethod.GET) + public ResponseEntity getAccountCustomer(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.GET) + public ResponseEntity getAccountBills(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.POST) + public ResponseEntity createBill(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/deposits", method = RequestMethod.GET) + public ResponseEntity getAllDeposits(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/deposits", method = RequestMethod.POST) + public ResponseEntity createDeposit(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/withdrawals", method = RequestMethod.GET) + public ResponseEntity getAllWithdrawals(@PathVariable Long id) { + return null; + } + + @RequestMapping(value = "/accounts/{id}/withdrawals", method = RequestMethod.POST) + public ResponseEntity createWithdrawal(@PathVariable Long id) { + return null; + } + + + + + + } From b8dd9b82891a1f1a24684a1ce7b9f9e18905af6f Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Tue, 10 Apr 2018 21:58:24 -0400 Subject: [PATCH 12/22] saving --- .../controller/AccountController.java | 28 ++++++++++----- .../io/zipcoder/service/AccountService.java | 35 +++++++++++++++++++ 2 files changed, 54 insertions(+), 9 deletions(-) diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java index c1c5458..f696024 100644 --- a/src/main/java/io/zipcoder/controller/AccountController.java +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -1,12 +1,11 @@ package io.zipcoder.controller; +import io.zipcoder.domain.Account; import io.zipcoder.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController public class AccountController { @@ -16,22 +15,33 @@ public class AccountController { @RequestMapping(value = "/accounts", method = RequestMethod.GET) public ResponseEntity getAllAccounts() { - return null; + return new ResponseEntity<>(service.getAllAccounts(), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}", method = RequestMethod.GET) public ResponseEntity getAccount(@PathVariable Long id) { - return null; + return new ResponseEntity<>(service.getAccountById(id), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}", method = RequestMethod.PUT) - public ResponseEntity updateAccount(@PathVariable Long id) { - return null; + public ResponseEntity updateAccount(@PathVariable Long id, @RequestBody Account account) { + if(service.updateAccount(id,account)){ + return new ResponseEntity<>(HttpStatus.OK); + } + else{ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + } @RequestMapping(value = "/accounts/{id}", method = RequestMethod.DELETE) public ResponseEntity deleteAccount(@PathVariable Long id) { - return null; + if(service.removeAccount(id)){ + return new ResponseEntity<>(HttpStatus.OK); + } + else{ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } } @RequestMapping(value = "/accounts/{id}/customer", method = RequestMethod.GET) diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java index f50c4b0..e20b519 100644 --- a/src/main/java/io/zipcoder/service/AccountService.java +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -1,9 +1,13 @@ package io.zipcoder.service; +import io.zipcoder.domain.Account; import io.zipcoder.repository.AccountRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + @Service public class AccountService { @@ -11,5 +15,36 @@ public class AccountService { AccountRepository repo; + public List getAllAccounts(){ + List accounts = new ArrayList<>(); + for(Account a : repo.findAll()) { + accounts.add(a); + } + return accounts; + } + + public Account getAccountById(Long id){ + return repo.findOne(id); + } + + public boolean updateAccount(Long id, Account account){ + if(repo.exists(id)){ + repo.save(account); + return true; + } + else{ + return false; + } + } + + public boolean removeAccount(Long id){ + if(repo.exists(id)){ + repo.delete(id); + return true; + } + else{ + return false; + } + } } From fde24f6ab7c083b644d1a7e56d5419fd71ed92cc Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Tue, 10 Apr 2018 22:23:03 -0400 Subject: [PATCH 13/22] saving --- .../io/zipcoder/controller/AccountController.java | 5 +++-- src/main/java/io/zipcoder/domain/Account.java | 10 ++++++++++ src/main/java/io/zipcoder/domain/Bill.java | 4 ++++ src/main/java/io/zipcoder/domain/Deposit.java | 4 ++++ src/main/java/io/zipcoder/domain/Withdrawal.java | 4 ++++ .../java/io/zipcoder/service/AccountService.java | 14 ++++++++++++++ 6 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/main/java/io/zipcoder/domain/Bill.java create mode 100644 src/main/java/io/zipcoder/domain/Deposit.java create mode 100644 src/main/java/io/zipcoder/domain/Withdrawal.java diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java index f696024..258ab56 100644 --- a/src/main/java/io/zipcoder/controller/AccountController.java +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -1,6 +1,7 @@ package io.zipcoder.controller; import io.zipcoder.domain.Account; +import io.zipcoder.domain.Bill; import io.zipcoder.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -46,7 +47,7 @@ public ResponseEntity deleteAccount(@PathVariable Long id) { @RequestMapping(value = "/accounts/{id}/customer", method = RequestMethod.GET) public ResponseEntity getAccountCustomer(@PathVariable Long id) { - return null; + return new ResponseEntity<>(service.getAccountCustomer(id), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.GET) @@ -55,7 +56,7 @@ public ResponseEntity getAccountBills(@PathVariable Long id) { } @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.POST) - public ResponseEntity createBill(@PathVariable Long id) { + public ResponseEntity createBill(@PathVariable Long id, @RequestBody Bill bill) { return null; } diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java index 405e58d..45a5169 100644 --- a/src/main/java/io/zipcoder/domain/Account.java +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -2,21 +2,31 @@ import io.zipcoder.Enums.AccountType; +import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; @Entity public class Account { + @Id + @GeneratedValue private Long id; + @Column(name = "ACCOUNT_TYPE") private AccountType type; + @Column(name = "NICKNAME") private String nickname; + @Column(name = "REWARDS") private Integer rewards; + @Column(name = "BALANCE") private Double balance; + @Column(name = "CUSTOMER") private Customer customer; public Long getId() { diff --git a/src/main/java/io/zipcoder/domain/Bill.java b/src/main/java/io/zipcoder/domain/Bill.java new file mode 100644 index 0000000..eab1fcd --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Bill.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Bill { +} diff --git a/src/main/java/io/zipcoder/domain/Deposit.java b/src/main/java/io/zipcoder/domain/Deposit.java new file mode 100644 index 0000000..11e3235 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Deposit.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Deposit { +} diff --git a/src/main/java/io/zipcoder/domain/Withdrawal.java b/src/main/java/io/zipcoder/domain/Withdrawal.java new file mode 100644 index 0000000..b503533 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Withdrawal.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Withdrawal { +} diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java index e20b519..81ddb4a 100644 --- a/src/main/java/io/zipcoder/service/AccountService.java +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -1,6 +1,8 @@ package io.zipcoder.service; import io.zipcoder.domain.Account; +import io.zipcoder.domain.Bill; +import io.zipcoder.domain.Customer; import io.zipcoder.repository.AccountRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -47,4 +49,16 @@ public boolean removeAccount(Long id){ } } + public Customer getAccountCustomer(Long id) { + return repo.findOne(id).getCustomer(); + } + + public List getAccountBills(Long id) { + return null; + } + + public void createBill(Long id, Bill bill) { + + } + } From 9ce947025c594413194934f70f8b4a3c1cdf1919 Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Wed, 11 Apr 2018 12:19:08 -0400 Subject: [PATCH 14/22] Finished bills --- .../zipcoder/controller/BillController.java | 41 +++++++ src/main/java/io/zipcoder/domain/Bill.java | 102 ++++++++++++++++++ .../zipcoder/repository/BillRepository.java | 7 ++ .../java/io/zipcoder/service/BillService.java | 34 ++++++ 4 files changed, 184 insertions(+) create mode 100644 src/main/java/io/zipcoder/controller/BillController.java create mode 100644 src/main/java/io/zipcoder/domain/Bill.java create mode 100644 src/main/java/io/zipcoder/repository/BillRepository.java create mode 100644 src/main/java/io/zipcoder/service/BillService.java diff --git a/src/main/java/io/zipcoder/controller/BillController.java b/src/main/java/io/zipcoder/controller/BillController.java new file mode 100644 index 0000000..2107ea0 --- /dev/null +++ b/src/main/java/io/zipcoder/controller/BillController.java @@ -0,0 +1,41 @@ +package io.zipcoder.controller; + + +import io.zipcoder.domain.Bill; +import io.zipcoder.service.BillService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +public class BillController { + + private BillService billService; + + @Autowired + BillController(BillService billService){ + this.billService = billService; + } + + @RequestMapping(value = "/bills/{billid}", method = RequestMethod.GET) + public ResponseEntity getBillById(@PathVariable Long billId){ + return new ResponseEntity(this.billService.getBillById(billId), HttpStatus.OK); + } + + @RequestMapping(value = "/bills/(billid}", method = RequestMethod.PUT) + public ResponseEntity updateBill(@PathVariable Long billId, @RequestBody Bill billToUpdate){ + boolean wasUpdated = this.billService.updateBill(billToUpdate); + if (wasUpdated){ + return new ResponseEntity(HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + } + + @RequestMapping(value = "/bills/{billid}", method = RequestMethod.DELETE) + public ResponseEntity deleteBill(@PathVariable Long billId){ + this.billService.deleteBillById(billId); + return new ResponseEntity(HttpStatus.OK); + } +} diff --git a/src/main/java/io/zipcoder/domain/Bill.java b/src/main/java/io/zipcoder/domain/Bill.java new file mode 100644 index 0000000..e5818ca --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Bill.java @@ -0,0 +1,102 @@ +package io.zipcoder.domain; + +import io.zipcoder.Enums.Status; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity +public class Bill { + + @Id + private Long id; + private Status status; + private String payee; + private String nickname; + private String creation_date; + private String payment_date; + private Integer recurring_date; + private String upcoming_payment_date; + private Double paymount_amount; + private String account_id; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public String getPayee() { + return payee; + } + + public void setPayee(String payee) { + this.payee = payee; + } + + public String getNickname() { + return nickname; + } + + public void setNickname(String nickname) { + this.nickname = nickname; + } + + public String getCreation_date() { + return creation_date; + } + + public void setCreation_date(String creation_date) { + this.creation_date = creation_date; + } + + public String getPayment_date() { + return payment_date; + } + + public void setPayment_date(String payment_date) { + this.payment_date = payment_date; + } + + public Integer getRecurring_date() { + return recurring_date; + } + + public void setRecurring_date(Integer recurring_date) { + this.recurring_date = recurring_date; + } + + public String getUpcoming_payment_date() { + return upcoming_payment_date; + } + + public void setUpcoming_payment_date(String upcoming_payment_date) { + this.upcoming_payment_date = upcoming_payment_date; + } + + public Double getPaymount_amount() { + return paymount_amount; + } + + public void setPaymount_amount(Double paymount_amount) { + this.paymount_amount = paymount_amount; + } + + public String getAccount_id() { + return account_id; + } + + public void setAccount_id(String account_id) { + this.account_id = account_id; + } +} diff --git a/src/main/java/io/zipcoder/repository/BillRepository.java b/src/main/java/io/zipcoder/repository/BillRepository.java new file mode 100644 index 0000000..38f55c4 --- /dev/null +++ b/src/main/java/io/zipcoder/repository/BillRepository.java @@ -0,0 +1,7 @@ +package io.zipcoder.repository; + +import io.zipcoder.domain.Bill; +import org.springframework.data.repository.CrudRepository; + +public interface BillRepository extends CrudRepository{ +} diff --git a/src/main/java/io/zipcoder/service/BillService.java b/src/main/java/io/zipcoder/service/BillService.java new file mode 100644 index 0000000..72bf319 --- /dev/null +++ b/src/main/java/io/zipcoder/service/BillService.java @@ -0,0 +1,34 @@ +package io.zipcoder.service; + +import io.zipcoder.domain.Bill; +import io.zipcoder.repository.BillRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class BillService { + + private BillRepository billRepository; + + @Autowired + BillService(BillRepository billRepository){ + this.billRepository = billRepository; + } + + public Bill getBillById(Long id){ + return this.billRepository.findOne(id); + } + + public boolean updateBill(Bill newBill){ + if(this.billRepository.findOne(newBill.getId()) != null) { + this.billRepository.save(newBill); + return true; + }else { + return false; + } + } + + public void deleteBillById(Long id){ + this.billRepository.delete(id); + } +} From 8eba1b62c97b97da2b15af815021f5feec2f7c14 Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Wed, 11 Apr 2018 18:06:01 -0400 Subject: [PATCH 15/22] Finished deposit service --- src/main/java/io/zipcoder/controller/DepositController.java | 4 ++++ src/main/java/io/zipcoder/domain/Deposit.java | 4 ++++ src/main/java/io/zipcoder/repository/DepositRepository.java | 4 ++++ src/main/java/io/zipcoder/service/DepositService.java | 4 ++++ 4 files changed, 16 insertions(+) create mode 100644 src/main/java/io/zipcoder/controller/DepositController.java create mode 100644 src/main/java/io/zipcoder/domain/Deposit.java create mode 100644 src/main/java/io/zipcoder/repository/DepositRepository.java create mode 100644 src/main/java/io/zipcoder/service/DepositService.java diff --git a/src/main/java/io/zipcoder/controller/DepositController.java b/src/main/java/io/zipcoder/controller/DepositController.java new file mode 100644 index 0000000..e540d6e --- /dev/null +++ b/src/main/java/io/zipcoder/controller/DepositController.java @@ -0,0 +1,4 @@ +package io.zipcoder.controller; + +public class DepositController { +} diff --git a/src/main/java/io/zipcoder/domain/Deposit.java b/src/main/java/io/zipcoder/domain/Deposit.java new file mode 100644 index 0000000..11e3235 --- /dev/null +++ b/src/main/java/io/zipcoder/domain/Deposit.java @@ -0,0 +1,4 @@ +package io.zipcoder.domain; + +public class Deposit { +} diff --git a/src/main/java/io/zipcoder/repository/DepositRepository.java b/src/main/java/io/zipcoder/repository/DepositRepository.java new file mode 100644 index 0000000..10088c5 --- /dev/null +++ b/src/main/java/io/zipcoder/repository/DepositRepository.java @@ -0,0 +1,4 @@ +package io.zipcoder.repository; + +public interface DepositRepository { +} diff --git a/src/main/java/io/zipcoder/service/DepositService.java b/src/main/java/io/zipcoder/service/DepositService.java new file mode 100644 index 0000000..ff1e09d --- /dev/null +++ b/src/main/java/io/zipcoder/service/DepositService.java @@ -0,0 +1,4 @@ +package io.zipcoder.service; + +public class DepositService { +} From 67fbf34397642c11691d2d6232e0a9c5e93f3afa Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Wed, 11 Apr 2018 18:06:09 -0400 Subject: [PATCH 16/22] Finished deposit service --- src/main/java/io/zipcoder/domain/Deposit.java | 82 +++++++++++++++++++ .../repository/DepositRepository.java | 5 +- .../io/zipcoder/service/DepositService.java | 30 +++++++ 3 files changed, 116 insertions(+), 1 deletion(-) diff --git a/src/main/java/io/zipcoder/domain/Deposit.java b/src/main/java/io/zipcoder/domain/Deposit.java index 11e3235..6611d83 100644 --- a/src/main/java/io/zipcoder/domain/Deposit.java +++ b/src/main/java/io/zipcoder/domain/Deposit.java @@ -1,4 +1,86 @@ package io.zipcoder.domain; +import io.zipcoder.Enums.DespostType; +import io.zipcoder.Enums.Medium; +import io.zipcoder.Enums.Status; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity public class Deposit { + + @Id + private long id; + private DespostType type; + private String transaction_date; + private Status status; + private long payee_id; + private Medium medium; + private double amount; + private String description; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public DespostType getType() { + return type; + } + + public void setType(DespostType type) { + this.type = type; + } + + public String getTransaction_date() { + return transaction_date; + } + + public void setTransaction_date(String transaction_date) { + this.transaction_date = transaction_date; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public long getPayee_id() { + return payee_id; + } + + public void setPayee_id(long payee_id) { + this.payee_id = payee_id; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } } diff --git a/src/main/java/io/zipcoder/repository/DepositRepository.java b/src/main/java/io/zipcoder/repository/DepositRepository.java index 10088c5..4da6288 100644 --- a/src/main/java/io/zipcoder/repository/DepositRepository.java +++ b/src/main/java/io/zipcoder/repository/DepositRepository.java @@ -1,4 +1,7 @@ package io.zipcoder.repository; -public interface DepositRepository { +import io.zipcoder.domain.Deposit; +import org.springframework.data.repository.CrudRepository; + +public interface DepositRepository extends CrudRepository { } diff --git a/src/main/java/io/zipcoder/service/DepositService.java b/src/main/java/io/zipcoder/service/DepositService.java index ff1e09d..7c7db77 100644 --- a/src/main/java/io/zipcoder/service/DepositService.java +++ b/src/main/java/io/zipcoder/service/DepositService.java @@ -1,4 +1,34 @@ package io.zipcoder.service; +import io.zipcoder.domain.Deposit; +import io.zipcoder.repository.DepositRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service public class DepositService { + + private DepositRepository depositRepository; + + @Autowired + DepositService(DepositRepository depositRepository){ + this.depositRepository = depositRepository; + } + + public Deposit getDepositById(Long depositId){ + return this.depositRepository.findOne(depositId); + } + + public boolean updateBill(Deposit newBill){ + if(this.depositRepository.findOne(newBill.getId()) != null) { + this.depositRepository.save(newBill); + return true; + }else { + return false; + } + } + + public void deleteBillById(Long id){ + this.depositRepository.delete(id); + } } From 0ecbf16dd83db41ef2cfb18f5c1f984fae30a8e4 Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Wed, 11 Apr 2018 18:21:19 -0400 Subject: [PATCH 17/22] Finished deposits --- .../controller/DepositController.java | 36 +++++++++++++++++++ .../io/zipcoder/service/DepositService.java | 4 +-- 2 files changed, 38 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/zipcoder/controller/DepositController.java b/src/main/java/io/zipcoder/controller/DepositController.java index e540d6e..6252ac5 100644 --- a/src/main/java/io/zipcoder/controller/DepositController.java +++ b/src/main/java/io/zipcoder/controller/DepositController.java @@ -1,4 +1,40 @@ package io.zipcoder.controller; +import io.zipcoder.domain.Deposit; +import io.zipcoder.service.DepositService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController public class DepositController { + + private DepositService depositService; + + @Autowired + DepositController(DepositService depositService){ + this.depositService = depositService; + } + + @RequestMapping(value = "/deposits/{depositId}", method = RequestMethod.GET) + public ResponseEntity getDepositById(@PathVariable long depositId){ + return new ResponseEntity(this.depositService.getDepositById(depositId), HttpStatus.OK); + } + + @RequestMapping(value = "/deposits/{depositid}", method = RequestMethod.PUT) + public ResponseEntity updateDeposit(@PathVariable long depositId, @RequestBody Deposit depositToUpdate){ + boolean wasUpdated = this.depositService.updateDeposit(depositToUpdate); + if (wasUpdated) { + return new ResponseEntity(HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + } + + @RequestMapping(value = "/deposits/{depositId}", method = RequestMethod.DELETE) + public ResponseEntity deleteDepositById(@PathVariable long depositId){ + this.depositService.deleteDepositById(depositId); + return new ResponseEntity(HttpStatus.OK); + } } diff --git a/src/main/java/io/zipcoder/service/DepositService.java b/src/main/java/io/zipcoder/service/DepositService.java index 7c7db77..26f334c 100644 --- a/src/main/java/io/zipcoder/service/DepositService.java +++ b/src/main/java/io/zipcoder/service/DepositService.java @@ -19,7 +19,7 @@ public Deposit getDepositById(Long depositId){ return this.depositRepository.findOne(depositId); } - public boolean updateBill(Deposit newBill){ + public boolean updateDeposit(Deposit newBill){ if(this.depositRepository.findOne(newBill.getId()) != null) { this.depositRepository.save(newBill); return true; @@ -28,7 +28,7 @@ public boolean updateBill(Deposit newBill){ } } - public void deleteBillById(Long id){ + public void deleteDepositById(Long id){ this.depositRepository.delete(id); } } From f4dc37bd91cd4eb7133ee2826c18f742e86e93ff Mon Sep 17 00:00:00 2001 From: Anthony Jordan Date: Wed, 11 Apr 2018 18:37:00 -0400 Subject: [PATCH 18/22] Finished withdrawals --- .../controller/WithdrawalController.java | 42 ++++++++++ .../java/io/zipcoder/domain/Withdrawal.java | 83 +++++++++++++++++++ .../repository/WithdrawalRepository.java | 7 ++ .../io/zipcoder/service/DepositService.java | 6 +- .../zipcoder/service/WithdrawalService.java | 34 ++++++++ 5 files changed, 169 insertions(+), 3 deletions(-) create mode 100644 src/main/java/io/zipcoder/controller/WithdrawalController.java create mode 100644 src/main/java/io/zipcoder/repository/WithdrawalRepository.java create mode 100644 src/main/java/io/zipcoder/service/WithdrawalService.java diff --git a/src/main/java/io/zipcoder/controller/WithdrawalController.java b/src/main/java/io/zipcoder/controller/WithdrawalController.java new file mode 100644 index 0000000..1b267fc --- /dev/null +++ b/src/main/java/io/zipcoder/controller/WithdrawalController.java @@ -0,0 +1,42 @@ +package io.zipcoder.controller; + +import io.zipcoder.domain.Withdrawal; +import io.zipcoder.service.WithdrawalService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +public class WithdrawalController { + + private WithdrawalService withdrawalService; + + @Autowired + WithdrawalController(WithdrawalService withdrawalService){ + this.withdrawalService = withdrawalService; + } + + @RequestMapping(value = "/withdrawals/{withdrawalId}", method = RequestMethod.GET) + public ResponseEntity getWithdrawalById(@PathVariable long withdrawalId){ + return new ResponseEntity(this.withdrawalService.getWithdrawalById(withdrawalId), HttpStatus.OK); + } + + @RequestMapping(value = "/withdrawals/{withdrawalid}", method = RequestMethod.PUT) + public ResponseEntity updateWithdrawal(@PathVariable long withdrawalId, @RequestBody Withdrawal withdrawalToUpdate){ + boolean wasUpdated = this.withdrawalService.updateWithdrawal(withdrawalToUpdate); + if (wasUpdated) { + return new ResponseEntity(HttpStatus.OK); + } else { + return new ResponseEntity(HttpStatus.NOT_FOUND); + } + } + + @RequestMapping(value = "/withdrawals/{withdrawalId}", method = RequestMethod.DELETE) + public ResponseEntity deleteWithdrawalById(@PathVariable long withdrawalId){ + this.withdrawalService.deleteWithdrawalById(withdrawalId); + return new ResponseEntity(HttpStatus.OK); + } +} diff --git a/src/main/java/io/zipcoder/domain/Withdrawal.java b/src/main/java/io/zipcoder/domain/Withdrawal.java index b503533..441e030 100644 --- a/src/main/java/io/zipcoder/domain/Withdrawal.java +++ b/src/main/java/io/zipcoder/domain/Withdrawal.java @@ -1,4 +1,87 @@ package io.zipcoder.domain; + +import io.zipcoder.Enums.DespostType; +import io.zipcoder.Enums.Medium; +import io.zipcoder.Enums.Status; + +import javax.persistence.Entity; +import javax.persistence.Id; + +@Entity public class Withdrawal { + + @Id + private long id; + private DespostType type; + private String transaction_date; + private Status status; + private long payer_id; + private Medium medium; + private double amount; + private String description; + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public DespostType getType() { + return type; + } + + public void setType(DespostType type) { + this.type = type; + } + + public String getTransaction_date() { + return transaction_date; + } + + public void setTransaction_date(String transaction_date) { + this.transaction_date = transaction_date; + } + + public Status getStatus() { + return status; + } + + public void setStatus(Status status) { + this.status = status; + } + + public long getPayer_id() { + return payer_id; + } + + public void setPayer_id(long payee_id) { + this.payer_id = payee_id; + } + + public Medium getMedium() { + return medium; + } + + public void setMedium(Medium medium) { + this.medium = medium; + } + + public double getAmount() { + return amount; + } + + public void setAmount(double amount) { + this.amount = amount; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } } diff --git a/src/main/java/io/zipcoder/repository/WithdrawalRepository.java b/src/main/java/io/zipcoder/repository/WithdrawalRepository.java new file mode 100644 index 0000000..57233ea --- /dev/null +++ b/src/main/java/io/zipcoder/repository/WithdrawalRepository.java @@ -0,0 +1,7 @@ +package io.zipcoder.repository; + +import io.zipcoder.domain.Withdrawal; +import org.springframework.data.repository.CrudRepository; + +public interface WithdrawalRepository extends CrudRepository{ +} diff --git a/src/main/java/io/zipcoder/service/DepositService.java b/src/main/java/io/zipcoder/service/DepositService.java index 26f334c..667ae4c 100644 --- a/src/main/java/io/zipcoder/service/DepositService.java +++ b/src/main/java/io/zipcoder/service/DepositService.java @@ -19,9 +19,9 @@ public Deposit getDepositById(Long depositId){ return this.depositRepository.findOne(depositId); } - public boolean updateDeposit(Deposit newBill){ - if(this.depositRepository.findOne(newBill.getId()) != null) { - this.depositRepository.save(newBill); + public boolean updateDeposit(Deposit newDeposit){ + if(this.depositRepository.findOne(newDeposit.getId()) != null) { + this.depositRepository.save(newDeposit); return true; }else { return false; diff --git a/src/main/java/io/zipcoder/service/WithdrawalService.java b/src/main/java/io/zipcoder/service/WithdrawalService.java new file mode 100644 index 0000000..2b730d9 --- /dev/null +++ b/src/main/java/io/zipcoder/service/WithdrawalService.java @@ -0,0 +1,34 @@ +package io.zipcoder.service; + +import io.zipcoder.domain.Withdrawal; +import io.zipcoder.repository.WithdrawalRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class WithdrawalService { + + private WithdrawalRepository withdrawalRepository; + + @Autowired + WithdrawalService(WithdrawalRepository withdrawalRepository){ + this.withdrawalRepository = withdrawalRepository; + } + + public Withdrawal getWithdrawalById(Long withdrawalId){ + return this.withdrawalRepository.findOne(withdrawalId); + } + + public boolean updateWithdrawal(Withdrawal newWithdrawal){ + if(this.withdrawalRepository.findOne(newWithdrawal.getId()) != null) { + this.withdrawalRepository.save(newWithdrawal); + return true; + }else { + return false; + } + } + + public void deleteWithdrawalById(Long id){ + this.withdrawalRepository.delete(id); + } +} From 7f6736bb25317d371d1fe519d0f13768f58eebb4 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Thu, 12 Apr 2018 13:25:35 -0400 Subject: [PATCH 19/22] now compiling --- .../io/zipcoder/controller/WithdrawalController.java | 8 +++----- src/main/java/io/zipcoder/domain/Account.java | 8 +++----- src/main/java/io/zipcoder/domain/Address.java | 7 +++++++ src/main/java/io/zipcoder/domain/Customer.java | 12 ++++++++++++ 4 files changed, 25 insertions(+), 10 deletions(-) diff --git a/src/main/java/io/zipcoder/controller/WithdrawalController.java b/src/main/java/io/zipcoder/controller/WithdrawalController.java index 1b267fc..bf1b261 100644 --- a/src/main/java/io/zipcoder/controller/WithdrawalController.java +++ b/src/main/java/io/zipcoder/controller/WithdrawalController.java @@ -5,13 +5,11 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.PathVariable; -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.*; +@RestController public class WithdrawalController { - + private WithdrawalService withdrawalService; @Autowired diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java index 45a5169..41ea60a 100644 --- a/src/main/java/io/zipcoder/domain/Account.java +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -2,10 +2,7 @@ import io.zipcoder.Enums.AccountType; -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; +import javax.persistence.*; @Entity public class Account { @@ -26,7 +23,8 @@ public class Account { @Column(name = "BALANCE") private Double balance; - @Column(name = "CUSTOMER") + @OneToOne + @JoinColumn(name = "ID") private Customer customer; public Long getId() { diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java index 66508b5..5fc223f 100644 --- a/src/main/java/io/zipcoder/domain/Address.java +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -1,6 +1,13 @@ package io.zipcoder.domain; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.Id; + +@Entity public class Address { + @Id + @GeneratedValue private Long id; private String streetNumber; private String streetName; diff --git a/src/main/java/io/zipcoder/domain/Customer.java b/src/main/java/io/zipcoder/domain/Customer.java index 4159964..76e64dc 100644 --- a/src/main/java/io/zipcoder/domain/Customer.java +++ b/src/main/java/io/zipcoder/domain/Customer.java @@ -1,11 +1,23 @@ package io.zipcoder.domain; +import javax.persistence.*; import java.util.Set; +@Entity public class Customer { + + @Id + @GeneratedValue private long id; + + @Column(name = "FIRST_NAME") private String firstName; + + @Column(name = "LAST_NAME") private String lastName; + + @OneToMany(cascade = CascadeType.ALL) + @Column(name = "ADDRESSES") private Set
addresses; public long getId() { From 54bd45835fb12255b8ce0d5dfb4c032e8c76cec0 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Thu, 12 Apr 2018 13:53:24 -0400 Subject: [PATCH 20/22] switched to H2 --- pom.xml | 8 +++++++- .../java/io/zipcoder/controller/WithdrawalController.java | 2 +- src/main/resources/application.properties | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 0a99788..ee68058 100644 --- a/pom.xml +++ b/pom.xml @@ -44,10 +44,16 @@ runtime - + + + com.h2database + h2 + runtime diff --git a/src/main/java/io/zipcoder/controller/WithdrawalController.java b/src/main/java/io/zipcoder/controller/WithdrawalController.java index bf1b261..8b46aa9 100644 --- a/src/main/java/io/zipcoder/controller/WithdrawalController.java +++ b/src/main/java/io/zipcoder/controller/WithdrawalController.java @@ -9,7 +9,7 @@ @RestController public class WithdrawalController { - + private WithdrawalService withdrawalService; @Autowired diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index e69de29..69b8998 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.h2.console.enabled=true \ No newline at end of file From d9582654f2b533d4f29b4e9bdffed310daff9115 Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Thu, 12 Apr 2018 15:55:00 -0400 Subject: [PATCH 21/22] account service/controller fleshed out --- .../{DespostType.java => DepositType.java} | 4 +- .../controller/AccountController.java | 28 ++++++---- .../controller/CustomerController.java | 9 +++- src/main/java/io/zipcoder/domain/Address.java | 11 ++++ src/main/java/io/zipcoder/domain/Bill.java | 7 +++ src/main/java/io/zipcoder/domain/Deposit.java | 10 ++-- .../java/io/zipcoder/domain/Withdrawal.java | 10 ++-- .../zipcoder/repository/BillRepository.java | 4 ++ .../repository/DepositRepository.java | 3 ++ .../repository/WithdrawalRepository.java | 1 + .../io/zipcoder/service/AccountService.java | 52 ++++++++++++++++--- .../io/zipcoder/service/CustomerService.java | 9 +++- 12 files changed, 121 insertions(+), 27 deletions(-) rename src/main/java/io/zipcoder/Enums/{DespostType.java => DepositType.java} (73%) diff --git a/src/main/java/io/zipcoder/Enums/DespostType.java b/src/main/java/io/zipcoder/Enums/DepositType.java similarity index 73% rename from src/main/java/io/zipcoder/Enums/DespostType.java rename to src/main/java/io/zipcoder/Enums/DepositType.java index 02c5a52..95ee1ea 100644 --- a/src/main/java/io/zipcoder/Enums/DespostType.java +++ b/src/main/java/io/zipcoder/Enums/DepositType.java @@ -1,13 +1,13 @@ package io.zipcoder.Enums; -public enum DespostType { +public enum DepositType { P2P("P2P"), DEPOSIT("Deposit"), WITHDRAWAL("Withdrawal"); private String name; - DespostType(String name){ + DepositType(String name){ this.name = name; } } diff --git a/src/main/java/io/zipcoder/controller/AccountController.java b/src/main/java/io/zipcoder/controller/AccountController.java index 258ab56..3538875 100644 --- a/src/main/java/io/zipcoder/controller/AccountController.java +++ b/src/main/java/io/zipcoder/controller/AccountController.java @@ -2,6 +2,8 @@ import io.zipcoder.domain.Account; import io.zipcoder.domain.Bill; +import io.zipcoder.domain.Deposit; +import io.zipcoder.domain.Withdrawal; import io.zipcoder.service.AccountService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; @@ -11,9 +13,14 @@ @RestController public class AccountController { - @Autowired + AccountService service; + @Autowired + public AccountController(AccountService service){ + this.service = service; + } + @RequestMapping(value = "/accounts", method = RequestMethod.GET) public ResponseEntity getAllAccounts() { return new ResponseEntity<>(service.getAllAccounts(), HttpStatus.OK); @@ -52,32 +59,35 @@ public ResponseEntity getAccountCustomer(@PathVariable Long id) { @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.GET) public ResponseEntity getAccountBills(@PathVariable Long id) { - return null; + return new ResponseEntity<>(service.getAccountBills(id), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}/bills", method = RequestMethod.POST) public ResponseEntity createBill(@PathVariable Long id, @RequestBody Bill bill) { - return null; + service.createBill(bill); + return new ResponseEntity<>(HttpStatus.CREATED); } @RequestMapping(value = "/accounts/{id}/deposits", method = RequestMethod.GET) public ResponseEntity getAllDeposits(@PathVariable Long id) { - return null; + return new ResponseEntity<>(service.getAccountDeposits(id), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}/deposits", method = RequestMethod.POST) - public ResponseEntity createDeposit(@PathVariable Long id) { - return null; + public ResponseEntity createDeposit(@PathVariable Long id, @RequestBody Deposit deposit) { + service.createDeposit(deposit); + return new ResponseEntity<>(HttpStatus.CREATED); } @RequestMapping(value = "/accounts/{id}/withdrawals", method = RequestMethod.GET) public ResponseEntity getAllWithdrawals(@PathVariable Long id) { - return null; + return new ResponseEntity<>(service.getAccountWithdrawals(id), HttpStatus.OK); } @RequestMapping(value = "/accounts/{id}/withdrawals", method = RequestMethod.POST) - public ResponseEntity createWithdrawal(@PathVariable Long id) { - return null; + public ResponseEntity createWithdrawal(@PathVariable Long id, @RequestBody Withdrawal withdrawal) { + service.createWithdrawal(withdrawal); + return new ResponseEntity<>(HttpStatus.CREATED); } diff --git a/src/main/java/io/zipcoder/controller/CustomerController.java b/src/main/java/io/zipcoder/controller/CustomerController.java index 01c95c8..459c7e8 100644 --- a/src/main/java/io/zipcoder/controller/CustomerController.java +++ b/src/main/java/io/zipcoder/controller/CustomerController.java @@ -5,12 +5,19 @@ import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RestController; +@RestController public class CustomerController { - @Autowired + CustomerService service; + @Autowired + public CustomerController(CustomerService service){ + this.service = service; + } + @RequestMapping(value = "/customer/{customer}/accounts", method = RequestMethod.GET) public ResponseEntity getAllAcctsForCust() { return null; diff --git a/src/main/java/io/zipcoder/domain/Address.java b/src/main/java/io/zipcoder/domain/Address.java index 5fc223f..29f087d 100644 --- a/src/main/java/io/zipcoder/domain/Address.java +++ b/src/main/java/io/zipcoder/domain/Address.java @@ -1,5 +1,6 @@ package io.zipcoder.domain; +import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.Id; @@ -9,10 +10,20 @@ public class Address { @Id @GeneratedValue private Long id; + + @Column(name = "STREET_NUMBER") private String streetNumber; + + @Column(name = "STREET_NAME") private String streetName; + + @Column(name = "CITY") private String city; + + @Column(name = "STATE") private String state; + + @Column(name = "ZIP") private String zip; public Long getId() { diff --git a/src/main/java/io/zipcoder/domain/Bill.java b/src/main/java/io/zipcoder/domain/Bill.java index 3ad30c4..e0f82da 100644 --- a/src/main/java/io/zipcoder/domain/Bill.java +++ b/src/main/java/io/zipcoder/domain/Bill.java @@ -1,14 +1,19 @@ package io.zipcoder.domain; import io.zipcoder.Enums.Status; + +import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Bill { @Id + @GeneratedValue private Long id; + private Status status; private String payee; private String nickname; @@ -17,6 +22,8 @@ public class Bill { private Integer recurring_date; private String upcoming_payment_date; private Double paymount_amount; + + private String account_id; public Long getId() { diff --git a/src/main/java/io/zipcoder/domain/Deposit.java b/src/main/java/io/zipcoder/domain/Deposit.java index 556bd03..b2da3f1 100644 --- a/src/main/java/io/zipcoder/domain/Deposit.java +++ b/src/main/java/io/zipcoder/domain/Deposit.java @@ -1,19 +1,21 @@ package io.zipcoder.domain; -import io.zipcoder.Enums.DespostType; +import io.zipcoder.Enums.DepositType; import io.zipcoder.Enums.Medium; import io.zipcoder.Enums.Status; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Deposit { @Id + @GeneratedValue private long id; - private DespostType type; + private DepositType type; private String transaction_date; private Status status; private long payee_id; @@ -29,11 +31,11 @@ public void setId(long id) { this.id = id; } - public DespostType getType() { + public DepositType getType() { return type; } - public void setType(DespostType type) { + public void setType(DepositType type) { this.type = type; } diff --git a/src/main/java/io/zipcoder/domain/Withdrawal.java b/src/main/java/io/zipcoder/domain/Withdrawal.java index 441e030..926057c 100644 --- a/src/main/java/io/zipcoder/domain/Withdrawal.java +++ b/src/main/java/io/zipcoder/domain/Withdrawal.java @@ -1,19 +1,21 @@ package io.zipcoder.domain; -import io.zipcoder.Enums.DespostType; +import io.zipcoder.Enums.DepositType; import io.zipcoder.Enums.Medium; import io.zipcoder.Enums.Status; import javax.persistence.Entity; +import javax.persistence.GeneratedValue; import javax.persistence.Id; @Entity public class Withdrawal { @Id + @GeneratedValue private long id; - private DespostType type; + private DepositType type; private String transaction_date; private Status status; private long payer_id; @@ -29,11 +31,11 @@ public void setId(long id) { this.id = id; } - public DespostType getType() { + public DepositType getType() { return type; } - public void setType(DespostType type) { + public void setType(DepositType type) { this.type = type; } diff --git a/src/main/java/io/zipcoder/repository/BillRepository.java b/src/main/java/io/zipcoder/repository/BillRepository.java index 38f55c4..8eb207f 100644 --- a/src/main/java/io/zipcoder/repository/BillRepository.java +++ b/src/main/java/io/zipcoder/repository/BillRepository.java @@ -3,5 +3,9 @@ import io.zipcoder.domain.Bill; import org.springframework.data.repository.CrudRepository; +import java.util.List; + public interface BillRepository extends CrudRepository{ + + public Iterable findAllByAccount_id(Long id); } diff --git a/src/main/java/io/zipcoder/repository/DepositRepository.java b/src/main/java/io/zipcoder/repository/DepositRepository.java index 4da6288..3788379 100644 --- a/src/main/java/io/zipcoder/repository/DepositRepository.java +++ b/src/main/java/io/zipcoder/repository/DepositRepository.java @@ -4,4 +4,7 @@ import org.springframework.data.repository.CrudRepository; public interface DepositRepository extends CrudRepository { + + Iterable findAllByPayee_id(Long id); + } diff --git a/src/main/java/io/zipcoder/repository/WithdrawalRepository.java b/src/main/java/io/zipcoder/repository/WithdrawalRepository.java index 57233ea..675cdcc 100644 --- a/src/main/java/io/zipcoder/repository/WithdrawalRepository.java +++ b/src/main/java/io/zipcoder/repository/WithdrawalRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.repository.CrudRepository; public interface WithdrawalRepository extends CrudRepository{ + Iterable findAllByPayee_id(Long id); } diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java index 81ddb4a..5a6c841 100644 --- a/src/main/java/io/zipcoder/service/AccountService.java +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -1,9 +1,10 @@ package io.zipcoder.service; -import io.zipcoder.domain.Account; -import io.zipcoder.domain.Bill; -import io.zipcoder.domain.Customer; +import io.zipcoder.domain.*; import io.zipcoder.repository.AccountRepository; +import io.zipcoder.repository.BillRepository; +import io.zipcoder.repository.DepositRepository; +import io.zipcoder.repository.WithdrawalRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -13,8 +14,19 @@ @Service public class AccountService { + + private AccountRepository repo; + private BillRepository billRepo; + private DepositRepository depositRepo; + private WithdrawalRepository withdrawalRepo; + @Autowired - AccountRepository repo; + public AccountService(BillRepository billRepo, AccountRepository repo, DepositRepository depositRepo, WithdrawalRepository withdrawalRepo){ + this.billRepo=billRepo; + this.repo = repo; + this.depositRepo= depositRepo; + this.withdrawalRepo=withdrawalRepo; + } public List getAllAccounts(){ @@ -54,11 +66,39 @@ public Customer getAccountCustomer(Long id) { } public List getAccountBills(Long id) { - return null; + List bills = new ArrayList<>(); + for(Bill b : billRepo.findAllByAccount_id(id)) { + bills.add(b); + } + return bills; } - public void createBill(Long id, Bill bill) { + public void createBill(Bill bill) { + billRepo.save(bill); + } + + public List getAccountDeposits(Long id) { + List deposits = new ArrayList<>(); + for(Deposit d : depositRepo.findAllByPayee_id(id)) { + deposits.add(d); + } + return deposits; + } + + public void createDeposit(Deposit deposit) { + depositRepo.save(deposit); + } + + public List getAccountWithdrawals(Long id) { + List withdrawals = new ArrayList<>(); + for(Withdrawal w : withdrawalRepo.findAllByPayee_id(id)) { + withdrawals.add(w); + } + return withdrawals; + } + public void createWithdrawal(Withdrawal withdrawal) { + withdrawalRepo.save(withdrawal); } } diff --git a/src/main/java/io/zipcoder/service/CustomerService.java b/src/main/java/io/zipcoder/service/CustomerService.java index e6018b1..dc07d0d 100644 --- a/src/main/java/io/zipcoder/service/CustomerService.java +++ b/src/main/java/io/zipcoder/service/CustomerService.java @@ -2,9 +2,16 @@ import io.zipcoder.repository.CustomerRepository; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +@Service public class CustomerService { + + private CustomerRepository repo; + @Autowired - CustomerRepository repo; + public CustomerService(CustomerRepository repo) { + this.repo = repo; + } } From 6a19c793f281ad28c385cad97aa18b7681a0b6eb Mon Sep 17 00:00:00 2001 From: Eric Barnaba Date: Thu, 12 Apr 2018 18:36:07 -0400 Subject: [PATCH 22/22] all methods in controllers and services fleshed out --- .../controller/CustomerController.java | 48 ++++++++----- src/main/java/io/zipcoder/domain/Account.java | 14 ++-- .../repository/AccountRepository.java | 2 + .../zipcoder/repository/BillRepository.java | 3 +- .../repository/CustomerRepository.java | 1 + .../io/zipcoder/service/AccountService.java | 13 ++-- .../io/zipcoder/service/CustomerService.java | 67 ++++++++++++++++++- 7 files changed, 115 insertions(+), 33 deletions(-) diff --git a/src/main/java/io/zipcoder/controller/CustomerController.java b/src/main/java/io/zipcoder/controller/CustomerController.java index 459c7e8..54c5ef3 100644 --- a/src/main/java/io/zipcoder/controller/CustomerController.java +++ b/src/main/java/io/zipcoder/controller/CustomerController.java @@ -1,11 +1,13 @@ package io.zipcoder.controller; +import com.sun.deploy.net.HttpResponse; +import io.zipcoder.domain.Account; +import io.zipcoder.domain.Customer; import io.zipcoder.service.CustomerService; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; @RestController public class CustomerController { @@ -18,38 +20,48 @@ public CustomerController(CustomerService service){ this.service = service; } - @RequestMapping(value = "/customer/{customer}/accounts", method = RequestMethod.GET) - public ResponseEntity getAllAcctsForCust() { - return null; + @RequestMapping(value = "/customers/{id}/accounts", method = RequestMethod.GET) + public ResponseEntity getAllAcctsForCust(@PathVariable Long id) { + + return new ResponseEntity<>(service.getAllAccountsForCust(id), HttpStatus.OK); } - @RequestMapping(value = "/customer/{customerId}/accounts", method = RequestMethod.POST) - public ResponseEntity createAccount(){ - return null; + @RequestMapping(value = "/customers/{id}/accounts", method = RequestMethod.POST) + public ResponseEntity createAccount(@PathVariable Long id, @RequestBody Account account){ + service.createAccount(account); + return new ResponseEntity<>(HttpStatus.CREATED); } @RequestMapping(value = "/customers", method = RequestMethod.GET) public ResponseEntity getAllCustomers(){ - return null; + return new ResponseEntity<>(service.getAllCustomers(), HttpStatus.OK); } @RequestMapping(value = "/customers/{id}", method = RequestMethod.GET) - public ResponseEntity getSpecificCusomer(){ - return null; + public ResponseEntity getSpecificCusomer(@PathVariable Long id){ + + return new ResponseEntity<>(service.getCustomerById(id), HttpStatus.OK); } @RequestMapping(value = "/customers", method = RequestMethod.POST) - public ResponseEntity createACustomer(){ - return null; + public ResponseEntity createACustomer(@RequestBody Customer customer){ + service.addCustomer(customer); + return new ResponseEntity<>(HttpStatus.CREATED); } @RequestMapping(value = "/customer/{id}", method = RequestMethod.PUT) - public ResponseEntity updateCustomer(){ - return null; + public ResponseEntity updateCustomer(@PathVariable Long id, @RequestBody Customer customer){ + if(service.updateCustomer(id,customer)){ + return new ResponseEntity<>(HttpStatus.OK); + } + else{ + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } } @RequestMapping(value = "/customer/{id}/bills", method = RequestMethod.GET) - public ResponseEntity getAllBillsForCust(){ - return null; + public ResponseEntity getAllBillsForCust(@PathVariable Long id){ + + return new ResponseEntity<>(service.getAllBillsForCustomer(id), HttpStatus.OK); } } diff --git a/src/main/java/io/zipcoder/domain/Account.java b/src/main/java/io/zipcoder/domain/Account.java index 41ea60a..095e55c 100644 --- a/src/main/java/io/zipcoder/domain/Account.java +++ b/src/main/java/io/zipcoder/domain/Account.java @@ -23,9 +23,9 @@ public class Account { @Column(name = "BALANCE") private Double balance; - @OneToOne - @JoinColumn(name = "ID") - private Customer customer; + + @Column(name = "CUSTOMER_ID") + private Long customerId; public Long getId() { return id; @@ -67,11 +67,11 @@ public void setBalance(Double balance) { this.balance = balance; } - public Customer getCustomer() { - return customer; + public Long getCustomer() { + return customerId; } - public void setCustomer(Customer customer) { - this.customer = customer; + public void setCustomer(Long customerId) { + this.customerId = customerId; } } diff --git a/src/main/java/io/zipcoder/repository/AccountRepository.java b/src/main/java/io/zipcoder/repository/AccountRepository.java index 9e47e6c..4a97049 100644 --- a/src/main/java/io/zipcoder/repository/AccountRepository.java +++ b/src/main/java/io/zipcoder/repository/AccountRepository.java @@ -1,7 +1,9 @@ package io.zipcoder.repository; import io.zipcoder.domain.Account; +import io.zipcoder.domain.Customer; import org.springframework.data.repository.CrudRepository; public interface AccountRepository extends CrudRepository { + Iterable findAllByCustomerId(Long id); } diff --git a/src/main/java/io/zipcoder/repository/BillRepository.java b/src/main/java/io/zipcoder/repository/BillRepository.java index 8eb207f..f03c1dd 100644 --- a/src/main/java/io/zipcoder/repository/BillRepository.java +++ b/src/main/java/io/zipcoder/repository/BillRepository.java @@ -5,7 +5,8 @@ import java.util.List; -public interface BillRepository extends CrudRepository{ +public interface BillRepository extends CrudRepository { public Iterable findAllByAccount_id(Long id); } + diff --git a/src/main/java/io/zipcoder/repository/CustomerRepository.java b/src/main/java/io/zipcoder/repository/CustomerRepository.java index af70f4b..656915e 100644 --- a/src/main/java/io/zipcoder/repository/CustomerRepository.java +++ b/src/main/java/io/zipcoder/repository/CustomerRepository.java @@ -4,4 +4,5 @@ import org.springframework.data.repository.CrudRepository; public interface CustomerRepository extends CrudRepository{ + } diff --git a/src/main/java/io/zipcoder/service/AccountService.java b/src/main/java/io/zipcoder/service/AccountService.java index 5a6c841..c1e1ad5 100644 --- a/src/main/java/io/zipcoder/service/AccountService.java +++ b/src/main/java/io/zipcoder/service/AccountService.java @@ -1,10 +1,7 @@ package io.zipcoder.service; import io.zipcoder.domain.*; -import io.zipcoder.repository.AccountRepository; -import io.zipcoder.repository.BillRepository; -import io.zipcoder.repository.DepositRepository; -import io.zipcoder.repository.WithdrawalRepository; +import io.zipcoder.repository.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -19,13 +16,15 @@ public class AccountService { private BillRepository billRepo; private DepositRepository depositRepo; private WithdrawalRepository withdrawalRepo; + private CustomerRepository customerRepo; @Autowired - public AccountService(BillRepository billRepo, AccountRepository repo, DepositRepository depositRepo, WithdrawalRepository withdrawalRepo){ + public AccountService(BillRepository billRepo, AccountRepository repo, DepositRepository depositRepo, WithdrawalRepository withdrawalRepo, CustomerRepository customerRepo){ this.billRepo=billRepo; this.repo = repo; this.depositRepo= depositRepo; this.withdrawalRepo=withdrawalRepo; + this.customerRepo = customerRepo; } @@ -62,7 +61,9 @@ public boolean removeAccount(Long id){ } public Customer getAccountCustomer(Long id) { - return repo.findOne(id).getCustomer(); + Account account = repo.findOne(id); + + return customerRepo.findOne(account.getCustomer()); } public List getAccountBills(Long id) { diff --git a/src/main/java/io/zipcoder/service/CustomerService.java b/src/main/java/io/zipcoder/service/CustomerService.java index dc07d0d..b076dd4 100644 --- a/src/main/java/io/zipcoder/service/CustomerService.java +++ b/src/main/java/io/zipcoder/service/CustomerService.java @@ -1,17 +1,82 @@ package io.zipcoder.service; +import io.zipcoder.domain.Account; +import io.zipcoder.domain.Bill; +import io.zipcoder.domain.Customer; +import io.zipcoder.repository.AccountRepository; +import io.zipcoder.repository.BillRepository; import io.zipcoder.repository.CustomerRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; +import java.util.List; + @Service public class CustomerService { private CustomerRepository repo; + private AccountRepository accountRepo; + private BillRepository billRepo; + private AccountService accountService; @Autowired - public CustomerService(CustomerRepository repo) { + public CustomerService(CustomerRepository repo, AccountRepository accountRepo, BillRepository billRepo, AccountService accountService) { this.repo = repo; + this.accountRepo = accountRepo; + this.billRepo = billRepo; + this.accountService = accountService; + } + + public List getAllAccountsForCust(Long id){ + List accounts = new ArrayList<>(); + for(Account a : accountRepo.findAllByCustomerId(id)) { + accounts.add(a); + } + return accounts; + } + + public void createAccount(Account account){ + accountRepo.save(account); + } + + public List getAllCustomers() { + List customers = new ArrayList(); + for(Customer c : repo.findAll()){ + customers.add(c); + } + return customers; + } + + public Customer getCustomerById(Long id){ + return repo.findOne(id); + } + + public void addCustomer (Customer customer) { + repo.save(customer); + } + + public boolean updateCustomer(Long id, Customer customer){ + if(repo.exists(id)){ + repo.save(customer); + return true; + } + else{ + return false; + } + } + + public List getAllBillsForCustomer(Long id){ + List bills = new ArrayList<>(); + List accounts = this.getAllAccountsForCust(id); + for(Account a : accounts){ + List accountBills = accountService.getAccountBills(a.getId()); + for(Bill b : accountBills){ + bills.add(b); + } + } + return bills; } + }