<?php

namespace App\Http\Controllers;

use App\Homestay;
use App\ListBook;
use App\RequestHomestay;
use App\Room;
use Illuminate\Http\Request;
use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\RegistersUsers;
use App\Owner;
use Illuminate\Support\Facades\DB;
use App\RequestFasilitas;

class AdminController extends Controller
{

    public function __construct(){
        $this->middleware('auth');
        $this->middleware('dinaspariwisata');
    }

    public function index()
    {
        return view('adminlte::home');
    }

    //Mengakses Daftar Pemesanan
    public function listPesanan(){

        $data = DB::table('homestay')
                ->join('daftar_book','homestay.id','=','daftar_book.homestay')
                ->select('daftar_book.*','homestay.nama_homestay','homestay.owner')
                ->get();

        return view('adminlte::layouts.admin.dataPemesanan')->with('data',$data);
    }

    //Mengakses Daftar Owner
    public function listOwner(){

        $count = User::all()->where('role',"Owner")->count();
        $data = User::all()->where('role',"Owner");
        //dd($data);

        return view('adminlte::layouts.admin.listOwner')->with('data',$data)->with('count',$count);
    }

    //Menambah owner
    public function create()
    {
        return view('adminlte::layouts.admin.addOwner');
    }

    //Meyimpan Data Owner
    public function store(Request $request)
    {

        $this->validate($request,[
            'name' => 'required|min:5|max:35',
            'username' => 'required|min:5|max:35',
            'email' => 'required|email|unique:users',
            'password' => 'required|min:6|max:20',
            'password_confirmation' => 'required|min:3|max:20|same:password',
        ],[
            'name.required' => ' Nama Harus di isi',
            'name.min' => ' Nama minimal 5 characters.',
            'name.max' => ' Nama maksimal 35 characters.',
            'username.required' => ' Username Harus di isi',
            'username.min' => ' Usename minimal 5 characters.',
            'username.max' => ' Username maksimal 35 characters.',
            'password.required' => 'Password Harus di isi',
            'password_confirmation.required' => 'Password Confirmasi Harus di isi',
        ]);

        $data = $request->all();
        $user = new User();
        $user->name = $data['name'];
        $user->username = $data['username'];
        $user->email = $data['email'];
        $user->password = bcrypt($data['password']);
        $user->role = 'Owner';
        $user->save();

        $dataPemilik = DB::table('users')
                       ->select('users.id')
                       ->where('username','=',$data['username'])
                       ->get();

        //dd($dataPemilik->id);

        $owner = new Owner();
        $owner->nama = $data['name'];
        $owner->id_akun = $dataPemilik[0]->id;
        $owner->alamat = '--';
        $owner->pekerjaan = '--';
        $owner->no_telepon = '--';
        $owner->no_rekening = '--';
        $owner->foto = 'gravatar.png';


        $owner->save();
        return redirect(url('admin/create'))->with('info', 'User berhasil ditambah ');
    }


    //Menampilkan Daftar RequestHomestay
    public function RequestHomestay(){

        $data = DB::table('pemilikhomestay')
            ->join('pengajuan_homestay','pemilikhomestay.id','=','pengajuan_homestay.id_pemilik_homestay')
            ->select('pemilikhomestay.nama','pengajuan_homestay.*')
            ->get();

        $count = $data->count();

        return view('adminlte::layouts.admin.listPengajuan')->with('data',$data)
                                                           ->with('count',$count);
    }

    //Melakuan Aksi Untuk memproses Permintaan Admin
    public function UpdateRequestFasilitass($id){
        //$data = DB::table('requestfasilitas')->where('id', $id)->first();
        $RF = RequestFasilitas::find($id);
        $RF->status = 2;

        $RF->update();

        return redirect('requestFasilitas');
    }

    public function UpdateRequestFasilitas($id){
        $RF = RequestFasilitas::find($id);
        $RF->status = 1;

        $RF->update();

        return redirect('requestFasilitas');
    }

    //Mengakses Daftar Request Fasilitas
    public function RequestFasilitas(){

        $data = DB::table('pemilikhomestay')
            ->join('requestfasilitas','pemilikhomestay.id','=','requestfasilitas.id_pemilik_homestay')
            ->select('pemilikhomestay.nama','requestfasilitas.*')
            ->get();

        $count = $data->count();

        return view('adminlte::layouts.admin.listRequestFasilitas')->with('data',$data)->with('count',$count);
    }

    //Penyetujuan Pengajuan Homestay
    public function AccPengajuanHomestay($id){
        $RH = RequestHomestay::find($id);
        $RH->status = 1;

        $data = DB::table('pengajuan_homestay')
                ->join('pemilikhomestay','pemilikhomestay.id','=','pengajuan_homestay.id_pemilik_homestay')
                ->select('pemilikhomestay.nama','pemilikhomestay.alamat')
                ->where('pemilikhomestay.id','=',$RH->id_pemilik_homestay)
                ->get();
        //dd($data);
        $hs = new Homestay();
        $hs->id_pemilik = $RH->id_pemilik_homestay;
        $hs->nama_homestay = $RH->nama_homestay;
        $hs->owner = $data[0]->nama ;
        $hs->alamat = $data[0]->alamat;
        $hs->jumlah_kamar = $RH->jumlah_kamar;
        $hs->harga = 150000;
        $hs->status='----';

        $hs->save();

        $idHts = DB::table('homestay')
                ->select('homestay.*')
                ->where('homestay.owner','=',$data[0]->nama)
                ->get();

        for ($i = 1;$i<=$RH->jumlah_kamar;$i++){
            $km = new Room();
            $km->id_homestay = $idHts[0]->id;
            $km->nomor_kamar = $i;
            $km->jumlah_bed = 2;
            $km->save();
        }
        $RH->update();
        return redirect('requestHomestay');
    }

}