api code global jain
This commit is contained in:
271
app/Repositories/Backend/User/AdminService.php
Normal file
271
app/Repositories/Backend/User/AdminService.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Backend\User;
|
||||
|
||||
use App\Constant\Constant;
|
||||
use App\Exceptions\GeneralException;
|
||||
use App\Services\BaseService;
|
||||
use Carbon\Carbon;
|
||||
use Domains\User\Http\Jobs\Backend\SendInviteUserJob;
|
||||
use App\Models\User;
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Yajra\DataTables\Facades\DataTables;
|
||||
|
||||
class AdminService extends BaseService
|
||||
{
|
||||
/**
|
||||
* Associated Service Model.
|
||||
*/
|
||||
protected const MODEL = User::class;
|
||||
|
||||
/**
|
||||
* This function is use for search query in Datatable.
|
||||
* Also for sorting function we are using join query for appropriate sorting result
|
||||
* @param $request
|
||||
* @return $this|array|Builder
|
||||
*/
|
||||
public function prepareSearchQuery($request)
|
||||
{
|
||||
$searchQuery = [];
|
||||
try {
|
||||
$searchQuery = $this->query()->select(
|
||||
'users.id',
|
||||
'users.email',
|
||||
'users.name',
|
||||
'users.email_verified_at',
|
||||
'users.created_at',
|
||||
'users.status',
|
||||
'roles.name as role_name',
|
||||
'roles.id as role_id'
|
||||
)
|
||||
->join('model_has_roles', 'users.id', '=', 'model_has_roles.model_id')
|
||||
->join('roles', 'model_has_roles.role_id', '=', 'roles.id')
|
||||
->where('roles.name','=',config('access.users.admin_role'))
|
||||
->where('roles.name','!=',config('access.users.super_admin_role'))
|
||||
->where('roles.name','!=',config('access.users.shravak'));
|
||||
|
||||
// $columns = ['', 'id', 'name', 'email', 'status', 'email_verified_at', 'created_at'];
|
||||
$columns = ['', 'id', 'name', 'email', 'created_at'];
|
||||
|
||||
if (isset($request['status']) && $request['status'] != '') {
|
||||
$searchQuery = $searchQuery->where('users.status', $request['status']);
|
||||
}
|
||||
|
||||
if (isset($request['email']) && !empty($request['email'])) {
|
||||
$searchQuery = $searchQuery->where('email', 'like', "%".$request['email']."%");
|
||||
}
|
||||
|
||||
if (isset($request['order']) && $request['order'] != "") {
|
||||
$searchQuery = $searchQuery->orderBy(
|
||||
$columns[$request['order'][0]['column']],
|
||||
$request['order'][0]['dir']
|
||||
);
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
}
|
||||
return $searchQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the format the Datatable columns
|
||||
*
|
||||
* @param $request
|
||||
* @return object
|
||||
*/
|
||||
public function getForDataTable($request): object
|
||||
{
|
||||
$response = (object)[];
|
||||
try {
|
||||
$dataTableQuery = $this->prepareSearchQuery($request)
|
||||
->orderBy('id', 'DESC');
|
||||
|
||||
$response = Datatables::of($dataTableQuery)
|
||||
->addColumn(
|
||||
'checkbox_action',
|
||||
function ($user) {
|
||||
return $user->checkbox_action;
|
||||
}
|
||||
)
|
||||
->addIndexColumn()
|
||||
// ->addColumn(
|
||||
// 'status',
|
||||
// function ($user) {
|
||||
// return $user->status_action;
|
||||
// }
|
||||
// )
|
||||
// ->addColumn(
|
||||
// 'email_verified_at',
|
||||
// function ($user) {
|
||||
// return (($user->email_verified_at) ? defaultDateTimeFormat($user->email_verified_at) : '-');
|
||||
// }
|
||||
// )
|
||||
->addColumn(
|
||||
'created_at',
|
||||
function ($user) {
|
||||
return (($user->created_at) ? defaultDateTimeFormat($user->created_at) : '-');
|
||||
}
|
||||
)
|
||||
->addColumn(
|
||||
'action',
|
||||
function ($user) {
|
||||
if (!empty($user->roles[0]['name']) != config('access.users.admin_role')
|
||||
|| !empty($user->roles[0]['name']) != config('access.users.super_admin_role')
|
||||
|| loggedInUser()->isSuperAdmin()
|
||||
|| loggedInUser()->isAdmin()
|
||||
) {
|
||||
return $user->admin_action_buttons;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
)
|
||||
->setRowId(
|
||||
function ($user) {
|
||||
return 'recordRow-' . $user->id;
|
||||
}
|
||||
)
|
||||
->rawColumns(['status', 'action', 'checkbox_action', 'email_verified_at'])
|
||||
->make(true);
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the create user
|
||||
*
|
||||
* @param array $request
|
||||
* @return User
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function create(array $request): User
|
||||
{
|
||||
try {
|
||||
return DB::transaction(
|
||||
function () use ($request) {
|
||||
$user = $this->query()->create(
|
||||
[
|
||||
'name' => $request['name'],
|
||||
'email' => $request['email'],
|
||||
'email_hash' => $request['email'],
|
||||
'password' => !empty($request['password']) ? bcrypt($request['password']) : Constant::NULL,
|
||||
'username' => generateUsername($request['name']),
|
||||
// 'status' => !empty($request['status']) ? Constant::STATUS_ONE : Constant::STATUS_ZERO,
|
||||
// 'email_verified_at' => !empty($request['is_verify']) ? Carbon::now() : Constant::NULL,
|
||||
// 'invite_status' => !empty($request['save_and_invite']) ? Constant::STATUS_ONE : Constant::STATUS_ZERO,
|
||||
// 'invite_by' => !empty(loggedInUser()->id) ? loggedInUser()->id : Constant::NULL,
|
||||
// 'created_by' => !empty(loggedInUser()->id) ? loggedInUser()->id : Constant::NULL
|
||||
]
|
||||
);
|
||||
|
||||
// This function call for assign the role for the user
|
||||
$user->assignRole($request['role_id']);
|
||||
|
||||
//Send invite email to the user
|
||||
// SendInviteUserJob::dispatch($user);
|
||||
|
||||
return $user;
|
||||
}
|
||||
);
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
throw new GeneralException(__('message.create_admin_error'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the update user
|
||||
*
|
||||
* @param object $user
|
||||
* @param array $request
|
||||
* @return User
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function update(object $user, array $request): User
|
||||
{
|
||||
try {
|
||||
return DB::transaction(
|
||||
function () use ($user, $request) {
|
||||
$this->query()->where('id', $user->id)->update(
|
||||
[
|
||||
'name' => !empty($request['name']) ? $request['name'] : $user->name,
|
||||
'email' => !empty($request['email']) ? encryptMe(strtolower($request['email'])) : $user->email,
|
||||
'email_hash' => !empty($request['email']) ? md5(strtolower($request['email'])) : $user->email_hash,
|
||||
'password' => !empty($request['password']) ? bcrypt($request['password']) : $user->password,
|
||||
// 'username' => !empty($request['username']) ? $request['username'] : $user->username,
|
||||
// 'status' => isset($request['status']) ? Constant::STATUS_ONE : Constant::STATUS_ZERO,
|
||||
// 'email_verified_at' => isset($request['is_verify']) ? Carbon::now() : $user->email_verified_at,
|
||||
// 'invite_status' => isset($request['save_and_invite']) ? Constant::STATUS_ONE : $user->invite_status,
|
||||
// 'invite_by' => !empty(loggedInUser()->id) ? loggedInUser()->id : $user->invite_by,
|
||||
// 'updated_by' => !empty(loggedInUser()->id) ? loggedInUser()->id : $user->updated_by,
|
||||
]
|
||||
);
|
||||
|
||||
$user->assignRole($request['role_id']);
|
||||
|
||||
//Send invite email to the user
|
||||
// if (!empty($request['save_and_invite'])) {
|
||||
// SendInviteUserJob::dispatch($user);
|
||||
// }
|
||||
|
||||
return $user;
|
||||
});
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
throw new GeneralException(__('message.update_admin_error'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the flush existing role and assign the updated role to the user
|
||||
*
|
||||
* @param string $roles
|
||||
* @param object $user
|
||||
* @return void
|
||||
*/
|
||||
protected function flushRoles(string $roles, object $user)
|
||||
{
|
||||
//Flush roles out, then add array of new ones
|
||||
if (!empty($user->roles[0]->id)) {
|
||||
$user->removeRole($user->roles[0]->id);
|
||||
}
|
||||
|
||||
$user->assignRole($roles);
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the multiple records action from the grid
|
||||
*
|
||||
* @param string $actionType
|
||||
* @param array $data
|
||||
* @return bool
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function gridActions(string $actionType, array $data): bool
|
||||
{
|
||||
try {
|
||||
switch ($actionType) {
|
||||
case Constant::STATUS_ACTIVE :
|
||||
$this->query()->whereIn('id', $data)->update(['status' => Constant::STATUS_ONE]);
|
||||
return Constant::STATUS_TRUE;
|
||||
case Constant::STATUS_INACTIVE :
|
||||
$this->query()->whereIn('id', $data)->update(['status' => Constant::STATUS_ZERO]);
|
||||
return Constant::STATUS_TRUE;
|
||||
case Constant::STATUS_DELETE :
|
||||
$this->query()->whereIn('id', $data)->forceDelete();
|
||||
return Constant::STATUS_TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
throw new GeneralException(__('message.delete_admin_error'));
|
||||
}
|
||||
}
|
||||
}
|
||||
265
app/Repositories/Backend/User/UserService.php
Normal file
265
app/Repositories/Backend/User/UserService.php
Normal file
@@ -0,0 +1,265 @@
|
||||
<?php
|
||||
|
||||
namespace App\Repositories\Backend\User;
|
||||
|
||||
use App\Constant\Constant;
|
||||
use App\Exceptions\GeneralException;
|
||||
use App\Models\User;
|
||||
use App\Models\UserDetail;
|
||||
use App\Services\BaseService;
|
||||
use Exception;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Yajra\DataTables\Facades\DataTables;
|
||||
|
||||
class UserService extends BaseService
|
||||
{
|
||||
|
||||
/**
|
||||
* Associated Service Model.
|
||||
*/
|
||||
protected const MODEL = User::class;
|
||||
|
||||
/**
|
||||
* @param User $user
|
||||
* UserRepository constructor.
|
||||
*
|
||||
*/
|
||||
public function __construct(UserDetail $userDetail)
|
||||
{
|
||||
$this->userDetail = $userDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is use for search query in Datatable.
|
||||
* Also for sorting function we are using join query for appropriate sorting result
|
||||
* @param $request
|
||||
* @return $this|array|Builder
|
||||
*/
|
||||
public function prepareSearchQuery($request)
|
||||
{
|
||||
$searchQuery = [];
|
||||
try {
|
||||
$searchQuery = $this->query()->select(
|
||||
'users.id',
|
||||
'users.name',
|
||||
//'status',
|
||||
'users.email',
|
||||
'users.created_at',
|
||||
'roles.name as role_name',
|
||||
'roles.id as role_id'
|
||||
)
|
||||
->join('model_has_roles', 'users.id', '=', 'model_has_roles.model_id')
|
||||
->join('roles', 'model_has_roles.role_id', '=', 'roles.id')
|
||||
->where('roles.name', '!=', config('access.users.admin_role'))
|
||||
->where('roles.name', '!=', config('access.users.super_admin_role'));
|
||||
|
||||
$columns = ['', 'id', 'name', 'status', 'created_at'];
|
||||
|
||||
if (isset($request['status']) && $request['status'] != '') {
|
||||
$searchQuery = $searchQuery->where('users.status', $request['status']);
|
||||
}
|
||||
|
||||
if (isset($request['name']) && $request['name'] != '') {
|
||||
$searchQuery = $searchQuery->where('users.name', 'like', '%' . $request['name'] . '%');
|
||||
}
|
||||
|
||||
if (isset($request['order']) && $request['order'] != "") {
|
||||
$searchQuery = $searchQuery->orderBy(
|
||||
$columns[$request['order'][0]['column']],
|
||||
$request['order'][0]['dir']
|
||||
);
|
||||
}
|
||||
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
}
|
||||
return $searchQuery;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the format the Datatable columns
|
||||
*
|
||||
* @param $request
|
||||
* @return object
|
||||
*/
|
||||
public function getForDataTable($request): object
|
||||
{
|
||||
$response = (object)[];
|
||||
try {
|
||||
$dataTableQuery = $this->prepareSearchQuery($request);
|
||||
// ->orderBy('id', 'DESC');
|
||||
|
||||
$response = Datatables::of($dataTableQuery)
|
||||
/*->addColumn(
|
||||
'checkbox_action',
|
||||
function ($user) {
|
||||
return $user->user_checkbox_action;
|
||||
}
|
||||
)*/
|
||||
->addIndexColumn()
|
||||
/*->addColumn(
|
||||
'status',
|
||||
function ($user) {
|
||||
return $user->user_status_action;
|
||||
}
|
||||
)*/
|
||||
->addColumn(
|
||||
'email',
|
||||
function ($user) {
|
||||
return $user->email;
|
||||
}
|
||||
)
|
||||
->addColumn(
|
||||
'created_at',
|
||||
function ($user) {
|
||||
return (($user->created_at) ? defaultDateTimeFormat($user->created_at) : '-');
|
||||
}
|
||||
)
|
||||
->addColumn(
|
||||
'action',
|
||||
function ($user) {
|
||||
if (
|
||||
!empty($user->roles[0]['name']) != config('access.users.admin_role')
|
||||
|| !empty($user->roles[0]['name']) != config('access.users.super_admin_role')
|
||||
|| loggedInUser()->isSuperAdmin()
|
||||
|| loggedInUser()->isAdmin()
|
||||
) {
|
||||
return $user->user_action_buttons;
|
||||
}
|
||||
return "";
|
||||
}
|
||||
)
|
||||
->setRowId(
|
||||
function ($user) {
|
||||
return 'recordRow-' . $user->id;
|
||||
}
|
||||
)
|
||||
->rawColumns(['status', 'action', 'checkbox_action'])
|
||||
->make(true);
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the create user
|
||||
*
|
||||
* @param array $request
|
||||
* @return User
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function create($request): User
|
||||
{
|
||||
try {
|
||||
$userData['name'] = $request['name'] ?? Constant::NULL;
|
||||
$userData['email'] = $request['email'] ?? Constant::NULL;
|
||||
$userData['mobile'] = $request['mobile'] ?? Constant::NULL;
|
||||
$userData['dharma_id'] = $request['dharma_id'] ?? Constant::NULL;
|
||||
$userData['status'] = '1' ?? Constant::NULL;
|
||||
$userData['username'] = generateUsername($request['name']) ?? Constant::NULL;
|
||||
$userData['gender'] = $request['gender'] ?? Constant::NULL;
|
||||
|
||||
if(!empty($request['avatar'])) {
|
||||
$imageName = uploadImage($request, 'avatar', Constant::USER_IMAGE_UPLOAD_PATH . Constant::SLASH);
|
||||
$userData['avatar'] = $imageName['image_name'] ?? Constant::NULL;
|
||||
}
|
||||
|
||||
$user = $this->query()->create($userData);
|
||||
|
||||
$user->assignRole(config('access.users.shravak'));
|
||||
|
||||
if($user) {
|
||||
$userDetailData['user_id'] = $user->id ?? Constant::NULL;
|
||||
$userDetailData['jati_id'] = $request['jati_id'] ?? Constant::NULL;
|
||||
$userDetailData['profession'] = $request['profession'] ?? Constant::NULL;
|
||||
$userDetailData['profession_speciality'] = $request['profession_speciality'] ?? Constant::NULL;
|
||||
/*$userDetailData['location'] = $request['location'] ?? Constant::NULL;
|
||||
$userDetailData['native_place'] = $request['native_place'] ?? Constant::NULL;*/
|
||||
|
||||
$userDetail = $this->userDetail->query()->create($userDetailData);
|
||||
}
|
||||
return $user;
|
||||
} catch (\Exception $ex) {
|
||||
Log::error($ex);
|
||||
throw new GeneralException(__('message.create_user_error'));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the update user
|
||||
*
|
||||
* @param object $user
|
||||
* @param array $request
|
||||
* @return User
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function update(object $user, $request): User
|
||||
{
|
||||
try {
|
||||
$userData['name'] = $request['name'] ?? $user->name;
|
||||
$userData['email'] = $request['email'] ?? $user->email;
|
||||
$userData['mobile'] = $request['mobile'] ?? $user->mobile;
|
||||
$userData['dharma_id'] = $request['dharma_id'] ?? $user->dharma_id;
|
||||
$userData['status'] = '1' ?? $user->status;
|
||||
$userData['username'] = $user->username;
|
||||
$userData['gender'] = $request['gender'] ?? $user->gender;
|
||||
|
||||
if(!empty($request['avatar'])) {
|
||||
$imageName = uploadImage($request, 'avatar', Constant::SANT_IMAGE_UPLOAD_PATH . Constant::SLASH, $user->getRawOriginal('avatar'));
|
||||
$userData['avatar'] = $imageName['image_name'] ?? $user->avatar;
|
||||
}
|
||||
|
||||
$userUpdated = $this->query()->where('id',$user->id)->update($userData);
|
||||
$userDetail = UserDetail::where('user_id',$user->id)->first();
|
||||
if($userDetail) {
|
||||
$userDetailData['user_id'] = $user->id;
|
||||
$userDetailData['jati_id'] = $request['jati_id'] ?? $userDetail->jati_id;
|
||||
$userDetailData['profession'] = $request['profession'] ?? $userDetail->profession;
|
||||
$userDetailData['profession_speciality'] = $request['profession_speciality'] ?? $userDetail->profession_speciality;
|
||||
/* $userDetailData['location'] = $request['location'] ?? $userDetail->location;
|
||||
$userDetailData['native_place'] = $request['native_place'] ?? $userDetail->native_place;*/
|
||||
$userDetailUpdated = $this->userDetail->query()->where('user_id',$user->id)->update($userDetailData);
|
||||
}
|
||||
|
||||
return $user;
|
||||
} catch (\Exception $ex) {
|
||||
Log::error($ex);
|
||||
throw new GeneralException(__('message.update_user_error'));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This function is for the multiple records action from the grid
|
||||
*
|
||||
* @param string $actionType
|
||||
* @param array $data
|
||||
* @return bool
|
||||
* @throws GeneralException
|
||||
*/
|
||||
public function gridActions(string $actionType, array $data): bool
|
||||
{
|
||||
try {
|
||||
switch ($actionType) {
|
||||
case Constant::STATUS_ACTIVE:
|
||||
$this->query()->whereIn('id', $data)->update(['status' => Constant::STATUS_ONE]);
|
||||
return Constant::STATUS_TRUE;
|
||||
case Constant::STATUS_INACTIVE:
|
||||
$this->query()->whereIn('id', $data)->update(['status' => Constant::STATUS_ZERO]);
|
||||
return Constant::STATUS_TRUE;
|
||||
case Constant::STATUS_DELETE:
|
||||
$this->query()->whereIn('id', $data)->delete();
|
||||
return Constant::STATUS_TRUE;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} catch (Exception $ex) {
|
||||
Log::error($ex->getMessage());
|
||||
throw new GeneralException(__('message.delete_user_error'));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user