class Monban::UseCase::Account::Change::LoginId

Public Instance Methods

change(params) click to toggle source
# File lib/monban/use_case/account/change/login_id.rb, line 24
def change(params)
  Getto::Params.new.validate(params) do |v|
    v.hash(
      account_id: v.integer{|val| param_error!(account_id: val) },
      login_id:   v.string {|val| param_error!(login_id: val) },
    )
  end or param_error!(params: params)

  repository.transaction do
    unless repository.account_exists?(account_id: params[:account_id])
      error.not_found! "account_id: #{params[:account_id]}"
    end

    login_id_account = repository.login_id_account(login_id: params[:login_id])
    if login_id_account && login_id_account != params[:account_id]
      error.conflict! "login_id: #{params[:login_id]}"
    end

    unless login_id_account
      repository.update_login_id(
        account_id: params[:account_id],
        login_id:   params[:login_id],
        now:        time.now,
      )
    end

    repository.login_id(account_id: params[:account_id])
  end
end