App\Http\Controllers\ExpenseController::bulk PHP Method

bulk() public method

public bulk ( )
    public function bulk()
    {
        $action = Input::get('action');
        $ids = Input::get('public_id') ? Input::get('public_id') : Input::get('ids');
        switch ($action) {
            case 'invoice':
            case 'add_to_invoice':
                $expenses = Expense::scope($ids)->with('client')->get();
                $clientPublicId = null;
                $currencyId = null;
                // Validate that either all expenses do not have a client or if there is a client, it is the same client
                foreach ($expenses as $expense) {
                    if ($expense->client) {
                        if (!$clientPublicId) {
                            $clientPublicId = $expense->client->public_id;
                        } elseif ($clientPublicId != $expense->client->public_id) {
                            Session::flash('error', trans('texts.expense_error_multiple_clients'));
                            return Redirect::to('expenses');
                        }
                    }
                    if (!$currencyId) {
                        $currencyId = $expense->invoice_currency_id;
                    } elseif ($currencyId != $expense->invoice_currency_id && $expense->invoice_currency_id) {
                        Session::flash('error', trans('texts.expense_error_multiple_currencies'));
                        return Redirect::to('expenses');
                    }
                    if ($expense->invoice_id) {
                        Session::flash('error', trans('texts.expense_error_invoiced'));
                        return Redirect::to('expenses');
                    }
                }
                if ($action == 'invoice') {
                    return Redirect::to("invoices/create/{$clientPublicId}")->with('expenseCurrencyId', $currencyId)->with('expenses', $ids);
                } else {
                    $invoiceId = Input::get('invoice_id');
                    return Redirect::to("invoices/{$invoiceId}/edit")->with('expenseCurrencyId', $currencyId)->with('expenses', $ids);
                }
                break;
            default:
                $count = $this->expenseService->bulk($ids, $action);
        }
        if ($count > 0) {
            $message = Utils::pluralize($action . 'd_expense', $count);
            Session::flash('message', $message);
        }
        return $this->returnBulk($this->entityType, $action, $ids);
    }