diff --git a/src/main/java/fr/unistra/sil/erp/back/controller/web/WebRegistryController.java b/src/main/java/fr/unistra/sil/erp/back/controller/web/WebRegistryController.java index 4c77b7a4cf0bd5a6858b99d34055297affb5a873..914e6f336e85ab5f6a5a872dda531079734ec757 100644 --- a/src/main/java/fr/unistra/sil/erp/back/controller/web/WebRegistryController.java +++ b/src/main/java/fr/unistra/sil/erp/back/controller/web/WebRegistryController.java @@ -5,17 +5,27 @@ package fr.unistra.sil.erp.back.controller.web; import static fr.unistra.sil.erp.back.WebMvcConfig.WEB_MAPPING_REGISTRY; + +import fr.unistra.sil.erp.back.model.RegistryInfo; import fr.unistra.sil.erp.back.repository.DatabaseConnectionException; import fr.unistra.sil.erp.back.model.RegistryEntry; +import java.math.BigDecimal; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import fr.unistra.sil.erp.back.repository.IRegistryRepository; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; /** * Web controller for the registry display page. @@ -28,8 +38,7 @@ public class WebRegistryController { private final IRegistryRepository repository; /** - * - * @param repository + * @param repository registry repository */ public WebRegistryController(IRegistryRepository repository) { this.repository = repository; @@ -45,10 +54,28 @@ public class WebRegistryController { public String registry(Model model) { try { List<RegistryEntry> lr = repository.getRegistry(); + model.addAttribute("RegistryInfo", new RegistryInfo( + 0, "0", 0, new BigDecimal(0), new BigDecimal(0), "" + )); model.addAttribute("registry", lr); } catch (DatabaseConnectionException ex) { Logger.getLogger(WebRegistryController.class.getName()).log(Level.SEVERE, null, ex); } return "registry"; } + + @PostMapping(WEB_MAPPING_REGISTRY) + public String createUser(@ModelAttribute RegistryInfo registryInfo, Model model) throws ParseException { + RegistryEntry entry = new RegistryEntry( + 0, + registryInfo.getTransactionType(), + (new SimpleDateFormat("yyyy-MM-dd HH:mm")).parse(registryInfo.getDate()), + registryInfo.getAccountId(), + registryInfo.getDebit(), + registryInfo.getCredit(), + registryInfo.getRemarks() + ); + repository.store(entry); + return registry(model); + } } diff --git a/src/main/java/fr/unistra/sil/erp/back/model/RegistryInfo.java b/src/main/java/fr/unistra/sil/erp/back/model/RegistryInfo.java new file mode 100644 index 0000000000000000000000000000000000000000..81d91077bde9c66515742dc8ca2eeb94b293088e --- /dev/null +++ b/src/main/java/fr/unistra/sil/erp/back/model/RegistryInfo.java @@ -0,0 +1,76 @@ +package fr.unistra.sil.erp.back.model; + +import java.math.BigDecimal; +import java.util.Date; + +public class RegistryInfo { + /** + * The transaction's type. + */ + private final int transactionType; + + /** + * The date and time for this transaction. + */ + private final String date; + + /** + * The ID of the associated account. + */ + private final int accountId; + + /** + * The amount of money, if it's a debit. + */ + private final BigDecimal debit; + + /** + * The amount of money, if it's a credit. + */ + private final BigDecimal credit; + + /** + * Arbitrary remarks. Optional. + */ + private final String remarks; + + public RegistryInfo( + int transactionType, + String date, + int accountId, + BigDecimal debit, + BigDecimal credit, + String remarks + ) { + this.transactionType = transactionType; + this.date = date; + this.accountId = accountId; + this.debit = debit; + this.credit = credit; + this.remarks = remarks; + } + + public int getTransactionType() { + return transactionType; + } + + public String getDate() { + return date; + } + + public int getAccountId() { + return accountId; + } + + public BigDecimal getDebit() { + return debit; + } + + public BigDecimal getCredit() { + return credit; + } + + public String getRemarks() { + return remarks; + } +} diff --git a/src/main/resources/static/css/main.css b/src/main/resources/static/css/main.css index ab0193f85a4f7d9bc7614ecae9a6f35803cd176b..cba43c78013f785de19c46931800390505833cf5 100644 --- a/src/main/resources/static/css/main.css +++ b/src/main/resources/static/css/main.css @@ -62,3 +62,7 @@ text-align: left; } } + +table, td, th { + border: 1px solid black; +} diff --git a/src/main/resources/templates/registry.html b/src/main/resources/templates/registry.html index b251900cb1dc16cb42af35bcb65ea3258c9537c0..bdeb03af093c4a4d67a5d6cc9b581e0e9ef9ec4a 100644 --- a/src/main/resources/templates/registry.html +++ b/src/main/resources/templates/registry.html @@ -26,6 +26,18 @@ <td th:text="${entry.credit}"></td> <td th:text="${entry.remarks}"></td> </tr> + + <tr> + <form th:action="@{/registry}" th:object="${RegistryInfo}" method="post"> + <td><input type="datetime-local" th:field="*{date}" /></td> + <td><input type="number" th:field="*{transactionType}" /></td> + <td><input type="number" th:field="*{accountId}" /></td> + <td><input type="number" th:field="*{debit}" /></td> + <td><input type="number" th:field="*{credit}" /></td> + <td><input type="text" th:field="*{remarks}" /></td> + <td><input type="submit" /></td> + </form> + </tr> </table> </div> </article>