File: /home/imensosw/.trash/app.1/Http/Controllers/UserSkillController.php
<?php
/**
* UserSkillController 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 App\Models\UserSkill;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use DB ;
/**
* UserSkillController class
*
* The class manage the User Skill
*
* @category UserSkillController
* @package Ez
* @author Imenso Software <admin@imensosoftware.com>
* @license http://imensosoftware/license.php GNU Public License
* @link http://imensosoftware.com/recipes
*/
class UserSkillController extends Controller
{
/**
* GetUserSkills function gets the skills of a specified user
* and return it in json format.
*
* @param \Illuminate\Http\Request request
* @return json
*/
public function getUserSkills(Request $request): \Illuminate\Http\JsonResponse
{
$id = Auth::user()->id ;
$userSkills = UserSkill::
select("user_skills.*", 'languages.language_l', 'proficiencys.proficiency')
->join('languages', 'languages.id', '=', 'user_skills.language_id')
->join('proficiencys', 'proficiencys.id', '=', 'user_skills.proficiency_id')
->where('user_skills.user_id', $id)->get();
return response()->json(
[
'status' => 'success',
'userSkills' => $userSkills->toArray()
],
200
);
}
/**
* Insert function adds the language for a specified user profile
* and return json.
*
* @param \Illuminate\Http\Request request
* @return json
*/
public function insert(Request $request): \Illuminate\Http\JsonResponse
{
$validator = Validator::make(
$request->all(),
[
'language_id' => 'required',
'proficiency_id' => 'required',
],
[
'language_id.required' => 'Please select language!',
'proficiency_id.required' => 'Please select proficiency!',
]
);
if ($validator->fails() || $request->language_id == 'undefined' || $request->proficiency_id == 'undefined') {
return response()->json(
[
'status' => 'error',
'message' => 'Please select required field!.',
'errors' => $validator->errors()
],
422
);
}
$user_id = Auth::user()->id ;
if (UserSkill::where('user_id', $user_id)->where('language_id', $request->language_id)->exists()) {
$userSkills = UserSkill::
select("user_skills.*", 'languages.language_l', 'proficiencys.proficiency')
->join('languages', 'languages.id', '=', 'user_skills.language_id')
->join('proficiencys', 'proficiencys.id', '=', 'user_skills.proficiency_id')
->where('user_skills.user_id', $user_id)->get();
return response()->json(
[
'status' => 'success',
'message' => 'This language is already in your profile.',
'userSkills' => $userSkills->toArray()
],
200
);
}
UserSkill::create(
['user_id' => $user_id,'language_id' => $request->language_id,'proficiency_id' => $request->proficiency_id]
);
$profile = \App\Models\Profile::where('user_id', $user_id)->first();
if ($profile->translator_status_id == 2 && $profile->info_status == 1) {
$profile->translator_status_id = 3 ;
$profile->save();
}
//$data['skill_status'] = 1 ;
$userSkills = UserSkill::
select("user_skills.*", 'languages.language_l', 'proficiencys.proficiency')
->join('languages', 'languages.id', '=', 'user_skills.language_id')
->join('proficiencys', 'proficiencys.id', '=', 'user_skills.proficiency_id')
->where('user_skills.user_id', $user_id)->get();
\App\Models\UserSkillPair::updateUserSkillPairs($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' => 'Language added successfully.',
'translator_status_id' => $translatorStatus->translator_status_id,
'translator_status_name' => $translatorStatus->translator_status_name,
'userSkills' => $userSkills->toArray()
],
200
);
}
/**
* Update function updates the language for the specified user
* and return json.
*
* @param \Illuminate\Http\Request request
* @return json
*/
public function update(Request $request): \Illuminate\Http\JsonResponse
{
$validator = Validator::make(
$request->all(),
[
'proficiency_id.*' => 'required',
],
[
'proficiency_id.required' => 'Please select proficiency!',
]
);
if ($validator->fails()) {
$messages = $validator->errors()->all();
;
$error_in = [];
foreach ($messages as $messages) {
$id = substr($messages, 19, 1);
$error_in[] = intval($id);
}
return response()->json(
[
'status' => 'error',
'message' => 'Please select proficiency!',
'error_in' => $error_in,
'errors' => $validator->errors()
],
422
);
}
$user_id = Auth::user()->id ;
$language_id = $request->language_id ;
$proficiency_id = $request->proficiency_id ;
$i = 0 ;
$ids = [] ;
if ($request->language_id) {
foreach ($request->language_id as $language_id) {
$ids[] = $language_id ;
$userSkill = UserSkill::updateOrCreate(
['user_id' => $user_id,'language_id' => $language_id],
['user_id' => $user_id,'language_id' => $language_id,'proficiency_id' => $proficiency_id[$i]]
);
$i++;
}
}
if (sizeof($ids) > 0) {
UserSkill::where('user_id', $user_id)->whereNotIn('language_id', $ids)->delete();
} else {
UserSkill::where('user_id', $user_id)->delete();
}
\App\Models\UserSkillPair::updateUserSkillPairs($user_id);
$userSkills = UserSkill::
select("user_skills.*", 'languages.language_l', 'proficiencys.proficiency')
->join('languages', 'languages.id', '=', 'user_skills.language_id')
->join('proficiencys', 'proficiencys.id', '=', 'user_skills.proficiency_id')
->where('user_skills.user_id', $user_id)->get();
return response()->json(
[
'status' => 'success',
'message' => 'Language updated successfully.',
'userSkills' => $userSkills->toArray()
],
200
);
}
}