File "ExpenseFrontsController.php"

Full Path: /home/isoftco/public_html/hrm/app/Http/Controllers/Front/ExpenseFrontsController.php
File size: 2.58 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers\Front;

use App\Classes\Files;
use App\Classes\Reply;
use App\Http\Controllers\FrontBaseController;
use App\Http\Requests\Front\Expense\ExpenseStore;

use App\Models\Expense;
use Carbon\Carbon;

use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\View;
use Yajra\DataTables\Facades\DataTables;

class ExpenseFrontsController extends FrontBaseController
{

    public function __construct()
    {

        parent::__construct();
        $this->pageTitle = Lang::get('core.jobTitle');
        $this->accountActive = 'active';
    }

    public function index()
    {
        $this->expenses = Expense::where('expenses.employee_id', employee()->id)->get();

        return View::make('front.expense.index', $this->data);
    }

    // Datatable ajax request
    public function ajax_expenses()
    {
        $result = Expense::select('expenses.id', 'item_name', 'purchase_from', 'purchase_date', 'bill', 'price', 'expenses.status')
            ->where('expenses.employee_id', employee()->id)
            ->orderBy('expenses.id', 'desc');

        return DataTables::of($result)->editColumn('purchase_date', function ($row) {
            return date('d-M-Y', strtotime($row->purchase_date));
        })->editColumn('bill', function ($row) {
            if(!is_null($row->bill)){
               return  '<a  href="'.$row->bill_url.'"
                                               target="_blank" class="btn btn-sm purple">File Uploaded</a>' ;
            }
            return '';

        })->editColumn('status', function ($row) {
            $color = ['pending' => 'warning', 'approved' => 'success', 'rejected' => 'danger'];

            return "<span class='label label-{$color[$row->status]}'>{$row->status}</span>";
        })
            ->rawColumns(['status','bill'])
            ->make();
    }


    public function create()
    {
        return View::make('front.expense.create', $this->data);
    }

    /***
     * @param ExpenseStore $request
     * @return array
     * @throws \Exception
     */
    public function store(ExpenseStore $request)
    {

        $request->purchase_date = Carbon::createFromFormat('d-m-Y', $request->purchase_date)->format('Y-m-d');
        $expense = Expense::create($request->toArray());

        if ($request->hasFile('bill')) {
            $file = new Files();
            $filename = $file->upload($request->file('bill'), 'expense/bills', null, null, false);
            $expense->bill = $filename;
            $expense->save();
        }

        return Reply::redirect(route('front.expenses.index'), "messages.expenseAddMessage");


    }


}