<?php

namespace App\Http\Controllers\Frontend;

use App\Components\Functions;
use App\Models\Amenity;
use App\Models\Notification;
use App\Models\PostAmentitie;
use App\Models\PostNews;
use App\Models\RoomNeedMore;
use Carbon\Carbon;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

class NewsController extends Controller
{
    //
    public function index(Request $request)
    {
        $amenities = Amenity::where('user_id', 0)->get();
        return view('frontend3.news.index', compact('amenities'));
    }

    public function create(Request $request)
    {

        //$data['images'] = $request->images;
        $data=$request->all();
        $data['status'] = PostNews::WAITTING_FOR_APPROVAL;
        $data['price'] = $request->price;
        $data['size'] = $request->size;
        $data['fee'] = PostNews::NOMAL_CONTENT;
        $data['address'] = $request->address;
        $data['owner_name'] = $request->owner_name;
        $data['owner_phone'] = $request->owner_phone;
        $amenities = json_decode($request->amenities, true);
        $date = date('Y/m/d',strtotime($request->date_available));
        //$date = $request->date_available;
        $data['date_available']= $date;

//        $images = json_decode($request->image, TRUE);
//        dd($images);
//        $imageArr = [];
//        if(is_array($images)){
//            foreach ($images as $image) {
//                $item = Functions::uploadImage($image);
//                $imageArr[] = $item;
//            }
//        }

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

        $data['images']= $image;

        //dd($image);

//
//        if (empty($data['lat']) || empty($data['lng'])) {
//            if (!empty($address)) {
//                $coor = Functions::geocode($address);
//                $data['lat'] = $coor['lat'];
//                $data['lng'] = $coor['lng'];
//            }
//        }

        //  $data2 = $data;
//        $data2['amenities'] = $amenities;
//        $data2['policies'] = $policies;

//        session()->put('data', $data2);
//        session()->put('images-dt', $imageArr);
//        cache()->put('images-dt-' . session()->getId(), $imageArr, 120);


        $validatedData = $this->validate($request, [
            'province' => 'required',
            'district' => 'required',
            'ward' => 'required',
            'address' => 'required',
            'date_available' => 'required',
            'price' => 'required|numeric|min:1',
            'size' => 'required|numeric|min:1',
            'description' => 'required|string|min:100',
        ], [
            'province.required' => 'Không được bỏ trống tỉnh / thành phố',
            'address.required' => 'Không được bỏ trống địa chỉ',
            'district.required' => 'Không được bỏ trống quận / huyện',
            'ward.required' => 'Không được bỏ trống phường xã',
            'date_available.required' => 'Không được bỏ trống ngày chuyển đến',
            'price.required' => 'Không được bỏ trống giá',
            'price.min' => 'Giá phải lớn hơn 0',
            'price.numeric' => 'Giá phải là số',
            'size.required' => 'Không được bỏ trống diện tích',
            'size.min' => 'Diện tích phải lớn hơn 0',
            'size.numeric' => 'Diện tích phải là số',
            'description.required' => 'Không được bỏ trống miêu tả',
            'description.min' => 'Mô tả phải nhiều hơn 100 ký tự',
            'description.string' => 'Mô tả phải là chuỗi ký tự',
        ]);

        if ($data['price'] <= 0) {
            return redirect()->back()->with('error', 'Giá phải lớn hơn 0');
        }

        if ($data['size'] <= 0) {
            return redirect()->back()->with('error', 'Diện tích phải lớn hơn 0');
        }

        //$data['images'] = json_encode($imageArr);

//        if (isset($imageArr[0])) {
//            $data['image'] = $imageArr[0];
//        }

//        if (count($imageArr) == 0) {
//            return redirect()->to(url('tim-ban'))->with('error', 'Bạn phải chọn ít nhất một ảnh');
//        }

//////////////////////////////////////////
//        if (!auth('backend')->check()) {
//            return redirect('/dang-tin')->with('error', 'Bạn phải đăng nhập trước');
//        }
//        $data['user_id'] = auth('backend')->user()->id;

//        if (isset($data['date_available'])) {
//            try {
//                $data['date_available'] = Carbon::createFromFormat('d/m/Y', $data['date_available'])->toDateString();
//            } catch (\Exception $exception) {
//                $data['date_available'] = null;
//            }
//            dd($data['date_available'] );
//        }

        try {
            \DB::beginTransaction();
            $item_post = PostNews::create($data)->id;

            //insert amentities
            foreach ($amenities as $amenity) {
                $post_amenity = [
                    'post_id' => $item_post,
                    'amenity_id' => $amenity,
                ];
                $post_amenity_list[] = $post_amenity;
                PostAmentitie::create($post_amenity);
            }

            \DB::commit();
        } catch (\Exception $exception) {
            \DB::rollBack();

            dd($exception->getMessage() . '|' . $exception->getLine());
        }
        return response([
            'status' => 1,
            'message' => 'Thành công'
        ]);
    }


    public function uploadImageCreate(Request $request)
    {
        $image = null;
        if ($request->file('image') && $request->file('image')->isValid()) {
            $image = Functions::uploadImage($request->file('image'));
        }

        if (!empty($image)) {

            if (session()->has('images')) {
                $imageArrSession = session()->get('images');
            } else {
                $imageArrSession = [];
            }
            $imageArrSession[] = $image;
            session()->put('images', $imageArrSession);

            if (cache()->has('images-dt-' . session()->getId())) {
                $imageArrCache = cache()->get('images-dt-' . session()->getId());

            } else {
                $imageArrCache = [];

            }
            $imageArrCache[] = $image;
            cache()->put('images-dt-' . session()->getId(), $imageArrCache, 120*60);
        }


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

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

        $post_news = RoomNeedMore::find($post_news_id);

        if (!$post_news) {
            return response([
                'status' => 0,
                'message' => ''
            ]);
        }

        $images = $post_news->images;
        if (!empty($images)) {
            $images = json_decode($images, true);

            if (($key = array_search($image, $images)) !== false) {
                unset($images[$key]);
            }

            $post_news->images = json_encode($images);
            $post_news->save();

        }

        return response([
            'status' => 1,
            'message' => 'Thành công',
            'html' => view('frontend3.news.images', compact('images'))->render()
        ]);
    }

}
