MOON
Server: Apache
System: Linux e2e-78-16.ssdcloudindia.net 3.10.0-1160.45.1.el7.x86_64 #1 SMP Wed Oct 13 17:20:51 UTC 2021 x86_64
User: imensosw (1005)
PHP: 8.0.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/.trash/app.2/Http/Controllers/Admin/PartnerController.php
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Http\Requests\StoreConsultancyRequest;
use App\Http\Requests\UpdateConsultancyRequest;
use App\Role;
use App\User;
use App\UserDoc;
use App\Partner;
use App\Country;
use App\Organization;
use Validator;
use Gate;
use URL;
use Auth;
use File;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;
use Illuminate\Auth\Events\Registered;

use App\Notifications\NewUserEmailNotification;
use App\Notifications\NewUser;
use Illuminate\Support\Str;

class PartnerController extends Controller
{
    public function index()
    {

        abort_if(Gate::denies('partner_access'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        $user = Auth::user();
        $role = $user->roles->pluck('title','id')->toArray();
        
        if(in_array('Admin',$role)){
            $partners = Partner::join('role_user', 'users.id', '=', 'role_user.user_id')->where('role_user.role_id',3)->get();
            $organizations = Organization::pluck('title','id')->toArray();
            return view('admin.partners.index', compact('partners','organizations'));
        }else{
            return redirect()->back()->with('error','Wrong access!');
        }
        
        
    }

    public function create()
    {
        abort_if(Gate::denies('partner_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        $user = Auth::user();
        $role = $user->roles->pluck('title','id')->toArray();
        
        if(in_array('Admin',$role)){
            $countries = Country::all();
            $organizations = Organization::all();
            $roles = Role::whereIn('id',[3])->pluck('title', 'id');
            return view('admin.partners.create', compact('roles','countries','organizations'));
        }else{
            return redirect()->back()->with('error','Wrong access!');
        }
        
    }

    public function partner_register()
    {
        
        $countries = Country::all();
        $organizations = Organization::all();
        $roles = Role::whereIn('id',[3])->pluck('title', 'id');
        return view('partner_register', compact('roles','countries','organizations'));
        
        
    }


    public function register_as_partner(Request $request)
    {
        $valuesToAdd = array();
        if(isset($request->slug) && !empty($request->slug)){
            $valuesToAdd['slug'] = Str::slug($request->slug, '-');    
        }else{
            $valuesToAdd['slug'] = Str::slug($request->name, '-');
        }
        $request->merge($valuesToAdd);

        $validator = Validator::make($request->all(), 
        [
            'name'     => [
                'required',
            ],
            'email'    => [
                'required',
                'unique:users',
            ],
            'slug'    => [
                'required',
                'unique:users,slug',
            ],
            'org_contact'    => [
                'required',
                'regex:/^([0-9\s\-\+\(\)]*)$/',
                'min:9',
            ],
            'org_name'    => [
                'required',
            ],
            'org_type'    => [
                'required',
            ],
            'org_email'    => [
                'required',
            ],
            'password' => [
                'required',
            ],
            'roles.*'  => [
                'integer',
            ],
            'roles'    => [
                'required',
                'array',
            ],
        ]
        );

        if ($validator->fails()) {
            return redirect()->route('partner_register')
                        ->withErrors($validator)
                        ->withInput();
        }

        
        $client_role = array(0=>3);

        

        //$add_array = array();
        
            //$add_array['user_status'] = 1;
            //$add_array['email_verified_at'] = date('Y-m-d H:i:s');
            //$add_array['approved_at'] = date('Y-m-d H:i:s');

        //$request->merge($add_array);
        $user = Partner::create($request->all());
        $user->roles()->sync($client_role);

        
        try
        {
            event(new Registered($user));

            $this_user = User::find($user->id);
                
            $admin = User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',1)->get();
            foreach($admin as $key=>$this_admin){
                $this_admin->notify(new NewUser($this_user));
            }
        }
        catch (\Exception $e) {

            //return $e->getMessage();
        }

        auth()->login($user);

        return redirect()->route('admin.home');

         
        
    }
    public function store(Request $request)
    {
        abort_if(Gate::denies('partner_create'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        $valuesToAdd = array();
        if(isset($request->slug) && !empty($request->slug)){
            $valuesToAdd['slug'] = Str::slug($request->slug, '-');    
        }else{
            $valuesToAdd['slug'] = Str::slug($request->name, '-');
        }
        $request->merge($valuesToAdd);

        $validator = Validator::make($request->all(), 
        [
            'name'     => [
                'required',
            ],
            'email'    => [
                'required',
                'unique:users',
            ],
            'slug'    => [
                'required',
                'unique:users,slug',
            ],
            'org_contact'    => [
                'required',
                'regex:/^([0-9\s\-\+\(\)]*)$/',
                'min:9',
            ],
            'org_name'    => [
                'required',
            ],
            'org_type'    => [
                'required',
            ],
            'org_email'    => [
                'required',
            ],
            'password' => [
                'required',
            ],
            'roles.*'  => [
                'integer',
            ],
            'roles'    => [
                'required',
                'array',
            ],
        ]
        );

        if ($validator->fails()) {
            return redirect()->route('admin.partners.create')
                        ->withErrors($validator)
                        ->withInput();
        }

        
        $client_role = array(0=>3);

        $user = Auth::user();
        $role = $user->roles->pluck('title','id')->toArray();

        $add_array = array();
        if(in_array('Admin',$role)){
            $add_array['user_status'] = 1;
            $add_array['email_verified_at'] = date('Y-m-d H:i:s');
            $add_array['approved_at'] = date('Y-m-d H:i:s');
            $request->merge($add_array);
            $user = Partner::create($request->all());
            $user->roles()->sync($client_role);

            $mailData = [
                'greeting' => 'Hi '.$user->name.',',
                'body' => 'Your Account is Created on LiftCincy by Admin. 
                your Login detail are : 
                username - '.$user->email.'
                 Password - '.$request->password,
                'thanks' => 'Thank you to connect with LiftCincy,',
                'actionText' => 'View Account',
                'actionURL' => url('/'),
            ];

            try
            {

                $user->notify(new NewUserEmailNotification($mailData));
                
                $this_user = User::find($user->id);
                
                $admin = User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',1)->get();
                foreach($admin as $key=>$this_admin){
                    $this_admin->notify(new NewUser($this_user));
                }
            }
            catch (\Exception $e) {

                //return $e->getMessage();
            }
            

            return redirect()->route('admin.partners.index')->with('success','Partner Created successfully!');
        }else{
            return redirect()->back()->with('error','Wrong access!');
        }
    }

    public function edit(User $user,$id)
    {
        
        abort_if(Gate::denies('partner_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        if(User::where('id',$id)->count()){
            $user = User::find($id);
            $roles = Role::whereIn('id',[3])->pluck('title', 'id');
            $user->load('roles');
            
            $countries = Country::all();
            
            $user_c = Auth::user();
            $role = $user_c->roles->pluck('title','id')->toArray();
            $organizations = Organization::all();

            $user_docs = UserDoc::where('user_id',$id)->get();

            if(in_array('Admin',$role)){
                return view('admin.partners.edit', compact('user','roles','countries','organizations','user_docs'));
            }else{
                return redirect()->back();
            }
        }
    }

    public function update(Request $request, $id)
    {
        
        abort_if(Gate::denies('partner_edit'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        $valuesToAdd = array();
        if(isset($request->slug) && !empty($request->slug)){
            $valuesToAdd['slug'] = Str::slug($request->slug, '-');    
        }else{
            $valuesToAdd['slug'] = Str::slug($request->name, '-');
        }
        $request->merge($valuesToAdd);
        $validator = Validator::make($request->all(), 
        [
            'name'     => [
                'required',
            ],
            'slug'    => [
                'required',
                'unique:users,slug,'.$id,
            ],
            'email'    => [
                'required',
                'unique:users,email,'.$id,
            ],
            'org_contact'    => [
                'required',
                'regex:/^([0-9\s\-\+\(\)]*)$/',
                'min:9',
            ],
            'org_name'    => [
                'required',
            ],
            'address_location'    => [
                'required',
            ],
            'org_type'    => [
                'required',
            ],
            'org_email'    => [
                'required',
            ],
            'org_desc'    => [
                'required',
            ],
            'roles.*'  => [
                'integer',
            ],
            'roles'    => [
                'required',
                'array',
            ],
        ]
        );
        
        
        if ($validator->fails()) {
            return redirect()->route('admin.partners.edit',[$id])
                        ->withErrors($validator)
                        ->withInput();
        }
        
        if(User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->count()){
            
            $user = Partner::find($id);
            
            $client_role = array(0=>3);

            $c_user = Auth::user();
            $role = $c_user->roles->pluck('title','id')->toArray();
            $add_array = array();
            if(in_array('Admin',$role)){
                //$add_array['company_id'] = $c_user->id;
                //$add_array['parent_id'] = $c_user->id;
                //$request->merge($add_array);
                $user->update($request->all());
                return redirect()->route('admin.partners.index')->with('success','Partner updated successfully!');
            }else{
                return redirect()->route('admin.partners.edit',[$id])->with('error','Wrong access!');
            }
        }else{
            return redirect()->route('admin.partners.edit',[$id])->with('error','Wrong access!');
        }
    }

    public function show(Request $user,$id)
    {
        abort_if(Gate::denies('partner_show'), Response::HTTP_FORBIDDEN, '403 Forbidden');
        
        if(User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->count()){
            $user = User::find($id);
            $roles = Role::whereIn('id',[3])->pluck('title', 'id');
            $user->load('roles');
            
            $countries = Country::all();
            
            $user_profile_img = URL::asset('images/profile.webp');

            $organizations = Organization::all();

            $user_docs = UserDoc::where('user_id',$id)->get();

            if(!empty($user->user_profile_img)){
                $user_profile_img = URL::asset('Profile/'.$user->id.'/'.$user->user_profile_img);
            }

            return view('admin.partners.show', compact('user','roles','countries','user_profile_img','organizations','user_docs'));
        }
    }

    public function destroy(Request $request,$id)
    {
        abort_if(Gate::denies('partner_delete'), Response::HTTP_FORBIDDEN, '403 Forbidden');

        if(Partner::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$id)->get()->count()){

            $user_c = Auth::user();
            $role = $user_c->roles->pluck('title','id')->toArray();
            if(in_array('Admin',$role)){
                /*if(user::where('parent_id',$id)->count() || user::where('company_id',$id)->count()){
                    return back()->with('error','User Associated with other users, Can not delete!');
                }else{
                    $user = User::find($id);
                    $user->delete();
                    return back()->with('success','Partner deleted successfully!');
                }*/
                $user = Partner::find($id);
                $user->delete();
                return back()->with('success','Partner deleted successfully!');
            }
            
        }
        
        return back()->with('error','Something Wrong!');
    }
    
    public function partner_setting($user_id, User $request){
        if(!empty($user_id) && User::join('role_user','users.id','=','role_user.user_id')->where('role_user.role_id',3)->where('users.id',$user_id)->count()){

            $user = User::find($user_id);
            $user->load('roles');
            
            $role = $user->roles->pluck('title','id')->toArray();

            if(in_array('Admin',$role)){
                $countries = Country::pluck('country_name','country_code')->toArray();
                return view('admin.partners.settings',compact('user','countries'));
            }else{
                return redirect()->back()->with('error','Wrong access!');
            }
        }
        return redirect()->back()->with('error','Wrong access!');
    }

    
    public function upload_org_logo(Request $request)
    { 
        if($request->ajax()){
            $field_value = $request->field_value;
            $field_name = $request->field_name;
            $user_id = $request->partner_id;

            $user = Auth::user();
            $role = $user->roles->pluck('title','id')->toArray();
            
            if(empty($user_id)){
                return json_encode(array('success' => 'error','msg'=>'User not Found!'));
            }

            if(in_array('Admin',$role) || (Partner::where('id',$user_id)->get()->count()) && $user_id == $user->id) {
                $folder= public_path().'/Profile/'.$user_id;
                if(!is_dir($folder))
                {
                    //File::makeDirectory($folder);
                    File::makeDirectory($folder,0777,true);
                }

                if($request->hasFile('field_value')) {
                    
                    $user = Partner::find($user_id);
                    if(!empty($user->org_logo)){
                        $old_logo = public_path().'/Profile/'.$user_id.'/'.$user->org_logo;
                        if(File::exists($old_logo)){
                            File::delete($old_logo);
                            $user->org_logo = '';
                            $user->save();
                        }
                    }
                    
                    $file = $request->file('field_value');
                    $ext = $file->getClientOriginalExtension();
                    $filename = 'org_logo_'.$user_id.'_'.time().'.' . $ext;
                    $destinationPath = $folder;
                    
                    $upload_success = $file->move($destinationPath, $filename);
                    if($upload_success){
                        
                        $user->org_logo = $filename;
                        $user->save();

                        $doc_url = URL::asset('Profile').'/'.$user_id.'/'.$filename;
                        $ddd = array('success' => 'done','doc_url'=>$doc_url);
                        return json_encode($ddd);
                    }else{
                        return json_encode(array('success' => 'error','doc_name'=>'kk'));
                    }
                }
                return json_encode(array('success' => 'error','doc_name'=>'kk'));
            }else{
                return json_encode(array('success' => 'error','doc_name'=>'kk'));
            }

            
        }
    }

    public function delete_org_logo(Request $request)
    { 
        if($request->ajax()){
            $data_col = $request->data_col;
            $user_id = $request->partner_id;
            $user = Auth::user();
            $role = $user->roles->pluck('title','id')->toArray();
            
            if(empty($user_id)){
                return json_encode(array('success' => 'error','msg'=>'User not Found!'));
            }

            if(in_array('Admin',$role) || (Partner::where('id',$user_id)->get()->count()) && $user_id == $user->id) {
                $folder= public_path().'/Profile/'.$user_id;
                $user = Partner::find($user_id);
                if(!empty($user->org_logo)){
                    $old_logo = public_path().'/Profile/'.$user_id.'/'.$user->org_logo;
                    if(File::exists($old_logo)){
                        File::delete($old_logo);
                        $user->org_logo = '';
                        $user->save();

                        $doc_url = URL::asset('images/org_logo.png');
                        $ddd = array('success' => 'done','doc_url'=>$doc_url,'msg'=>'Logo deleted Successfully!');
                        return json_encode($ddd);
                    }else{
                        return json_encode(array('success' => 'error','msg'=>'Field not Found!'));
                    }
                }else{
                    return json_encode(array('success' => 'error','msg'=>'Field Value Null!'));
                }
            }else{
                return json_encode(array('success' => 'error','msg'=>'User not Found!'));
            }
        }
        return json_encode(array('success' => 'error','msg'=>'Wrong access'));
    }

    public function upload_user_docs(Request $request){
        if($request->ajax()){
            $user_id = $request->user_id;
            $doc_type = $request->doc_type;
            
            $user = Auth::user();
            $role = $user->roles->pluck('title','id')->toArray();
            
            if(empty($user_id)){
                return array('status'=>'error','msg'=>'Failed!');
            }

            if(in_array('Admin',$role) || Partner::where('id',$user_id)->get()->count()) {
                $field_value = $request->field_value;
                $field_name = $request->field_name;

                //$user_id = Auth::user()->id;
                $folder= public_path().'/Profile/'.$user_id.'/'.$doc_type;
                if(!is_dir($folder))
                {
                    //File::makeDirectory($folder);
                    File::makeDirectory($folder,0777,true);
                }
                $allow_file_upload = false;
                if($doc_type == 'DOC'){
                    $allow_file_upload = true;
                }
                if($allow_file_upload){
                    if($request->hasFile('field_value')) {
                        $file = $request->file('field_value');
                        $ext = $file->getClientOriginalExtension();
                        $filename = $doc_type.'_'.$user_id.'_'.time().'.' . $ext;
                        $destinationPath = $folder;
                        
                        $upload_success = $file->move($destinationPath, $filename);
                        if($upload_success){
                            if($doc_type == 'DOC'){
                                $doc_data = new UserDoc();
                            }
                            $doc_data->user_id = $user_id;
                            $doc_data->doc_type = $doc_type;
                            $doc_data->doc_name = $filename;
                            $doc_data->save();

                            $doc_url = URL::asset('Profile').'/'.$user_id.'/'.$doc_type.'/'.$filename;
                            $ddd = array('status' => 'success','msg'=>'Image Uploaded Successfully!','doc_url'=>$doc_url,'doc_id'=>$doc_data->id);
                            return json_encode($ddd);
                        }else{
                            return array('status'=>'error','msg'=>'Document Upload Failed!');
                        }
                    }
                }else{
                    return array('status'=>'error','msg'=>'No Permission to Upload Document!');
                }
            }else{
                return array('status'=>'error','msg'=>'Wrong access!');
            }
        }
        return array('status'=>'error','msg'=>'last Document Upload Failed!');
    }
    

    public function delete_user_document_file(Request $request){
        if($request->ajax()){
            $user_id = $request->user_id;
            $doc_type = $request->doc_type;
            $doc_id = $request->doc_id;
            $user = Auth::user();
            $role = $user->roles->pluck('title','id')->toArray();
            
            if(empty($user_id)){
                return array('status'=>'error','msg'=>'Failed!');
            }

            if(in_array('Admin',$role) || Partner::where('id',$user_id)->get()->count()) {
                $allow_file_upload = false;
                if($doc_type == 'DOC' && UserDoc::where('id',$doc_id)->where('doc_type',$doc_type)->where('user_id',$user_id)->get()->count()){

                    $doc_data = UserDoc::find($doc_id);

                    if(!empty($doc_data->doc_name)){
                        $folder= public_path().'/profile/'.$user_id.'/'.$doc_data->doc_type.'/'.$doc_data->doc_name;
                        if(File::exists($folder)){
                          File::delete($folder);
                        }
                    }else{
                        return array('status'=>'error','msg'=>'Image not found!'); 
                    }
                    $doc_data->delete();
                    $allow_file_upload = true;

                    return array('status'=>'success','msg'=>'Document Deleted Successfully!');
                }else{
                    return array('status'=>'error','msg'=>'Image not found!'); 
                }
            }else{
                return array('status'=>'error','msg'=>'Wrong access!'); 
            }
        }
        return array('status'=>'error','msg'=>'Image Delete request Failed!');
    }
    
}