<?php

namespace App\Http\Controllers;
use App\Course;
use App\Degree;
use App\UserMeta;
use App\User;
use App\Order;
use App\Wallet;
use App\CourseUserInformation;
use Auth;
use DB;
use Mail;
use Illuminate\Http\Request;
use Redirect;

class FrontController extends Controller
{
      public function __construct()
    {
        $this->middleware('auth');
    }

    
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //fetch all posts form the database
        // $hostels = Hostel::all();
        // //call view with $posts
        // return view('user.pages.index')->withHotels($hostels);
    }
    public function profile($id)
    {
        
        
        $user = User::find($id);
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );

        // print_r($user);
        $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
        $orders = Order::where( 'user_id' , Auth::user()->id )->orderBy("id", "desc")->get();
        // echo $usermeta->current_wallet_balance;
        // die;
        return view('user.pages.profile')->withUser($user)->withdegrees($degrees)->withCourses($courses)->withUsermeta($usermeta)->withOrders($orders)->withWallet($usermeta->current_wallet_balance);
    }
     
    
    public function meta_update(Request $request)
    {
        $user = User::find(Auth::user()->id);
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
        $first_name_billing = ($request->first_name_billing) ? $request->first_name_billing : '';
        $last_name_billing = ($request->last_name_billing) ? $request->last_name_billing : '';
        $email_billing = ($request->email_billing) ? $request->email_billing : '';
        $mobile_no_billing = ($request->mobile_no_billing) ? $request->mobile_no_billing : '';
        $country_billing = ($request->country_billing) ? $request->country_billing : '';
        $addreess_billing = ($request->addreess_billing) ? $request->addreess_billing : '';
        $city_billing = ($request->city_billing) ? $request->city_billing : '';
        $state_billing = ($request->state_billing) ? $request->state_billing : '';
        $postcode_billing = ($request->postcode_billing) ? $request->postcode_billing : '';

        $billing_array=array(
            "first_name_billing"=>$first_name_billing,
            "last_name_billing"=>$last_name_billing,
            "email_billing"=>$email_billing,
            "mobile_no_billing"=>$mobile_no_billing,
            "country_billing"=>$country_billing,
            "addreess_billing"=>$addreess_billing,
            "city_billing"=>$city_billing,
            "state_billing"=>$state_billing,
            "postcode_billing"=>$postcode_billing
        );
        $billing_data = json_encode($billing_array);

        $first_name_shipping = ($request->first_name_shipping) ? $request->first_name_shipping : '';
        $last_name_shipping = ($request->last_name_shipping) ? $request->last_name_shipping : '';
        $email_shipping = ($request->email_shipping) ? $request->email_shipping : '';
        $mobile_no_shipping = ($request->mobile_no_shipping) ? $request->mobile_no_shipping : '';
        $country_shipping = ($request->country_shipping) ? $request->country_shipping : '';
        $addreess_shipping = ($request->addreess_shipping) ? $request->addreess_shipping : '';
        $city_shipping = ($request->city_shipping) ? $request->city_shipping : '';
        $state_shipping = ($request->state_shipping) ? $request->state_shipping : '';
        $postcode_shipping = ($request->postcode_shipping) ? $request->postcode_shipping : '';

        $shipping_array=array(
            "first_name_shipping"=>$first_name_shipping,
            "last_name_shipping"=>$last_name_shipping,
            "email_shipping"=>$email_shipping,
            "mobile_no_shipping"=>$mobile_no_shipping,
            "country_shipping"=>$country_shipping,
            "addreess_shipping"=>$addreess_shipping,
            "city_shipping"=>$city_shipping,
            "state_shipping"=>$state_shipping,
            "postcode_shipping"=>$postcode_shipping
        );

        $shipping_data = json_encode($shipping_array);

        $usermeta_1Count = 0;

        $usermeta_1 = UserMeta::where( 'user_id' , Auth::user()->id )->get();
        $usermeta_1Count = $usermeta_1->count();
        if( $usermeta_1Count <= 0 ){

            $usermeta = new UserMeta();
            $usermeta->user_id = Auth::user()->id;
            $usermeta->mobile =($request->mobile) ? $request->mobile : '';
            $usermeta->shipping_address = $shipping_data;
            $usermeta->billing_address = $billing_data;
            $usermeta->save();
            session()->flash('success', 'Shipping and Billing Details Updated Successfully.');
        }
        else{
           $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
           echo "mobile".$mobile = $usermeta->mobile;
          
            $usermeta->shipping_address = $shipping_data;
            $usermeta->billing_address = $billing_data;
            //$usermeta->mobile = $mobile;
            $usermeta->save();
            session()->flash('success', 'Shipping and Billing Details Updated Successfully.');
           // echo url('/profile/'.Auth::user()->id.'/');
           
           
        }
        $url = url('/profile/'.Auth::user()->id);
        return Redirect::to($url); 
        // $usermeta = UserMeta::where( 'user_id' , Auth::user()->id )->first();
        // return view('user.pages.profile')->withUser($user)->withdegrees($degrees)->withCourses($courses)->withUsermeta($usermeta);

    }
        //Get video for product

  

    public function profile_update(Request $request)
    {
        $user = User::find(Auth::user()->id);
        $courses = Course::all()->where( 'status' , '1' );
        $degrees = Degree::all()->where( 'status' , '1' );
        $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
        $first_name_billing = ($request->first_name_billing) ? $request->first_name_billing : '';
        $last_name_billing = ($request->last_name_billing) ? $request->last_name_billing : '';
        $email_billing = ($request->email_billing) ? $request->email_billing : '';
        $mobile_no_billing = ($request->mobile_no_billing) ? $request->mobile_no_billing : '';
        $country_billing = ($request->country_billing) ? $request->country_billing : '';
        $addreess_billing = ($request->addreess_billing) ? $request->addreess_billing : '';
        $city_billing = ($request->city_billing) ? $request->city_billing : '';
        $state_billing = ($request->state_billing) ? $request->state_billing : '';
        $postcode_billing = ($request->postcode_billing) ? $request->postcode_billing : '';

        $billing_array=array(
            "first_name_billing"=>$first_name_billing,
            "last_name_billing"=>$last_name_billing,
            "email_billing"=>$email_billing,
            "mobile_no_billing"=>$mobile_no_billing,
            "country_billing"=>$country_billing,
            "addreess_billing"=>$addreess_billing,
            "city_billing"=>$city_billing,
            "state_billing"=>$state_billing,
            "postcode_billing"=>$postcode_billing
        );
        $billing_data = json_encode($billing_array);

        $first_name_shipping = ($request->first_name_shipping) ? $request->first_name_shipping : '';
        $last_name_shipping = ($request->last_name_shipping) ? $request->last_name_shipping : '';
        $email_shipping = ($request->email_shipping) ? $request->email_shipping : '';
        $mobile_no_shipping = ($request->mobile_no_shipping) ? $request->mobile_no_shipping : '';
        $country_shipping = ($request->country_shipping) ? $request->country_shipping : '';
        $addreess_shipping = ($request->addreess_shipping) ? $request->addreess_shipping : '';
        $city_shipping = ($request->city_shipping) ? $request->city_shipping : '';
        $state_shipping = ($request->state_shipping) ? $request->state_shipping : '';
        $postcode_shipping = ($request->postcode_shipping) ? $request->postcode_shipping : '';

        $shipping_array=array(
            "first_name_shipping"=>$first_name_shipping,
            "last_name_shipping"=>$last_name_shipping,
            "email_shipping"=>$email_shipping,
            "mobile_no_shipping"=>$mobile_no_shipping,
            "country_shipping"=>$country_shipping,
            "addreess_shipping"=>$addreess_shipping,
            "city_shipping"=>$city_shipping,
            "state_shipping"=>$state_shipping,
            "postcode_shipping"=>$postcode_shipping
        );

        $shipping_data = json_encode($shipping_array);

        $usermeta_1Count = 0;

        $usermeta_1 = UserMeta::where( 'user_id' , Auth::user()->id )->get();
        $usermeta_1Count = $usermeta_1->count();
        if( $usermeta_1Count <= 0 ){

            $usermeta = new UserMeta();
            $usermeta->user_id = Auth::user()->id;
            $usermeta->shipping_address = $shipping_data;
            $usermeta->billing_address = $billing_data;
            $usermeta->mobile =($request->mobile) ? $request->mobile : '';
            $usermeta->save();

            $user = User::find(Auth::user()->id);
            if($request->name != '')
            {
                $user->name =  $request->name;
            }
            if($request->email != '')
            {
                $user->email =  $request->email;
            }
            $user->save();
            session()->flash('success', 'Profile Updated Successfully.');
            //redirect(url('/profile/'.Auth::user()->id));
        }
        else{
            $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
            if($request->mobile != '' && ($request->mobile != $usermeta->mobile ))
            {
                $usermeta = UserMeta::all()->where( 'user_id' , Auth::user()->id )->first();
                $usermeta->mobile =($request->mobile) ? $request->mobile : '';
                $usermeta->save();

            }

            $user = User::find(Auth::user()->id);
            if($request->name != '')
            {
                $user->name =  $request->name;
            }
            if($request->email != '')
            {
                $user->email =  $request->email;
            }
            $user->save();
            session()->flash('success', 'Profile Updated Successfully.');
            //redirect(url('/profile/'.Auth::user()->id));
        }
       $url = url('/profile/'.Auth::user()->id);
       return Redirect::to($url); 

    }
}