<?php

namespace App\Http\Controllers\Backend;

use App\Components\Functions;
use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Yajra\Datatables\Datatables;

class PartnerController extends Controller
{
    //
    public function index()
    {
        return view('admin.partner.index');
    }

    public function edit($id)
    {
        $partner = User::find($id);
        if (!$partner) {
            return redirect()->back()->with('error', 'Dữ liệu không hợp lệ');
        }
        return view('admin.partner.edit', compact('partner'));
    }

    public function update($id, Request $request)
    {
        $user = User::find($id);

        if (!$user) {
            return redirect()->back()->with('error', 'Dữ liệu không hợp lệ');
        }

        $data = $request->all();

        if ($request->file('image') && $request->file('image')->isValid()) {
            $data['image'] = Functions::uploadImage($request->file('image'));
        }

        $user->update($data);

        return redirect()->back()->with('success', 'Thành công');
    }

    public function getStaffByPartner($id)
    {
        $partner = User::find($id);
        if (!$partner) {
            return redirect()->back()->with('error', 'Dữ liệu không hợp lệ');
        }
        return view('admin.partner.sub_partner', compact('partner'));
    }

    public function destroy(Request $request)
    {
        $id = $request->input('id');
        $partner = User::find($id);
        if (!$partner) {
            return response([
                'status' => 0,
                'message' => 'Dữ liệu không hợp lệ'
            ]);
        }

        $refer = null;

        if(!empty($partner->partner_refer))
        {
            $refer = User::find($partner->partner_refer);
        }

        User::where('partner_refer', $partner->id)->delete();
        $partner->delete();

        if(!empty($refer))
        {
            $currentStaff = User::where('partner_refer', $refer->id)->count();
            $refer->partner_number_staff = $currentStaff;
            $refer->save();
        }

        return response([
            'status' => 1,
            'message' => 'Thành công'
        ]);
    }

    public function getItemByAttribute(Request $request)
    {
        $partnerRefer = $request->input('partner_refer');
        $partners = User::where('type', User::PARTNER)->where('partner_refer', $partnerRefer);

        return Datatables::of($partners)
            ->editColumn('name', function ($item) {
                return $item->name_text;

            })
            ->editColumn('created_at', function ($item) {
                return $item->created_at->format('d/m/Y H:i');
            })
            ->editColumn('partner_number_staff', function ($item) {
                return '<a href="' . url('admin/partner/staff', ['id' => $item->id]) . '">' . $item->partner_number_staff . '</a>';
            })
            ->editColumn('address', function ($item) {
                return $item->address_text;
            })
            ->addColumn('action', function ($item) {
                return
                    '<a href="' . url('admin/partner/edit', ['id' => $item->id]) . '" class="btn btn-sm green btn-outline "> Sửa</a>' .
                    '<a href="#" data-id="' . $item->id . '" class="btn btn-sm red btn-outline btn-delete"> Xóa</a><br>';
            })
            ->make(true);
    }
}
