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
);
}
}