autonumber

actor 利用者
利用者 -> "PaymentView" : 管理画面を表示
"PaymentView" -> "PaymentsController" : index

利用者 ->> "PaymentView" : 内容入力フォームからフォーカスを外す
"PaymentView" -> "Api::DictionariesController" : index
"Api::DictionariesController" -> "Dictionary" : where

利用者 -> "PaymentView" : 登録ボタン押下
"PaymentView" -> "Api::PaymentsController" : create
"Api::PaymentsController" -> "Api::PaymentsController" : check_absent_param

alt 必須パラメーターがない
  autonumber stop
  "PaymentView" <-- "Api::PaymentsController"
  利用者 <-- "PaymentView"
end

create Payment
"Api::PaymentsController" -> "Payment" : new

loop カテゴリの数だけ繰り返す
  "Api::PaymentsController" -> "Category" : find_or_initialize_by
end

loop タグの数だけ繰り返す
  "Api::PaymentsController" -> "Tag" : find_or_initialize_by
end

"Api::PaymentsController" -> "Payment" : save

alt 登録に成功
  autonumber stop
  "PaymentView" <-- "Api::PaymentsController"

  autonumber resume
  "PaymentView" -> "Api::DictionariesController" : index
  note right: 辞書を検索する参照

  alt 辞書が登録されていない
    "PaymentView" -> "PaymentView" : ダイアログを表示

    利用者 -> "PaymentView" : 登録ボタンを押下
    "PaymentView" -> "Api::DictionariesController" : create
    note right: 辞書を登録する参照
  end

  "PaymentView" -> "PaymentsController" : index
else
  autonumber stop
  "PaymentView" <-- "Api::PaymentsController" : エラー表示
  利用者 <-- "PaymentView"
end
