File "ReferralMemberController.php"

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

<?php

namespace App\Http\Controllers\Admin;


use App\Http\Requests\Admin\ReferralMember\LoginRequest;
use App\Http\Requests\Admin\ReferralMember\UpdateRequest;
use App\Models\Country;
use App\Models\ReferralMember;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\File;
use Illuminate\Support\Facades\Hash;


use App\Http\Controllers\AdminBaseController;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View;

use Yajra\DataTables\Facades\DataTables;
use Illuminate\Support\Facades\Response;

class ReferralMemberController extends AdminBaseController
{

    public function __construct()
    {
        parent::__construct();
        $this->pageTitle = 'Referral Members';
        $this->settingOpen = 'active open';
        $this->referralMember = 'active';
        $this->countrieslist = Country::all();

        $this->middleware(function ($request, $next) {
            if (admin()->type != 'superadmin') {
                echo View::make('admin.errors.noaccess', $this->data);
                die();
            }
            return $next($request);
        });
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $this->referralDef = ReferralMember::select('id', 'referral_code', 'email', 'name', 'company_name', 'position', 'date_of_agreement', 'created_at', 'status')
            ->orderBy('referral_code', 'asc')->take(5)->get();
        $this->total = ReferralMember::count();
        return View::make('admin.referralmember.index', $this->data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function ajax_members()
    {
        $result = ReferralMember::select('id', 'referral_code', 'email', 'name', 'company_name', 'position', 'date_of_agreement', 'created_at', 'status')
            ->get();

        return DataTables::of($result)
            ->editColumn('status', function ($row) {
                $color = ['active' => 'success', 'inactive' => 'danger'];

                return "<span id='status{$row->id}' class='label label-{$color[$row->status]}' >" . trans("core." . $row->status) . "</span>";
            })
            ->editColumn('created_at', function ($row) {
                return date('d-M-Y', strtotime($row->created_at));
            })
            ->editColumn('date_of_agreement', function ($row) {
                return date('d-M-Y', strtotime($row->date_of_agreement));
            })
            ->addColumn('edit', function ($row) {
                if ($row->status == 'active') {
                    $r_status = 'Disable';
                    $color = 'blue-ebonyclay';
                    $icon = 'ban';
                } else {
                    $r_status = 'Enable';
                    $color = 'green';
                    $icon = 'check';
                }
                return '<a  class="btn purple btn-sm margin-bottom-5"  href="' . route('admin.referral_members.edit', $row->id) . '" >
                <i class="fa fa-edit"></i> ' . trans("core.btnViewEdit") . '
              </a>
              <a  style="width: 94px" href="javascript:;" onclick="del(' . $row->id . ',\'' . $row->referral_code . '\');return false;" class="btn red btn-sm margin-bottom-10">
                        <i class="fa fa-trash"></i> ' . trans("core.btnDelete") . '</a>
                <a  href="javascript:;" onclick="changeStatus(' . $row->id . ');return false;" class="btn ' . $color . ' btn-sm margin-bottom-10">
                         <i class="fa fa-' . $icon . '"></i> ' . $r_status . '</a>';
            })
            ->rawColumns(['status', 'edit'])
            ->make();
    }

    public function create()
    {
        $this->pageTitle = trans('pages.referrals.addTitle');
        return View::make('admin.referralmember.create', $this->data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(LoginRequest $request)
    {
        $input = request()->all();

        $date = new \DateTime(request()->get('date_of_agreement'));
        $date = $date->format('Y-m-d H:i:s');
        $ref = new ReferralMember();
        $ref->name = request()->get('name');
        $ref->referral_code = strtoupper(substr($ref->name, 0, 4)) . rand(111111, 999999);
        $ref->email = request()->get('email');

        $ref->company_name = request()->get('company_name');
        $ref->company_address = request()->get('company_address');
        $ref->position = request()->get('position');
        $ref->phone = request()->get('phone');
        $ref->country = request()->get('country');
        $ref->date_of_agreement = $date;
        $ref->password = Hash::make(request()->get('password'));
        $ref->status = request()->get('status');
        if (Input::hasFile('agreement')) {
            $path = public_path() . "/uploads/" . $this->folder . "/agreements/";
            File::makeDirectory($path, $mode = 0777, true, true);

            $agreement = $request->file('agreement');
            $extension = $agreement->getClientOriginalExtension();
            $filename = strtolower($ref->name) . "_" . strtolower($ref->referral_code) . '_' .
                request()->get('date_of_agreement') . "." . strtolower($extension);

            File::makeDirectory($path, $mode = 0777, true, true);

            $request->file('agreement')
                ->move($path, $filename);


            $ref->agreement = $filename;
        }
        $ref->save();
        Session::flash('toastrHeading', trans('messages.success'));
        Session::flash('toastrMessage', trans("messages.successAdd"));
        Session::flash('toastrType', 'success');
        return ["status" => "success", "message" => trans("messages.successAdd"),
            'action' => 'redirect', 'url' => route('admin.referral_members.index')];
    }

    /**
     * Display the specified resource.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $this->pageTitle = trans('pages.referrals.editTitle');

        $this->ref = ReferralMember::find($id);
        $date = new \DateTime($this->ref->date_of_agreement);
        $this->date = $date->format('d-m-Y');

        return View::make('admin.referralmember.edit', $this->data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request $request
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateRequest $request, $id)
    {
        $date = new \DateTime(request()->get('date_of_agreement'));
        $date = $date->format('Y-m-d H:i:s');
        $ref = ReferralMember::findOrFail($id);
        $ref->referral_code = request()->get('referral_code');
        $ref->email = request()->get('email');
        $ref->name = request()->get('name');
        $ref->company_name = request()->get('company_name');
        $ref->company_address = request()->get('company_address');
        $ref->position = request()->get('position');
        $ref->phone = request()->get('phone');
        $ref->country = request()->get('country');
        $ref->status = request()->get('status');
        $ref->date_of_agreement = $date;
        if (request()->get('password')) {
            $ref->password = Hash::make(request()->get('password'));
        }
        if (Input::hasFile('agreement')) {
            $path = public_path() . "/uploads/" . $this->folder . "/agreements/";
            File::makeDirectory($path, $mode = 0777, true, true);

            $agreement = $request->file('agreement');
            $extension = $agreement->getClientOriginalExtension();
            $filename = strtolower($ref->name) . "_" . strtolower($ref->referral_code) . '_' .
                request()->get('date_of_agreement') . "." . strtolower($extension);

            File::makeDirectory($path, $mode = 0777, true, true);

            $request->file('agreement')
                ->move($path, $filename);


            $ref->agreement = $filename;
        }
        $ref->save();

        return ["status" => "success", "message" => trans("messages.successUpdate"),
            'toastrHeading' => trans('messages.success'), 'toastrMessage' => trans("messages.successUpdate"),
            'toastrType' => 'success', 'action' => 'showToastr'];
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        if (Request::ajax()) {
            ReferralMember::destroy($id);
            $output['success'] = 'deleted';

            return Response::json($output, 200);
        }
    }

    public function change_status()
    {
        $id = request()->get('id');
        $ref = ReferralMember::findOrFail($id);
        if ($ref->status == "active") {
            $ref->status = 'inactive';
        } else {
            $ref->status = 'active';
        }
        $ref->save();
        return ["status" => "success",
            'toastrHeading' => trans('messages.success'), 'toastrMessage' => trans("messages.statusChanged"),
            'toastrType' => 'success', 'action' => 'showToastr'];
    }
}