<?php

namespace App\Http\Controllers\Api\v1;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use App\User;
use App\Organization;
use App\Manager;
use App\Feedback;

/**
 * SettingController Class Doc Comment
 *
 * @category Class
 * @package  Api
 * @author   Ketan Patel - ketan.patel@brainvire.com
 *
 */
class SettingController extends Controller
{

    public function __construct()
    {
        //$this->middleware('oauth', ['except' => ['index']]);
        //$this->middleware('auth:api', ['except' => ['index']]);

    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function changeProfile(Request $request)
    {
        $usrId = $request->user_id;
        $this->validate($request, [
            'user_id' => 'required',
            // 'email' => 'required|unique:feedback,email|unique:users,email,' . $usrId,
            'email' => 'required|email',
            'organization_pic' => 'image|mimes:jpeg,jpg,png|max:2000',
            'name'=>'required',
        ]);

        // //customer
        // $customer = Feedback::where('email',$request->email)->count();

        // if($customer > 0)
        // {
        //     return response()->json(['status' => 'fail', 'message' => EMAIL_EXIST]);
        // }

        $user = User::where('id', $usrId)->first();
        if (!$user) {
            return response()->json(['status' => 'fail', 'message' => 'User not exist anymore.']);
        }

        $chkUser = User::select('id')->where('email', $request->email)->where('role', $user->role)->where('id', '!=', $usrId)->first();
        if ($chkUser) {
            return response()->json(['status' => 'fail', 'message' => EMAIL_EXIST]);
        }
        $orgImage = $request->files->get('organization_pic');
        if ($orgImage) {
            $manager = Manager::where('user_id', $usrId)->first();
            $organization = Organization::find($manager->organization_id);
            $orgFileName = time() . '.' . $orgImage->getClientOriginalExtension();
            $organization->organization_pic = $orgFileName;
            $organization->save();
            if (!file_exists('orgLogo')) {
                mkdir('orgLogo');
            }
            $destinationPath = 'orgLogo' . '/' . $manager->organization_id;
            $orgImage->move($destinationPath, $orgFileName);
        }

        if (!empty($user)) {
            $user->email = $request->email;
            $user->name = $request->name;
            $date = new \DateTime();
            $ddf = $date->format('Y-m-d H:i:s');
            $user->updated_at = $ddf;
            
            if ( $request->has('time_of_feedback_notification') ) {
                $user->time_of_feedback_notification = $request->time_of_feedback_notification;
            }

            if ($user->save()) {
                return response()->json(['status' => 'success', 'message' => 'Profile updated successfully.']);
            } else {
                return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
            }
        } else {
            return response()->json(['status' => 'fail', 'message' => 'User not exist anymore.']);
        }
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function changePassword(Request $request)
    {
        $usrId = $request->user_id;
        $this->validate($request, [
            'user_id' => 'required',
            'current_password' => 'required',
            'new_password' => 'required',
        ]);

        $user = User::where('id', $usrId)->get()->first();
        if (!empty($user)) {
            if (Hash::check($request->current_password, $user->password)) {
                $newPass = Hash::make($request->new_password);
                $user->password = $newPass;
                $date = new \DateTime();
                $ddf = $date->format('Y-m-d H:i:s');
                $user->updated_at = $ddf;

                if ($user->save()) {
                    return response()->json(['status' => 'success', 'message' => PASSWORD_CHANGED]);
                } else {
                    return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
                }
            } else {
                return response()->json(['status' => 'fail', 'message' => WRONG_PASSWORD]);
            }
        } else {
            return response()->json(['status' => 'fail', 'message' => NOT_EXIST]);
        }
    }

    public function getImage(Request $request)
    {

        $rid = $request->orgId;
        $organization = Organization::find($rid);

        if ($organization) {
            if (!$organization->organization_pic) {
                return response()->json(['status' => 'success', 'image' => '']);
            } else {
                $imagePath = '../public/orgLogo/' . $organization->id . '/' . $organization->organization_pic;
                $image = url() . '/orgLogo/' . $organization->id . '/' . $organization->organization_pic;
                if (file_exists($imagePath)) {
                    return response()->json(['status' => 'success', 'image' => $image]);
                } else {
                    return response()->json(['status' => 'fail', 'message' => SOMETHING_WENT_WRONG]);
                }
            }
        } else {
            return response()->json(['status' => 'fail', 'message' => RECORD_NOT_FOUND]);
        }
    }
}
