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: 7.4.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/imensosw/www/ezwork/app/Http/Controllers/UserIdentificationController.php
<?php

/**
 * UserIdentificationController class file
 *
 * PHP Version 7.2
 *
 * @category Controller
 * @package  Ez
 * @author   Imenso Software <admin@imensosoftware.com>
 * @license  http://imensosoftware/license.php GNU Public License
 * @link     http://imensosoftware.com/recipes
 */

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use DB ;
use App\Models\UserIdentification;

/**
 * UserIdentificationController class
 *
 * The class manage the User Identification
 *
 * @category UserIdentificationController
 * @package  Ez
 * @author   Imenso Software <admin@imensosoftware.com>
 * @license  http://imensosoftware/license.php GNU Public License
 * @link     http://imensosoftware.com/recipes
 */

class UserIdentificationController extends Controller
{
    
    
    /**
     * GetUserIdentification function gets the identification information
     * of the specified user and return it in json format.
     *
     * @param  \Illuminate\Http\Request  request
     * @return json
     */
    public function getUserIdentification(Request $request): \Illuminate\Http\JsonResponse
    {
        $user_id = Auth::user()->id ;
        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $user_id]);
    
        return response()->json(
            [
                'status' => 'success',
                'userIdentification' => $userIdentification
            ],
            200
        );
    }

    /**
     * UploadPhotoId function uploads the photo proof file, update in storage
     * and return it in json format.
     *
     * @param  \Illuminate\Http\Request  request
     * @return json
     */
    public function uploadPhotoId(Request $request): \Illuminate\Http\JsonResponse
    {
        $validator = Validator::make(
            $request->all(),
            [
            'photo_proof_type_id' => 'required',
            'photo_proof_file' => 'required|image|max:2048',
            ],
            [
            'photo_proof_type_id.required' => 'Please select type!',
            'photo_proof_file.required' => 'Please select your photo id!',
            'photo_proof_file.image' => 'Photo ID must be an image!!',
            'photo_proof_file.max' => 'Photo ID size must be less then 2 MB!',
            ]
        );
        if ($validator->fails()) {
            return response()->json(
                [
                'status' => 'error',
                'message' => 'Please ppovide required field!.',
                'errors' => $validator->errors()
                ],
                422
            );
        }

        $user_id = Auth::user()->id ;
        $photo_proof_file = time() . '.' . $request->photo_proof_file->getClientOriginalExtension();
        $request->photo_proof_file->move(public_path('docs/identification'), $photo_proof_file);

        UserIdentification::updateOrCreate(
            ['user_id' => $user_id,],
            ['user_id' => $user_id,'photo_proof_type_id' => $request->photo_proof_type_id,
                'photo_proof_file' => $photo_proof_file]
        );

        $userIdentification = UserIdentification::where('user_id', $user_id)->first();

        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $user_id]);
        $userBankAccount = \App\Models\UserBankAccount::getUserBankAccounts(['user_id' => $user_id]);
        $ppType = $userIdentification->photo_proof_type_id;
        $apType = $userIdentification->address_proof_type_id;
        if ($userBankAccount->count() > 0 && $ppType > 0 && $apType > 0) {
            \App\Models\Profile::where('user_id', $user_id)
                ->where('translator_status_id', 6)
                ->update(['translator_status_id' => 7]);
        }

        $translatorStatus = \App\Models\Profile::
        select('profiles.translator_status_id', 'translator_status.translator_status_name as translator_status_name')
            ->join('translator_status', 'translator_status.id', '=', 'profiles.translator_status_id')
            ->where('profiles.user_id', $user_id)
            ->first();
        
        return response()->json(
            [
                'status' => 'success',
                'message' => 'Photo ID uploaded successfully.',
                'translator_status_id' => $translatorStatus->translator_status_id,
                'translator_status_name' => $translatorStatus->translator_status_name,
                'userIdentification' => $userIdentification
            ],
            200
        );
    }

    /**
     * DeletePhotoId function deletes the photo id of a specified user
     * from the storage and return it in json format.
     *
     * @param  \Illuminate\Http\Request  request
     * @return json
     */
    public function deletePhotoId(Request $request): \Illuminate\Http\JsonResponse
    {
        $validator = Validator::make(
            $request->all(),
            [
            'id' => 'required',
            ],
            [
            'id.required' => 'Error in delete! Please try again.',
            ]
        );

        if ($validator->fails()) {
            return response()->json(
                [
                'status' => 'error',
                'message' => 'Error in delete! Please try again.',
                'showErrorPop' => true,
                'errors' => $validator->errors(),
                ],
                422
            );
        }

        UserIdentification::where('user_id', $request->id)
            ->update(
                ['photo_proof_type_id' => null,'photo_proof_file' => '',
                'photo_proof_status_id' => 0, 'address_proof_status_id' => 0]
            );
        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $request->id]);
        return response()->json(
            [
            'status' => 'success',
            'message' => 'Photo ID deleted successfully.',
            'userIdentification' => $userIdentification
            ],
            200
        );
    }
    /**
     * UploadAddressProof function upload address proof file for the specified user,
     * updates in the storage and return in json format.
     *
     * @param  \Illuminate\Http\Request  request
     * @return json
     */
    public function uploadAddressProof(Request $request): \Illuminate\Http\JsonResponse
    {
        $validator = Validator::make(
            $request->all(),
            [
            'address_proof_type_id' => 'required',
            'address_proof_file' => 'required|image|max:2048',
            ],
            [
            'address_proof_type_id.required' => 'Please select type!',
            'address_proof_file.required' => 'Please select your address proof!',
            'address_proof_file.image' => 'Address proof must be an image!!',
            'address_proof_file.max' => 'Address proof size must be less then 2 MB!',
            ]
        );
        if ($validator->fails()) {
            return response()->json(
                [
                'status' => 'error',
                'message' => 'Please ppovide required field!.',
                'errors' => $validator->errors()
                ],
                422
            );
        }

        $user_id = Auth::user()->id ;
        $address_proof_file = time() . '.' . $request->address_proof_file->getClientOriginalExtension();
        $request->address_proof_file->move(public_path('docs/identification'), $address_proof_file);

        UserIdentification::updateOrCreate(
            ['user_id' => $user_id,],
            ['user_id' => $user_id,'address_proof_type_id' => $request->address_proof_type_id,
            'address_proof_file' => $address_proof_file]
        );

        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $user_id]);
        $userBankAccount = \App\Models\UserBankAccount::getUserBankAccounts(['user_id' => $user_id]);
        $ppType = $userIdentification->photo_proof_type_id;
        $apType = $userIdentification->address_proof_type_id;
        if ($userBankAccount->count() > 0 && $ppType > 0 && $apType > 0) {
             \App\Models\Profile::where('user_id', $user_id)
                 ->where('translator_status_id', 6)
                 ->update(['translator_status_id' => 7]);
        }

        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $user_id]);

        $translatorStatus = \App\Models\Profile::
        select('profiles.translator_status_id', 'translator_status.translator_status_name as translator_status_name')
            ->join('translator_status', 'translator_status.id', '=', 'profiles.translator_status_id')
            ->where('profiles.user_id', $user_id)
            ->first();

        return response()->json(
            [
                'status' => 'success',
                'message' => 'Address proof uploaded successfully.',
                'translator_status_id' => $translatorStatus->translator_status_id,
                'translator_status_name' => $translatorStatus->translator_status_name,
                'userIdentification' => $userIdentification
            ],
            200
        );
    }

    /**
     * DeleteAddressProof function deletes the address proof of specified user,
     * updates in the storage and return json.
     *
     * @param  \Illuminate\Http\Request  request
     * @return json
     */
    public function deleteAddressProof(Request $request): \Illuminate\Http\JsonResponse
    {
        $validator = Validator::make(
            $request->all(),
            [
            'id' => 'required',
            ],
            [
            'id.required' => 'Error in delete! Please try again.',
            ]
        );

        if ($validator->fails()) {
            return response()->json(
                [
                'status' => 'error',
                'message' => 'Error in delete! Please try again.',
                'showErrorPop' => true,
                'errors' => $validator->errors(),
                ],
                422
            );
        }
        UserIdentification::where('user_id', $request->id)
            ->update(
                ['address_proof_type_id' => null,'address_proof_file' => '',
                'address_proof_status_id' => 0, 'photo_proof_status_id' => 0]
            );
        $userIdentification = UserIdentification::getUserIdentification(['user_id' => $request->id]);
        return response()->json(
            [
            'status' => 'success',
            'message' => 'Address proof deleted successfully.',
            'userIdentification' => $userIdentification
            ],
            200
        );
    }
}