diff --git a/team1/pom.xml b/team1/pom.xml index 8b03b4f..d38cddb 100644 --- a/team1/pom.xml +++ b/team1/pom.xml @@ -74,16 +74,7 @@ spring-boot-starter-webmvc-test test - - com.example - HelloSpring - 0.0.1-SNAPSHOT - - - com.example.rhizome - EM-Spring - 0.0.1-SNAPSHOT - + diff --git a/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java index 19609f5..99f280c 100644 --- a/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java +++ b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmController.java @@ -1,19 +1,9 @@ package com.example.demo.controller; -import java.util.logging.Level; -import java.util.logging.Logger; - -import jakarta.servlet.http.HttpSession; - -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import com.example.demo.form.ApprovalForm; - /** * 書籍貸出承認確認用のコントローラ */ @@ -21,44 +11,46 @@ import com.example.demo.form.ApprovalForm; public class ApprovalConfirmController { // ログ出力用インスタンス - private final static Logger LOGGER = Logger.getLogger(ApprovalConfirmController.class.getName()); +// private final static Logger LOGGER = Logger.getLogger(ApprovalConfirmController.class.getName()); // エラーメッセージ用の定数フィールド - private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; +// private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; - HttpSession httpSession; - Request request; +// HttpSession httpSession; +// Request request; +// +// @Autowired +// public ApprovalConfirmController( +// HttpSession httpSession, +// Request request) { +// this.httpSession = httpSession; +// this.request = request; +// } +// +// @ModelAttribute +// public ApprovalForm approvalForm() { +// return new ApprovalForm(); +// } - @Autowired - public ApprovalConfirmController( - HttpSession httpSession, - Request request) { - this.httpSession = httpSession; - this.request = request; - } - - @ModelAttribute - public ApprovalForm approvalForm() { - return new ApprovalForm(); - } - - @RequestMapping(value = "/ApprovalConfirm", method = RequestMethod.POST) - public String AprrvalForm(ApprovalForm ApprovalForm, Model model) { + @RequestMapping(value = "/approvalConfirm", method = RequestMethod.POST) + public String AprrvalForm() { - try { - - - return a ; - } catch (Exception e) { - // ログイン情報の破棄 - httpSession.invalidate(); - - e.printStackTrace(); - - // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); - // エラー画面遷移 - return "error"; - } + System.out.println("a"); + return "bookList"; +// try { +// +// +// return ; +// } catch (Exception e) { +// // ログイン情報の破棄 +// httpSession.invalidate(); +// +// e.printStackTrace(); +// +// // エラーログ出力 +// LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); +// // エラー画面遷移 +// return "error"; +// } } } diff --git a/team1/src/main/java/com/example/demo/controller/ApprovalConfirmResultController.java b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmResultController.java new file mode 100644 index 0000000..01741be --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/ApprovalConfirmResultController.java @@ -0,0 +1,11 @@ +package com.example.demo.controller; + +import org.springframework.stereotype.Controller; + +/** + * 書籍貸出完了・却下処理用のコントローラ + */ +@Controller +public class ApprovalConfirmResultController { + +} diff --git a/team1/src/main/java/com/example/demo/controller/LendingController.java b/team1/src/main/java/com/example/demo/controller/LendingController.java index 2c44fd6..8703362 100644 --- a/team1/src/main/java/com/example/demo/controller/LendingController.java +++ b/team1/src/main/java/com/example/demo/controller/LendingController.java @@ -1,4 +1,4 @@ -package com.example.demo.controller; +/*package com.example.demo.controller; import java.util.logging.Level; import java.util.logging.Logger; @@ -18,7 +18,7 @@ import main.java.com.example.rhizome.app.presentation.controller.pageproperty.Tr /** * 書籍貸出申請に関する処理を制御するコントローラ */ -@Controller +/*@Controller public class LendingController { // ログ出力用インスタンス private final static Logger LOGGER = Logger.getLogger(LendingController.class.getName()); @@ -34,35 +34,36 @@ public class LendingController { } //画面を開くための初期化(!formクラス名要確認!) - @ModelAttribute - public LendingForm lendingForm() { - return new LendingForm(); - } +// @ModelAttribute +// public LendingForm lendingForm() { +// return new LendingForm(); +// } - @PermissionCheck - @SessionCheck - @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) - public String confirmLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { - try { +// @PermissionCheck +// @SessionCheck +// @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) +// public String confirmLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { +// try { // HTML側の th:object="${lendingForm}" に渡すデータをセット - model.addAllAttribute("lendingForm", lendingForm); +// model.addAllAttribute("lendingForm", lendingForm); // 貸出申請確認画面のHTML名を返す - return "applicationConform"; - } catch (Exception e) { +// return "applicationConform"; +// } catch (Exception e) { //ログイン情報の破棄 - httpSession.invalidate(); +// httpSession.invalidate(); - e.printStackTrace(); +// e.printStackTrace(); // エラーログ出力 - LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); +// LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); // エラー画面遷移 - return TransitionTargetPageNameKeyword.ERROR_HTML; +// return TransitionTargetPageNameKeyword.ERROR_HTML; - } +// } + +// } - } /** * 書籍貸出申請 実行処理 * @@ -70,13 +71,24 @@ public class LendingController { * @param model ビューにデータを渡すためのコンテナ * @return 遷移先の画面 */ - @PermissionCheck - @SessionCheck - @RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) - public String executeLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { - final String LENDING_COMPLETE = "書籍申請完了しました"; - } - try { - - }catch -} + //@PermissionCheck + //@SessionCheck + //@RequestMapping(value = "反応するURLを記載", method = RequestMethod.POST) + //public String executeLending(@ModelAttribute("lendingForm") LendingForm lendingForm, Model model) { + //final String LENDING_COMPLETE = "書籍申請完了しました"; + //try + + //{ + + //} catch (Exception e) { + // ログイン情報の破棄 + //httpSession.invalidate(); + //e.printStackTrace(); + + // エラーログ出力 + //LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + // エラー画面遷移 + //return TransitionTargetPageNameKeyword.ERROR_HTML; + //} + //} +//} diff --git a/team1/src/main/java/com/example/demo/controller/LoginController.java b/team1/src/main/java/com/example/demo/controller/LoginController.java new file mode 100644 index 0000000..23fc734 --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/LoginController.java @@ -0,0 +1,77 @@ +package com.example.demo.controller; + +import java.util.logging.Logger; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.PostMapping; + +import com.example.demo.form.LoginInfoForm; +import com.example.demo.form.LoginUserForm; +import com.example.demo.form.MessageForm; +import com.example.demo.service.impl.Login; + +@Controller +public class LoginController { + + // // ログ出力用インスタンス + private static final Logger LOGGER = Logger.getLogger(LoginController.class.getName()); + + // ログイン処理を行う + private final Login login; + + // コンストラクタで部品を注入する(Autowired) + @Autowired + public LoginController(Login login) { + this.login = login; + } + + // 画面で使うフォームの初期化 + @ModelAttribute + public LoginUserForm loginUserForm() { + return new LoginUserForm(); + } + + // ログインボタンが押されたときの処理 + @PostMapping("/doLogin") + public String doLogin(LoginInfoForm loginInfoForm, HttpSession session, Model model) { + + try { + // 入力チェック(メールアドレスやパスワードの形が正しいか) + if (!LoginUserForm.checkParameter(loginInfoForm)) { + // エラーメッセージと、入力されたデータを画面に返す + model.addAttribute("messageError", new MessageForm("メールアドレス、パスワードの入力内容に誤りがあります")); + model.addAttribute("loginInfoForm", loginInfoForm); + return "login"; // login.html を表示 + } + + // 認証チェック(IDとパスワードが一致するか) + if (!login.canLogin(loginInfoForm)) { + // 間違っている場合のメッセージを画面に返す + model.addAttribute("messageError", new MessageForm("IDまたはパスワードが間違っています")); + model.addAttribute("loginInfoForm", loginInfoForm); + return "login"; // login.html を表示 + } + + // ログイン処理の実行 + LoginUser loginUser = login.doLogin(loginInfoForm); + + // セッション(サーバーの秘密のメモ帳)にユーザー情報を保存 + //「ログイン中」の状態 + session.setAttribute("loginUser", LoginUserForm.convertFrom(loginUser)); + + // 成功したらメニュー画面へ進む + return "menu"; // menu.html を表示 + + } catch (Exception e) { + // 予期せぬエラーが起きたら、セッションを消してエラー画面へ + session.invalidate(); + LOGGER.error("エラーが発生しました!", e); + return "error"; // error.html を表示 + } + } +} \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/controller/LogoutController.java b/team1/src/main/java/com/example/demo/controller/LogoutController.java new file mode 100644 index 0000000..5484dc2 --- /dev/null +++ b/team1/src/main/java/com/example/demo/controller/LogoutController.java @@ -0,0 +1,64 @@ +package com.example.demo.controller; + +import static com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword.*; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import jakarta.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.ModelAttribute; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; + +import com.example.rhizome.aop.aspect.PermissionCheck; +import com.example.rhizome.aop.aspect.SessionCheck; +import com.example.rhizome.app.presentation.controller.pageproperty.PageReturnAttributeKeyword; +import com.example.rhizome.app.presentation.controller.pageproperty.TransitionTargetPageNameKeyword; +import com.example.rhizome.app.presentation.form.LoginUserForm; + +@Controller +public class LogoutController { + // ログ出力用インスタンス + private final static Logger LOGGER = Logger.getLogger(LogoutController.class.getName()); + // エラーメッセージ用の定数フィールド + private final static String SEVERE_ERROR_MESSAGE = "エラーが発生しました!"; + + HttpSession httpSession; + + @Autowired + public LogoutController(HttpSession httpSession) { + this.httpSession = httpSession; + } + + @ModelAttribute + public LoginUserForm loginUserForm() { + return new LoginUserForm(); + } + + @PermissionCheck + @SessionCheck + @RequestMapping(value = LOGOUT, method = RequestMethod.POST) + public String doLogout(Model model) { + try { + // セッション情報の破棄 + httpSession.invalidate(); + + // ログイン画面に遷移するための情報を設定 + model.addAttribute(PageReturnAttributeKeyword.LOGIN_INFO_FORM, loginUserForm()); + // login.html に遷移 + return TransitionTargetPageNameKeyword.LOGIN_HTML; + + } catch (Exception e) { + + // エラーログ出力 + LOGGER.log(Level.SEVERE, SEVERE_ERROR_MESSAGE, e); + // エラーページに遷移 + return TransitionTargetPageNameKeyword.ERROR_HTML; + } + + } +} diff --git a/team1/src/main/java/com/example/demo/controller/returnCompleteController.java b/team1/src/main/java/com/example/demo/controller/ReturnCompleteController.java similarity index 54% rename from team1/src/main/java/com/example/demo/controller/returnCompleteController.java rename to team1/src/main/java/com/example/demo/controller/ReturnCompleteController.java index b1f592d..38ab939 100644 --- a/team1/src/main/java/com/example/demo/controller/returnCompleteController.java +++ b/team1/src/main/java/com/example/demo/controller/ReturnCompleteController.java @@ -1,15 +1,28 @@ package com.example.demo.controller; +import jakarta.servlet.http.HttpSession; + +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.example.demo.form.ReturnForm; +import com.example.demo.service.ReturnService; //返却完了用のコントローラー @Controller -public class returnCompleteController { +public class ReturnCompleteController { + + HttpSession httpSession; + ReturnService rerurnService; + + @Autowired + public ReturnCompleteController(HttpSession httpSession, ReturnService rerurnService) { + this.httpSession = httpSession; + this.rerurnService = rerurnService; + } @ModelAttribute ReturnForm returnForm() { @@ -21,14 +34,13 @@ public class returnCompleteController { public String returnComplete(ReturnForm returnForm) { try { - System.out.println(returnForm.getNmBook()); + //セッションからIDを拾いたい + httpSession.getAttribute(""); + //いったん1ということで + int id = 1; + + rerurnService.setReturn(returnForm.getIdRequest(), id); - //各種 必要な値をDBから取得,セッションからログイン者の情報 - //蔵書テーブルの貸出フラグを貸出可、 - //貸出テーブルのステータスを返却済、 - //返却日を当日日付、 - //更新者を更新した人のID、 - //更新日を当日日付に更新する。 return "returnComplete"; } catch (Exception e) { diff --git a/team1/src/main/java/com/example/demo/controller/ReturnConfirmController.java b/team1/src/main/java/com/example/demo/controller/ReturnConfirmController.java index e38bde2..5bc1b5b 100644 --- a/team1/src/main/java/com/example/demo/controller/ReturnConfirmController.java +++ b/team1/src/main/java/com/example/demo/controller/ReturnConfirmController.java @@ -1,7 +1,6 @@ package com.example.demo.controller; -import java.util.Date; - +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; @@ -9,23 +8,35 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.example.demo.form.ReturnForm; +import com.example.demo.service.ReturnService; @Controller public class ReturnConfirmController { + + ReturnService rerurnService; + + @Autowired + ReturnConfirmController(ReturnService rerurnService) { + this.rerurnService = rerurnService; + } + @ModelAttribute ReturnForm returnForm() { - Date date = new Date(); - return new ReturnForm(1, "テスト名", date, date, date, "ISBN", "書籍名", "出版社", "特記事項"); + return new ReturnForm(); } @RequestMapping(value = "/returnConfirm", method = { RequestMethod.POST, RequestMethod.GET }) public String returnConfirm(Model model) { try { - //申請IDを元に取得 - //returnFormに値をセット //仮の値を入れる + Integer id = 1; + //申請IDを元に取得 + ReturnForm resultForm = rerurnService.getReturnForm(id); + resultForm.setIdRequest(id); + + //returnFormに値をセット // 画面に返す為の情報をセット - model.addAttribute("returnForm", returnForm()); + model.addAttribute("returnForm", resultForm); return "returnConfirm"; } catch (Exception e) { e.printStackTrace(); diff --git a/team1/src/main/java/com/example/demo/controller/SelectBookController.java b/team1/src/main/java/com/example/demo/controller/SelectBookController.java index 4fa733c..d974f0b 100644 --- a/team1/src/main/java/com/example/demo/controller/SelectBookController.java +++ b/team1/src/main/java/com/example/demo/controller/SelectBookController.java @@ -1,4 +1,4 @@ -package com.example.demo.controller; +/*package com.example.demo.controller; import java.util.List; @@ -75,3 +75,4 @@ public class SelectBookController { // } } +*/ \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/entity/Book_collectionEntity.java b/team1/src/main/java/com/example/demo/entity/Book_collectionEntity.java index 8bda2d8..c3b28f4 100644 --- a/team1/src/main/java/com/example/demo/entity/Book_collectionEntity.java +++ b/team1/src/main/java/com/example/demo/entity/Book_collectionEntity.java @@ -1,6 +1,6 @@ package com.example.demo.entity; - -import java.sql.Timestamp; + +import java.util.Date; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -14,7 +14,7 @@ import org.springframework.data.annotation.LastModifiedDate; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; - + //テーブル名 @Table(name = "book_collection") @Entity @@ -22,102 +22,100 @@ import lombok.NoArgsConstructor; @NoArgsConstructor @AllArgsConstructor public class Book_collectionEntity { - - + //蔵書ID @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "id_book", nullable = false) private Integer idBook; - + //ISBN @Column(name = "isbn", nullable = false, length = 13) private String isBn; - + //書籍名 @Column(name = "nm_book", nullable = false, length = 50) - private String nmBook; - + private String nmBook; + //書籍名よみ @Column(name = "kn_book", nullable = true, length = 100) - private String knBook; - + private String knBook; + //出版社 @Column(name = "publisher", nullable = true, length = 50) - private String pubLisher; - + private String pubLisher; + //特記事項 - @Column(name = "note text", nullable = true) - private String noteText; - + @Column(name = "note", nullable = true) + private String noteText; + //貸出フラグ -> charに変更する @Column(name = "flg_lending", nullable = false, columnDefinition = "default 0") - private Character flgLending; - + private Character flgLending; + //更新者 @Column(name = "id_update", nullable = false) - private Integer idUpdate; - + private Integer idUpdate; + //更新日 - @Column(name = "date_update", nullable = false) - @LastModifiedDate - private Timestamp dateUpdate; - -// public static Book_collection convertFrom(Book_collection book_collection) { -// // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。 -// return new Book_collection Entity( -// book_colletion.getIdBook(), -// book_colletion.getisBn(), -// book_colletion.getnmBook(), -// book_colletion..getknBook(), -// book_colletion.getpublisher(), -// book_colletion.getnoteText(), -// book_colletion.getflgLending(), -// book_colletion.getidUpdate(), -// book_colletion.getdateUupdate() -// ); -// -//} -//public static EmployeeEntity convertFrom(SearchConditionEmployee searchConditionEmployee) { -// EmployeeEntity employeeEntity = new EmployeeEntity(); -// -// employeeEntity.setIdBook(searchConditionEmployee.getIdBook()); -// employeeEntity.setisBn(searchConditionEmployee.getisBn()); -// employeeEntity.setnmBook(searchConditionEmployee.getnmBook()); - -// employeeEntity.setknBook(searchConditionEmployee.knBook()); -// employeeEntity.setpublisher(searchConditionEmployee.getpublisher()); -// employeeEntity.setnoteText(searchConditionEmployee.getnoteText()); -// employeeEntity.setflgLending(searchConditionEmployee.getflgLending()); -// employeeEntity.setidUpdate(searchConditionEmployee.getidUpdate()); -// employeeEntity.setdateUpdate(searchConditionEmployee.getdateUupdate()); - - -// -//// public static List createbook_collectionList(List employeeEntityList) { -//// return employeeEntityList.stream().map(EmployeeEntity::createbook_collection).toList(); -//// } -// -// List book_collectionList = new ArrayList<>(); -// for(book_collectionEntity book_collectionEntity:employeeEntityList){ -// book_collection employee = book_collectionEntity.createbook_collection(book_collectionEntity); -// book_collectionList.add(employee); -// } -// return employeeList; -// -// -// public LoginUser createLoginUser() { -// // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。 -// return new LoginUser( -// getidBook(), -// getisBn(), -// getnmBook(), -// getknBook(), -// getpublisher(), -// getnoteText(), -// getflgLending(), -// getidUpdate(), -// getdateUpdate() -// ); -// } + @Column(name = "date_update", nullable = false) + @LastModifiedDate + private Date dateUpdate; + + // public static Book_collection convertFrom(Book_collection book_collection) { + // // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。 + // return new Book_collection Entity( + // book_colletion.getIdBook(), + // book_colletion.getisBn(), + // book_colletion.getnmBook(), + // book_colletion..getknBook(), + // book_colletion.getpublisher(), + // book_colletion.getnoteText(), + // book_colletion.getflgLending(), + // book_colletion.getidUpdate(), + // book_colletion.getdateUupdate() + // ); + // + //} + //public static EmployeeEntity convertFrom(SearchConditionEmployee searchConditionEmployee) { + // EmployeeEntity employeeEntity = new EmployeeEntity(); + // + // employeeEntity.setIdBook(searchConditionEmployee.getIdBook()); + // employeeEntity.setisBn(searchConditionEmployee.getisBn()); + // employeeEntity.setnmBook(searchConditionEmployee.getnmBook()); + + // employeeEntity.setknBook(searchConditionEmployee.knBook()); + // employeeEntity.setpublisher(searchConditionEmployee.getpublisher()); + // employeeEntity.setnoteText(searchConditionEmployee.getnoteText()); + // employeeEntity.setflgLending(searchConditionEmployee.getflgLending()); + // employeeEntity.setidUpdate(searchConditionEmployee.getidUpdate()); + // employeeEntity.setdateUpdate(searchConditionEmployee.getdateUupdate()); + + // + //// public static List createbook_collectionList(List employeeEntityList) { + //// return employeeEntityList.stream().map(EmployeeEntity::createbook_collection).toList(); + //// } + // + // List book_collectionList = new ArrayList<>(); + // for(book_collectionEntity book_collectionEntity:employeeEntityList){ + // book_collection employee = book_collectionEntity.createbook_collection(book_collectionEntity); + // book_collectionList.add(employee); + // } + // return employeeList; + // + // + // public LoginUser createLoginUser() { + // // 値を既に持ったインスタンスの生成に、コンストラクタを使用するとこうなります。 + // return new LoginUser( + // getidBook(), + // getisBn(), + // getnmBook(), + // getknBook(), + // getpublisher(), + // getnoteText(), + // getflgLending(), + // getidUpdate(), + // getdateUpdate() + // ); + // } } diff --git a/team1/src/main/java/com/example/demo/entity/Borrow_booksEntity.java b/team1/src/main/java/com/example/demo/entity/Borrow_booksEntity.java index 84cbce4..da9059d 100644 --- a/team1/src/main/java/com/example/demo/entity/Borrow_booksEntity.java +++ b/team1/src/main/java/com/example/demo/entity/Borrow_booksEntity.java @@ -1,6 +1,5 @@ package com.example.demo.entity; -import java.security.Timestamp; import java.util.Date; import jakarta.persistence.Column; @@ -8,8 +7,9 @@ import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.Table; -import org.hibernate.annotations.Audited.Table; +//import org.hibernate.annotations.Audited.Table; import org.springframework.data.annotation.LastModifiedDate; import lombok.AllArgsConstructor; @@ -97,5 +97,5 @@ public class Borrow_booksEntity { * */ @Column(name = "date_update", nullable = false) @LastModifiedDate - private Timestamp dateUpdate; + private Date dateUpdate; } diff --git a/team1/src/main/java/com/example/demo/entity/EmployeeEntity.java b/team1/src/main/java/com/example/demo/entity/EmployeeEntity.java index 107738a..92818f9 100644 --- a/team1/src/main/java/com/example/demo/entity/EmployeeEntity.java +++ b/team1/src/main/java/com/example/demo/entity/EmployeeEntity.java @@ -1,6 +1,6 @@ package com.example.demo.entity; -import java.security.Timestamp; +import java.util.Date; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -81,7 +81,7 @@ public class EmployeeEntity { */ @Column(name = "date_update", nullable = false) @LastModifiedDate - private Timestamp dateUpdate; + private Date dateUpdate; } // public static EmployeeEntity convertForm(Employee employee) { diff --git a/team1/src/main/java/com/example/demo/form/LendingForm.java b/team1/src/main/java/com/example/demo/form/LendingForm.java new file mode 100644 index 0000000..ecd438e --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/LendingForm.java @@ -0,0 +1,83 @@ +package com.example.demo.form; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.List; + +import org.springframework.format.annotation.DateTimeFormat; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LendingForm { + /** + * 蔵書ID + */ + private String id_book; + /** + * 書籍名 + */ + private String nm_book; + + //貸出日と返却予定日にアノテーションで日付や時刻の表示形式を指定 + + /** + * 貸出日 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + //LocalDate型にて日付(年・月・日)を取り扱う + private LocalDate date_borrow; + + /** + * 返却予定日 + */ + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate date_scheduled_return; + + //isNullメソッドを作り、未入力になってないか入力チェックを行う + /** + * 日付用の null 判定メソッド + */ + private static boolean isNull(LocalDate date) { + return null == date; + } + + //画面でエラーが出た場合の表示 + //エラーが出た場合、リストに文言を追加する + public List validateParameter() { + final String DATE_BORROW_NULL = "貸出日 が未入力です。"; + final String DATE_RETURN_NULL = "返却予定日 が未入力です。"; + final String DATE_ORDER_ERROR = "返却予定日 には、貸出日以降の日付を選択してください。"; + + List error = new ArrayList<>(); + + // 1.「貸出日」が未入力(null)かどうかをチェックする + if (date_borrow == null) { + //errorリストの中にメッセージ"貸出日が未入力です"を入れる + error.add(DATE_BORROW_NULL); + } + + // 2.「返却予定日」が未入力(null)かどうかをチェック + if (date_scheduled_return == null) { + //errorリストの中にメッセージ"返却予定日 が未入力です。"を入れる + error.add(DATE_RETURN_NULL); + } + + // + // 3「両方ともnullではない(入力されている)」ときのみ日付の前後を比較する + if (date_borrow != null && date_scheduled_return != null) { + + // 返却予定日が貸出日より過去の場合のエラー + if (date_scheduled_return.isBefore(date_borrow)) { + //errorリストの中にメッセージ"返却予定日 には、貸出日以降の日付を選択してください。"を入れる + error.add(DATE_ORDER_ERROR); + } + } + + return error; + } +} \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/form/LoginInfoForm.java b/team1/src/main/java/com/example/demo/form/LoginInfoForm.java new file mode 100644 index 0000000..ec02f33 --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/LoginInfoForm.java @@ -0,0 +1,22 @@ +package com.example.demo.form; + +//ログイン情報 +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor + +public class LoginInfoForm { + /** + * メールアドレス + */ + private String mailAddress; + /** + * パスワード + */ + private String password; + +} diff --git a/team1/src/main/java/com/example/demo/form/LoginUserForm.java b/team1/src/main/java/com/example/demo/form/LoginUserForm.java new file mode 100644 index 0000000..280677a --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/LoginUserForm.java @@ -0,0 +1,96 @@ +package com.example.demo.form; + +import com.example.rhizome.app.domain.model.LoginUser; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +//ログインをする人 +@Data +@AllArgsConstructor +@NoArgsConstructor +public class LoginUserForm { + /** + * 社員ID + */ + private Integer idEmployee; + /** + * 社員名 + */ + private String nmEmployee; + /** + * 社員名よみ + */ + private String knEmployee; + /** + * メールアドレス + */ + private String mailAddress; + /** + * パスワード + */ + private String password; + + /** + * 管理者フラグ + */ + private Integer flgadmin; + + /** + * business 層の LoginUser クラスから画面用(presentation 層)の LoginUserForm に + * 変換します。 + * + * @param loginUser business 層の LoginUser インスタンス + * @return クラスから画面用(presentation 層)の LoginUserForm + */ + public static LoginUserForm convertFrom(LoginUser loginUser) { + return new LoginUserForm( + loginUser.getIdEmployee(), + loginUser.getNmEmployee(), + loginUser.getKnEmployee(), + loginUser.getMailAddress(), + loginUser.getPassword(), + loginUser.getGetFlgadmin() + ); + } + + + public static LoginUserForm convertTo(LoginUser loginUserForm) { + return new LoginUserForm( + loginUserForm.getIdEmployee(), + loginUserForm.getNmEmployee(), + loginUserForm.getKnEmployee(), + loginUserForm.getMailAddress(), + loginUserForm.getPassword(), + loginUserForm.getGetFlgadmin() + ); + } + + + public static boolean checkParameter(LoginInfoForm loginInfoForm) { + if (null == loginInfoForm.getMailAddress()) { + return false; + } + + if (loginInfoForm.getMailAddress().isBlank()) { + return false; + } + + if (null == loginInfoForm.getPassword()) { + return false; + } + + return !loginInfoForm.getPassword().isBlank(); + + } + + /** + * 管理者権限を持っているか確認 + * + * @return true:管理者権限を持っている , false:管理者権限を持っていない + */ + public boolean isAdminUser() { + return getFlgadmin() == 1; + } +} diff --git a/team1/src/main/java/com/example/demo/form/MessageForm.java b/team1/src/main/java/com/example/demo/form/MessageForm.java new file mode 100644 index 0000000..d124177 --- /dev/null +++ b/team1/src/main/java/com/example/demo/form/MessageForm.java @@ -0,0 +1,14 @@ +package com.example.demo.form; + +//画面にエラー表示する +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +public class MessageForm { + private String message; +} + diff --git a/team1/src/main/java/com/example/demo/model/LoginInfo.java b/team1/src/main/java/com/example/demo/model/LoginInfo.java new file mode 100644 index 0000000..21c3b8d --- /dev/null +++ b/team1/src/main/java/com/example/demo/model/LoginInfo.java @@ -0,0 +1,13 @@ +package com.example.demo.model; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +//ログインを試みる +@Getter +@AllArgsConstructor +public class LoginInfo { + private String maillAddress; + private String password; + +} diff --git a/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java b/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java index b273e3b..9761b26 100644 --- a/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java +++ b/team1/src/main/java/com/example/demo/repository/EmployeeRepository.java @@ -1,7 +1,5 @@ package com.example.demo.repository; -import java.util.Optional; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -9,6 +7,6 @@ import com.example.demo.entity.EmployeeEntity; @Repository public interface EmployeeRepository extends JpaRepository { - Optional findByMailAddressAndPassword(String mailAddress, String password); + } \ No newline at end of file diff --git a/team1/src/main/java/com/example/demo/service/ReturnService.java b/team1/src/main/java/com/example/demo/service/ReturnService.java new file mode 100644 index 0000000..3b6d189 --- /dev/null +++ b/team1/src/main/java/com/example/demo/service/ReturnService.java @@ -0,0 +1,97 @@ +package com.example.demo.service; + +import java.util.Date; +import java.util.Optional; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import com.example.demo.entity.Borrow_booksEntity; +import com.example.demo.form.ReturnForm; +import com.example.demo.repository.Book_CollectionRepository; +import com.example.demo.repository.Borrow_BooksRepository; +import com.example.demo.repository.EmployeeRepository; + +@Service +public class ReturnService { + + Book_CollectionRepository book_CollectionRepository; + Borrow_BooksRepository borrowRepository; + EmployeeRepository employeeRepository; + + @Autowired + public ReturnService( + Book_CollectionRepository book_CollectionRepository, + Borrow_BooksRepository borrowRepository, + EmployeeRepository employeeRepository) { + this.book_CollectionRepository = book_CollectionRepository; + this.borrowRepository = borrowRepository; + this.employeeRepository = employeeRepository; + } + + public ReturnForm getReturnForm(int id) { + ReturnForm result = new ReturnForm(); + Optional borrow = borrowRepository.findById(id); + // System.out.println(borrow); + result.setDateRequest(borrow.get().getDateRequest());//申請日 + result.setDateBorrow(borrow.get().getDateBorrow());//貸出日 + result.setDateScheduledReturn(borrow.get().getDateScheduledReturn());//返却予定日 + + var emp = employeeRepository.findById(borrow.get().getIdApplicant()); + result.setNmEmployee(emp.get().getNmEmployee());//申請者名、社員名 + + var book = book_CollectionRepository.findById(borrow.get().getIdBook()); + result.setIsBn(book.get().getIsBn());//ISBN + result.setNmBook(book.get().getNmBook());//書籍名 + result.setPubLisher(book.get().getPubLisher());//出版社 + result.setNoteText(book.get().getNoteText()); + + return result; + } + + public void setReturn(int id_request, int id_employee) { + var borrow = borrowRepository.findById(id_request); + var book = book_CollectionRepository.findById(borrow.get().getIdBook()); + book.get().setFlgLending('0');//「貸出フラグ」を【貸出可】 + borrow.get().setStatus('0');//貸出テーブルの「ステータス」を【返却済 + borrow.get().setDateReturn(new Date());//「返却日」を当日日付 + borrow.get().setIdUpdate(id_employee);//「更新者」を更新した人のID + borrow.get().setDateUpdate(new Date());//「更新日」を当日日付に更新する。 + + borrowRepository.save(borrow.get()); + book_CollectionRepository.save(book.get()); + } + + //貸出承認 + public void setReturnComplete(int id_request, int id_employee) { + var borrow = borrowRepository.findById(id_request); + var book = book_CollectionRepository.findById(borrow.get().getIdBook()); + + borrow.get().setStatus('2');//貸出テーブルの「ステータス」を【貸出中】 + borrow.get().setDateApproval(new Date());//「承認日」を当日日付 + borrow.get().setIdUpdate(id_employee);//「更新者」を更新した人のID + borrow.get().setDateUpdate(new Date());//「更新日」を当日日付に更新する。 + + borrowRepository.save(borrow.get()); + book_CollectionRepository.save(book.get()); + + } + + //却下 + //貸出テーブルの「ステータス」を【却下】、「更新者」を却下した人のID、「更新日」を当日日付に更新する。 + //また、蔵書テーブルの「貸出フラグ」を【貸出可】に更新する。 + public void setReturnRejected(int id_request, int id_employee) { + + var borrow = borrowRepository.findById(id_request); + var book = book_CollectionRepository.findById(borrow.get().getIdBook()); + + book.get().setFlgLending('0');//「貸出フラグ」を【貸出可】 + borrow.get().setStatus('9');//貸出テーブルの「ステータス」を【却下】 + borrow.get().setIdUpdate(id_employee);//「更新者」を却下した人のID + borrow.get().setDateUpdate(new Date());//「更新日」を当日日付に更新する。 + + borrowRepository.save(borrow.get()); + book_CollectionRepository.save(book.get()); + } + +} diff --git a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java b/team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java similarity index 81% rename from team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java rename to team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java index 65a96fe..b201c3d 100644 --- a/team1/src/main/java/com/example/demo/service/Impl/ApprovalBorrowBooksImpl.java +++ b/team1/src/main/java/com/example/demo/service/impl/ApprovalBorrowBooksImpl.java @@ -1,4 +1,4 @@ -package com.example.demo.service.Impl; +/*package com.example.demo.service.Impl; import java.util.List; @@ -23,9 +23,12 @@ public class ApprovalBorrowBooksImpl implements ApprovalBorrowBooks { /* 申請情報から全件取得 * @return 取得した情報すべて */ - public List selectAll() { - return ???Entity.create???List(???Repository.findAll()); - } + //public List selectAll() { + //return ???Entity.create???List(???Repository.findAll()); + //} -} \ No newline at end of file +//} +//package com; + + diff --git a/team1/src/main/java/com/example/demo/service/impl/Login.java b/team1/src/main/java/com/example/demo/service/impl/Login.java new file mode 100644 index 0000000..bd6c67b --- /dev/null +++ b/team1/src/main/java/com/example/demo/service/impl/Login.java @@ -0,0 +1,11 @@ +package com.example.demo.service.impl; + +import com.example.demo.form.LoginInfoForm; +import com.example.rhizome.app.domain.model.LoginUser; + +public interface Login { + LoginUser doLogin(LoginInfoForm loginInfo); + + boolean canLogin(LoginInfoForm loginInfo); + +} diff --git a/team1/src/main/resources/templates/application.html b/team1/src/main/resources/templates/application.html index 9e8aed2..f23d059 100644 --- a/team1/src/main/resources/templates/application.html +++ b/team1/src/main/resources/templates/application.html @@ -16,7 +16,7 @@ -
+ @@ -29,12 +29,17 @@ + + - + + - + + - + - +
貸出日
返却予定日
diff --git a/team1/src/main/resources/templates/applicationComplete.html b/team1/src/main/resources/templates/applicationComplete.html index 3c829ff..868a6fb 100644 --- a/team1/src/main/resources/templates/applicationComplete.html +++ b/team1/src/main/resources/templates/applicationComplete.html @@ -16,14 +16,15 @@ -

書籍申請完了しました

+

書籍貸出申請完了しました

- - 書籍一覧に戻る - - - メニューに戻る + \ No newline at end of file diff --git a/team1/src/main/resources/templates/applicationConfirm.html b/team1/src/main/resources/templates/applicationConfirm.html index 42196dd..2f90bf7 100644 --- a/team1/src/main/resources/templates/applicationConfirm.html +++ b/team1/src/main/resources/templates/applicationConfirm.html @@ -34,11 +34,11 @@
貸出日
返却予定日
@@ -48,8 +48,11 @@
- - 申請情報入力に戻る + + + \ No newline at end of file diff --git a/team1/src/main/resources/templates/approvalComplete.html b/team1/src/main/resources/templates/approvalComplete.html index a462f51..bc7189b 100644 --- a/team1/src/main/resources/templates/approvalComplete.html +++ b/team1/src/main/resources/templates/approvalComplete.html @@ -1,15 +1,40 @@ - - - - - - - - 書籍貸出承認確認 - - + + + + + + + + + 書籍貸出承認完了画面 + + + +

書籍貸出申請を承認しました。

+
+承認待ち一覧に戻る | メニューに戻る + \ No newline at end of file diff --git a/team1/src/main/resources/templates/approvalConfirm.html b/team1/src/main/resources/templates/approvalConfirm.html index 06c1604..966e313 100644 --- a/team1/src/main/resources/templates/approvalConfirm.html +++ b/team1/src/main/resources/templates/approvalConfirm.html @@ -18,10 +18,8 @@ -
+
@@ -135,7 +133,20 @@ - + + + + + + + + + + + +
+ 承認待ち一覧に戻る + \ No newline at end of file diff --git a/team1/src/main/resources/templates/approvalRejected.html b/team1/src/main/resources/templates/approvalRejected.html index a462f51..79a8dbf 100644 --- a/team1/src/main/resources/templates/approvalRejected.html +++ b/team1/src/main/resources/templates/approvalRejected.html @@ -1,15 +1,40 @@ - - - - - - - - 書籍貸出承認確認 - - + + + + + + + + + 書籍貸出却下画面 + + + +

書籍貸出申請を却下しました。

+
+承認待ち一覧に戻る | メニューに戻る + \ No newline at end of file diff --git a/team1/src/main/resources/templates/login.html b/team1/src/main/resources/templates/login.html new file mode 100644 index 0000000..2843a36 --- /dev/null +++ b/team1/src/main/resources/templates/login.html @@ -0,0 +1,65 @@ + + + + + + + + + + + + ログイン画面 + + + +

ログイン

+
+ +
+ +
+ + + + + + + + + + + + + + + +
メールアドレス + +
パスワード + +
+ + +
+
+ + + +