Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
CRAP
0.00% covered (danger)
0.00%
0 / 66
EditProfileController
0.00% covered (danger)
0.00%
0 / 1
0.00% covered (danger)
0.00%
0 / 8
306
0.00% covered (danger)
0.00%
0 / 66
 index
0.00% covered (danger)
0.00%
0 / 1
6
0.00% covered (danger)
0.00%
0 / 17
 create
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 store
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 show
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 edit
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 update
0.00% covered (danger)
0.00%
0 / 1
42
0.00% covered (danger)
0.00%
0 / 26
 destroy
0.00% covered (danger)
0.00%
0 / 1
2
0.00% covered (danger)
0.00%
0 / 1
 storeProfilePic
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 18
<?php
namespace App\Http\Controllers\EditProfile;
use App\Http\Controllers\FirebaseController\FirebaseCloudMessaging;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\Models\Auth\User;
use Illuminate\Support\Facades\Hash;
use Session;
use App\Notifications\AppNotifications;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;
use Illuminate\Support\Facades\Validator;
use App\Helpers\AttendanceHelper;
class EditProfileController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $title = '/Edit Profile';
        $backurl = route('home');
        $user = Auth::user();
        $password = $user->password;
        $user_id = $user->id;
        $name = $user->name . ' ' . $user->lastName;
       
        $profilePic = 0;
        if( $user->profile_pic ){
           $profilePic = $user->profile_pic;
        }
        // For returning attendance marking for home controller
        $val = AttendanceHelper::getAttendanceMarkValue();
        $valTeam = AttendanceHelper::getAttendanceTeam($request);
        $valUser = AttendanceHelper::getAttendanceUser($request);
        return view('editProfile.editProfile', compact('title','backurl','val','valTeam','valUser'))->with([
            'password' => $password,
            'user_id' => $user_id,
            'name' => $name,
            'profilePic' => $profilePic
        ]); 
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {   
        if($request->old_password){
            $this->validate($request, [
                'old_password'  => 'required',
                'new_password'  => 'required|min:6',
                'confirm_password'  => 'required_with:new_password|same:new_password|min:6',
            ]);
            $user = User::find($id);
            if (!Hash::check($request->old_password, $user->password)) {
                Session::flash('warning', 'Old password is wrong!');
            } else {
               if (Hash::needsRehash($request->password)) {
                    $user->password = Hash::make($request->new_password);
                }
                $user->save();
                //notification to admin
                $title = "Password Changed";
                $message = $user->name . ' ' . $user->lastName."'s account password changed by ".$user->name . ' ' . $user->lastName;
                $actionUrl = null;
                
                $arr = null;
                $arr = [$title, $message, $actionUrl];
                $users = User::all();
                
                foreach ($users as $user) {
                    if($user->can('Administration Module')){
                        $user->notify(new AppNotifications($arr));
                        $firebaseObject = new FirebaseCloudMessaging();
                        $firebaseObject->sendFirebaseNotification($title,$message,$user->id);
                    }
                   
                }
                Session::flash('success', 'Password Changed Successfully!');
            }
            return redirect()->route('edit-profile.index')->withErrors($this);
        }else{
            $user = User::find($id);
            $this->storeProfilePic($request, $user->id);
            Session::flash('success', 'Profile Changed Successfully!');
             return redirect()->route('edit-profile.index')->withErrors($this);
        }
    }   
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
    }
    private function storeProfilePic($request,$id)
    {   
        if($request->file('profile_pic') && $request->profilePic == 1) //if image uploaded
        {
            $validator = Validator::make($request->all(), [
                'profile_pic' => 'sometimes|file|image|max:2048|mimes:jpeg,png,jpg'
            ]);
            if ($validator->fails())
                {
                    return "false";
                }
                else
                {  
                    $todaydate = date('Y-m-d H:i:s');
                    $file_name =$request->file('profile_pic')->getClientOriginalName();
                    $file_name = $todaydate.'-'.$file_name;
                    $custom_file_name = str_replace(" ", "-", $file_name);
                    Storage::putFileAs(('public/profile'),$request->file('profile_pic'), $custom_file_name);
                    $path = "profile/".$custom_file_name;
                    $user = User::Where('id',$id)->first();
                    $user->profile_pic = $path;  
                    $user->save();
                    // $img = Image::make('storage/'.$path);
                    // // resize the instance
                    // $img->resize(90,90);
                    // $img->save();
                
                }
            }
        else{
            $user = User::Where('id',$id)->first();
            $user->profile_pic = "";  
            $user->save();
        }
    }
}