2015-09-08 15:25:54 +02:00
|
|
|
class TransactionsController < ApplicationController
|
2018-06-20 18:02:33 +02:00
|
|
|
skip_before_action :verify_authenticity_token, only: :create
|
2015-09-09 14:08:40 +02:00
|
|
|
|
|
|
|
before_action :authenticate_user!, except: :create
|
|
|
|
before_action :authenticate_user_or_client!, only: :create
|
2015-09-14 10:32:58 +02:00
|
|
|
|
2015-09-11 13:16:53 +02:00
|
|
|
respond_to :js, only: :create
|
2015-09-09 14:08:40 +02:00
|
|
|
|
2015-09-08 15:25:54 +02:00
|
|
|
def create
|
2015-09-11 16:34:21 +02:00
|
|
|
@transaction = Transaction.new(transaction_params)
|
|
|
|
@transaction.reverse if @transaction.amount < 0
|
|
|
|
|
2017-01-14 22:45:51 +01:00
|
|
|
unless can? :create, @transaction
|
|
|
|
@transaction = Request.new @transaction.info
|
|
|
|
authorize!(:create, @transaction)
|
|
|
|
end
|
|
|
|
|
|
|
|
if @transaction.save
|
|
|
|
respond_to do |format|
|
|
|
|
format.html { redirect_to root_path }
|
|
|
|
format.json { render json: @transaction, status: :created }
|
2017-01-09 15:46:43 +01:00
|
|
|
end
|
2015-09-10 21:46:05 +02:00
|
|
|
else
|
2017-01-14 22:45:51 +01:00
|
|
|
respond_to do |format|
|
|
|
|
format.html { redirect_to root_path }
|
|
|
|
format.json { render json: @transaction.errors.full_messages,
|
|
|
|
status: :unprocessable_entity }
|
2017-01-09 15:46:43 +01:00
|
|
|
end
|
2015-09-08 21:07:00 +02:00
|
|
|
end
|
2015-09-08 15:25:54 +02:00
|
|
|
end
|
|
|
|
|
2015-09-08 21:07:00 +02:00
|
|
|
private
|
|
|
|
|
2015-09-09 13:33:55 +02:00
|
|
|
def transaction_params
|
2015-09-09 11:56:13 +02:00
|
|
|
t = params.require(:transaction)
|
2015-09-14 13:16:01 +02:00
|
|
|
.permit(:debtor, :creditor, :message, :euros, :cents, :id_at_client)
|
2015-09-09 11:56:13 +02:00
|
|
|
|
2015-09-09 16:26:06 +02:00
|
|
|
{
|
2018-03-21 19:40:03 +01:00
|
|
|
debtor: t[:debtor] ? User.find_or_create_by(name: t[:debtor]) : User.zeus,
|
|
|
|
creditor: t[:creditor] ? User.find_or_create_by(name: t[:creditor]) : User.zeus,
|
2015-09-09 16:26:06 +02:00
|
|
|
issuer: current_client || current_user,
|
2015-09-14 10:32:58 +02:00
|
|
|
amount: (t[:euros].to_f * 100 + t[:cents].to_f).to_i,
|
2015-09-14 13:16:01 +02:00
|
|
|
message: t[:message],
|
|
|
|
}.merge(current_client ? { id_at_client: t[:id_at_client] } : {})
|
2015-09-08 21:07:00 +02:00
|
|
|
end
|
2015-09-08 15:25:54 +02:00
|
|
|
end
|