Interface RentalReservationApplication

All Known Implementing Classes:
RentalReservationApplicationImpl

public interface RentalReservationApplication
レンタル予約アプリケーションインターフェース.
  • Method Details

    • authenticate

      UserAccount authenticate(String loginId, String password) throws BusinessFlowException
      ユーザをパスワードで認証する。
      Parameters:
      loginId - 認証するユーザのログインID
      password - 認証パスワード
      Returns:
      認証ユーザ。認証できなかった場合はnull
      Throws:
      BusinessFlowException - ユーザIDまたはパスワードに一致するユーザがいない
    • get

      <T> T get(Class<T> entityClass, int id)
      指定されたIDのエンティティを取得する。
      Type Parameters:
      T - エンティティクラス
      Parameters:
      entityClass - 取得するエンティティクラス
      id - ID
      Returns:
      エンティティ
    • findReservationByRentalItemAndStartDate

      List<Reservation> findReservationByRentalItemAndStartDate(Integer rentalItemId, LocalDate startDate) throws BusinessFlowException
      指定されたレンタル品と利用開始日に対する予約を取得する。
      Parameters:
      rentalItemId - 予約のレンタル品ID
      startDate - 予約の利用開始日
      Returns:
      予約リスト(該当なしは例外を送出)
      Throws:
      BusinessFlowException - 該当なし
    • findReservationByReserverId

      List<Reservation> findReservationByReserverId(int reserverId)
      指定されたユーザが予約者の予約を取得する。
      Parameters:
      reserverId - 予約者のユーザID
      Returns:
      該当のリスト。該当なしは空リスト
    • findReservationByRentalItemId

      List<Reservation> findReservationByRentalItemId(int rentalItemId)
      指定されたレンタル品に対する予約を取得する。
      Parameters:
      rentalItemId - レンタル品ID
      Returns:
      該当のリスト。該当なしは空リスト
    • findCanRentedItemAtTerm

      List<RentalItem> findCanRentedItemAtTerm(LocalDateTime from, LocalDateTime to)
      該当期間に予約可能なレンタル品を返す。
      Parameters:
      from - 利用開始日時
      to - 利用終了日時
      Returns:
      該当のリスト。該当なしは空リスト
    • canRentedItemAtTerm

      boolean canRentedItemAtTerm(int rentalItemId, LocalDateTime from, LocalDateTime to)
      レンタル品が該当期間に予約可能かを返す
      Parameters:
      rentalItemId - レンタル品ID
      from - 利用開始日時
      to - 利用終了日時
      Returns:
      可能な場合はtrue
    • getAllReservations

      List<Reservation> getAllReservations()
      予約の全件取得。
      Returns:
      予約の全件。該当なしは空リスト
    • getAllRentalItems

      List<RentalItem> getAllRentalItems()
      レンタル品の全件取得。
      Returns:
      レンタル品の全件。該当なしは空リスト
    • getAllUserAccounts

      List<UserAccount> getAllUserAccounts()
      ユーザの全件取得。
      Returns:
      ユーザの全件。該当なしは空リスト
    • addReservation

      Reservation addReservation(Reservation addReservation) throws BusinessFlowException
      レンタル品を予約する。

      Parameters:
      addReservation - 登録する予約(idはnull)
      Returns:
      登録された予約(idが設定されている)
      Throws:
      BusinessFlowException - 該当するレンタル品が存在しない場合、または期間が重複する予約が既に登録されている場合
    • addRentalItem

      RentalItem addRentalItem(RentalItem addRentalItem) throws BusinessFlowException
      レンタル品を登録する。

      Parameters:
      addRentalItem - 登録レンタル品(idはnull)
      Returns:
      登録されたレンタル品(idが設定されている)
      Throws:
      BusinessFlowException - 同一シリアル番号のレンタル品が既に登録されている場合
    • addUserAccount

      UserAccount addUserAccount(UserAccount addUserAccount) throws BusinessFlowException
      ユーザアカウントを登録する。

      Parameters:
      addUserAccount - 登録ユーザ(idはnull)
      Returns:
      登録されたユーザアカウント(idが設定されている)
      Throws:
      BusinessFlowException - 同一ログインIDのユーザが既に登録されている場合
    • updateReservation

      Reservation updateReservation(Reservation updateReservation)
      予約を更新する。
      Parameters:
      updateReservation - 更新する予約
      Returns:
      更新された予約。更新対象がない場合はnull
    • updateRentalItem

      RentalItem updateRentalItem(RentalItem updateRentalItem)
      レンタル品を更新する。
      Parameters:
      updateRentalItem - 更新するレンタル品
      Returns:
      更新されたレンタル品。更新対象がない場合はnull
    • updateUserAccount

      UserAccount updateUserAccount(UserAccount updateUserAccount)
      ユーザアカウントを更新する。

      Parameters:
      updateUserAccount - 更新ユーザ
      Returns:
      更新されたユーザアカウント。更新対象がない場合はnull
    • deleteReservation

      void deleteReservation(int reservationId) throws BusinessFlowException
      予約を削除する。
      Parameters:
      reservationId - 予約ID
      Throws:
      BusinessFlowException - 該当の予約が存在しない場合
    • deleteRentalItem

      void deleteRentalItem(int rentalItemId) throws BusinessFlowException
      レンタル品を削除する。 対象のレンタル品を参照する予約が存在する場合は削除は行わずエラーにする。
      Parameters:
      rentalItemId - レンタル品ID
      Throws:
      BusinessFlowException - 該当のレンタル品が存在しない場合。対象のレンタル品を参照する予約が存在する場合
    • deleteUserAccount

      void deleteUserAccount(int userAccountId) throws BusinessFlowException
      ユーザを削除する。 対象のユーザを参照する予約が存在する場合は削除は行わずエラーにする。
      Parameters:
      userAccountId - ユーザアカウントID
      Throws:
      BusinessFlowException - 該当のユーザアカウントが存在しない場合。対象のユーザを参照する予約が存在する場合
    • cancelReservation

      void cancelReservation(int reservationId) throws BusinessFlowException
      予約をキャンセルする。
      Parameters:
      reservationId - 予約ID
      Throws:
      BusinessFlowException - 該当の予約が存在しない場合。予約者以外が取消を行っている場合
    • getOwnUserProfile

      UserAccount getOwnUserProfile() throws BusinessFlowException
      自分のプロファイル情報を取得する。
      Throws:
      BusinessFlowException - 該当のユーザアカウントが存在しない場合
    • updateUserProfile

      UserAccount updateUserProfile(UserAccount updateUserAccount)
      自分のプロファイル情報を更新する。 自分以外の情報を更新しようとした場合は禁止操作として403を返す。
      Parameters:
      updateUserAccount - 更新情報
      Returns:
      更新されたユーザアカウント。更新対象がない場合はnull