Exemplo n.º 1
0
 /**
  * Todo: Do validations
  * POST /api/transactions
  * @param Request $request
  * @return Response
  */
 public function store(Request $request)
 {
     $transaction = new Transaction($request->only(['date', 'description', 'merchant', 'total', 'type', 'reconciled', 'minutes']));
     //Make sure total is negative for expense, negative for transfers from, and positive for income
     if ($transaction->type === 'expense' && $transaction->total > 0) {
         $transaction->total *= -1;
     } else {
         if ($transaction->type === 'income' && $transaction->total < 0) {
             $transaction->total *= -1;
         } else {
             if ($transaction->type === 'transfer' && $request->get('direction') === Transaction::DIRECTION_FROM) {
                 $transaction->total *= -1;
             }
         }
     }
     $transaction->account()->associate(Account::find($request->get('account_id')));
     $transaction->user()->associate(Auth::user());
     $transaction->save();
     if ($transaction->type !== 'transfer') {
         $this->budgetTransactionRepository->attachBudgetsWithDefaultAllocation($transaction, $request->get('budget_ids'));
     }
     //Fire event
     event(new TransactionWasCreated($transaction));
     $transaction = $this->transform($this->createItem($transaction, new TransactionTransformer()))['data'];
     return response($transaction, Response::HTTP_CREATED);
 }