<?php

namespace App\Http\Controllers\Backend;

use App\Components\Functions;
use App\Models\HostelPostCrawl;
use App\Models\HostelPostCrawlMedia;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Str;

class HostelPostCrawlController extends AdminController
{
    //
    public function index()
    {
        return view('admin.hostel_post_crawl.index');
    }

    public function create()
    {
        return response([
            'status' => 1,
            'data' => view('admin.hostel_post_crawl.create')->render()
        ]);
    }

    public function edit(Request $request)
    {
        $id = $request->input('id');
        $item = HostelPostCrawl::find($id);

        return response([
            'status' => 1,
            'data' => view('admin.hostel_post_crawl.edit', compact('item'))->render()
        ]);
    }

    public function deleteImage( Request $request ) {
        $id = $request->input( 'id' );

        $item = HostelPostCrawlMedia::query()
            ->where( 'id', $id )
            ->first();

        if ( $item ) {
            $hostelId = $item->hostel_post_crawl_id;
            HostelPostCrawlMedia::query()->where( 'id', $id )->delete();
            $images = HostelPostCrawlMedia::query()->where( 'hostel_post_crawl_id', $hostelId )->get();

            return response( [
                'status' => 1,
                'data'   => view( 'admin2.hostel_post_crawl.edit_images', compact( 'images', 'hostelId' ) )->render()
            ] );
        }
    }


    public function edit2(Request $request)
    {
        $id = $request->input('id');
        $hostel = HostelPostCrawl::find($id);
        $provinces = Functions::getProvinces();

        return response([
            'status' => 1,
            'data' => view('admin.hostel_post_crawl.edit_2', compact('hostel', 'provinces'))->render()
        ]);
    }

    public function update(Request $request)
    {
        $id = $request->input('id');
        $lead = HostelPostCrawl::find($id);
        $data = $request->all();
        $lead->update($data);

        return response([
            'status' => 1,
            'message' => 'Success'
        ]);
    }

    public function store(Request $request)
    {
        $data = $request->all();
        $data['user_id'] = auth('backend')->user()->id;
        $data['last_update_status_at'] = Carbon::now()->toDateTimeString();
        Lead::create($data);

        return response([
            'status' => 1,
            'message' => 'Success'
        ]);
    }

    public function updateAttribute(Request $request)
    {
        $id     = $request->input( 'pk' );
        $value  = $request->input( 'value' );
        $hostel = HostelPostCrawl::find( $id );
        $name   = $request->input( 'name' );

        $hostel->$name = $value;
        $hostel->save();

        return 1;
    }

    public function updateIsConfirm(Request $request)
    {
        $id = $request->input('id');
        $item = HostelPostCrawl::find($id);
        if ($item->is_confirm == true) {
            $item->is_confirm = false;
        } else {
            $item->is_confirm = true;
        }

        $item->save();

        return response([
            'status' => 1,
        ]);
    }

    public function getFrom()
    {
        return response([
            [
                'value' => HostelPostCrawl::FROM_FACEBOOK,
                'text'=> 'Facebook'
            ],
            [
                'value' => HostelPostCrawl::FROM_PHONGTRO_123,
                'text'=> 'Phongtro 123'
            ],
            [
                'value' => HostelPostCrawl::FROM_OHANA,
                'text'=> 'Ohana'
            ],
            [
                'value' => HostelPostCrawl::FROM_USER_ITRO_POST,                'text'=> 'User'
            ]
        ]);
    }

    public function getDataByAttribute()
    {
        $items = HostelPostCrawl::query()
            //->has('medias')
            ->whereNotNull('content')
            ->with([
                'province',
                'district',
                'ward'
            ])
            ->when(!empty(\request()->input('province_id')), function ($q) {
                $q->where('province_id', \request()->input('province_id'));
            })
            ->when(!empty(\request()->input('district_id')), function ($q) {
                $q->where('district_id', \request()->input('district_id'));
            })
            ->when(!empty(\request()->input('ward_id')), function ($q) {
                $q->where('ward_id', \request()->input('ward_id'));
            })
            ->when(!\request()->has('order'), function ($q) {
                $q->orderBy('id', 'desc');
            });

        return datatables()->of($items)
            ->editColumn('title', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="textarea" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="title" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-text editable-click editable-empty">
                                      ' . $item->title . '
                                    </a></div>';
            })
            ->editColumn('price', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="text" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="price" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-text editable-click editable-empty">
                                      ' . $item->price . '
                                    </a></div>';
            })
            ->editColumn('content', function ($item) {
                return '<div style="width: 600px"> <a href="javascript:;" data-type="textarea" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="content" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                      
                                       class="editable editable-text editable-click editable-empty">
                                      ' . nl2br($item->content) . '
                                    </a></div>';
            })
            ->editColumn('address', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="textarea" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="address" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-text editable-click editable-empty">
                                      ' . $item->address . '
                                    </a></div>';
            })
            ->editColumn('user_post', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="text" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="user_post" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-text editable-click editable-empty">
                                      ' . $item->user_post . '
                                    </a></div>';
            })
            ->editColumn('user_post_phone', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="text" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="user_post_phone" data-placeholder="Bắt buộc"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-text editable-click editable-empty">
                                      ' . $item->user_post_phone . '
                                    </a></div>';
            })
            ->editColumn('type', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="select" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="type" data-placeholder="Bắt buộc" data-source="/admin2/hostel/type"
                                       data-value="'.$item->type.'"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-select editable-click editable-empty">
                                      ' . optional($item->hostelType)->name . '
                                    </a></div>';
            })
            ->editColumn('from', function ($item) {
                return '<div style="width: 100px"> <a href="javascript:;" data-type="select" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="from" data-placeholder="Bắt buộc" data-source="/admin/hostel-post-crawl/from"
                                       data-value="'.$item->from.'"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-select editable-click editable-empty">
                                      ' . $item->from_text . '
                                    </a></div>';
            })
            ->editColumn('province_id', function ($item) {
                return '<div style="width: 100px"> <a href="#" data-type="select2" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="province_id" data-placeholder="Bắt buộc"
                                       data-source="/admin2/location/province"
                                       data-value="'.$item->province_id.'"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-select2 editable-click editable-empty">
                                      ' . optional($item->province)->name . '
                                    </a></div>';
            })

            ->editColumn('district_id', function ($item) {
                return '<div style="width: 100px"> <a href="#" data-type="select2" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="district_id" data-placeholder="Bắt buộc"
                                       data-source="/admin2/location/district"
                                       data-value="'.$item->district_id.'"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-select2 editable-click editable-empty">
                                      ' . optional($item->district)->name . '
                                    </a></div>';
            })
            ->editColumn('ward_id', function ($item) {
                return '<div style="width: 100px"> <a href="#" data-type="select2" data-pk="' . $item->id . '" data-placement="left" data-emptytext="Chưa xác định"
                                       data-name="ward_id" data-placeholder="Bắt buộc"
                                       data-source="/admin2/location/ward"
                                       data-value="'.$item->ward_id.'"
                                       data-original-title="Nhập giá trị"
                                       class="editable editable-select2 editable-click editable-empty">
                                      ' . optional($item->ward)->name . '
                                    </a></div>';
            })
            ->editColumn('user_post_image', function ($item) {
                return '<img  src="' . $item->user_post_image . '" style="max-width: 100px"/>';
            })
            ->editColumn('source_link', function ($item) {
                return '<a href="' . $item->source_link . '" target="_blank">' . $item->source_link . '</a>';
            })
            ->editColumn('is_confirm', function ($item) {
                $isCheck = '';
                if ($item->is_confirm) {
                    $isCheck = 'checked';
                }
                return '<input type="checkbox" data-id="' . $item->id . '" ' . $isCheck . ' class="make-switch btn-is-confirm" data-on-text="Có" data-off-text="Không" >';
            })
            ->addColumn('action', function ($item) {
                $action = null;
                $action .= '<a href="#edit-hostel-post-crawl" data-id="' . $item->id . '" data-toggle="modal" class="btn btn-sm btn-default btn-edit"><i
                        class="fa fa-pencil"></i> Sửa</a>';

                $action .= '<a href="#" data-id="' . $item->id . '" class="btn btn-sm btn-default btn-delete"><i
                    class="fa fa-trash"></i>Xóa</a>';

                return $action;
            })
            ->rawColumns([
                'user_post_image',
                'is_confirm',
                'title',
                'content',
                'price',
                'address',
                'user_post',
                'user_post_phone',
                'from',
                'province_id',
                'district_id',
                'ward_id'
            ])
            ->make(true);
    }

    public function delete(Request $request)
    {
        $id = $request->input('id');
        $lead = HostelPostCrawl::find($id);
        $lead->delete();

        return response([
            'status' => 1,
            'message' => 'Success'
        ]);
    }
}
