Viewing File: /home/ubuntu/vedadeals-backend-base/app/Http/Controllers/Admin/UserController.php
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Helpers\Helper;
use DB, Exception, Setting, Hash, Storage, Excel;
use App\Models\{ User, Wishlist };
use App\Http\Requests\Admin\User\{ UserPostRequest, UserGetRequest };
use App\Services\{ EmailService };
use App\Exports\{ UsersExport };
class UserController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct(Request $request)
{
$this->middleware('auth:admin');
$this->skip = $request->skip ?: 0;
$this->take = $request->take ?: (Setting::get('admin_take_count') ?: TAKE_COUNT);
}
/**
* @method users_index()
*
* @uses to list the users
*
* @created Karthick
*
* @updated
*
* @param
*
* @return to users index page
*/
public function users_index(Request $request) {
$base_query = User::orderBy('created_at','DESC');
if($request->filled('search_key')) {
$base_query = $base_query->where(function ($query) use ($request) {
$query->where('name', "LIKE", "%" . $request->search_key . "%");
$query->orWhere('email', "LIKE", "%" . $request->search_key . "%");
$query->orWhere('mobile', "LIKE", "%" . $request->search_key . "%");
});
}
if($request->filled('status')) {
$base_query = $base_query->where('status', $request->status);
}
if(isset($request->is_email_verified)) {
$base_query = $base_query->where('is_email_verified', $request->is_email_verified);
}
$users = $base_query->paginate($this->take);
return view('admin.users.index')
->with('page', 'users')
->with('sub_page', 'users-view')
->with('users', $users);
}
/**
* @method users_create()
*
* @uses To create a new user
*
* @created Karthick
*
* @updated
*
* @param create a new object
*
* @return to create user page
*
*/
public function users_create() {
$user = new User;
return view('admin.users.create')
->with('page', 'users')
->with('sub_page', 'users-create')
->with('user', $user);
}
/**
* @method users_edit()
*
* @uses to edit user details based on the user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return to edit user page
*
*/
public function users_edit(UserGetRequest $request) {
try {
$user = User::find($request->user_id);
return view('admin.users.edit')
->with('page' , 'users')
->with('sub_page','users-create')
->with('user' , $user);
} catch(Exception $e) {
return redirect()->route('admin.users.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method users_save()
*
* @uses to save the user details of new/existing object based on user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return view user page
*
*/
public function users_save(UserPostRequest $request) {
try {
DB::begintransaction();
$user = User::updateOrCreate(['id' => $request->user_id], $request->validated());
if($request->hasFile('picture')) {
$request->user_id ? Helper::storage_delete_file($user->picture, PROFILE_PATH_USER) : '';
$user->picture = Helper::storage_upload_file($request->file('picture'), PROFILE_PATH_USER);
}
if($request->hasFile('cover')) {
$request->user_id ? Helper::storage_delete_file($user->cover, PROFILE_PATH_USER) : '';
$user->cover = Helper::storage_upload_file($request->file('cover'), PROFILE_PATH_USER);
}
if($user->save()) {
DB::commit();
if($user->wasRecentlyCreated) {
EmailService::send_admin_welcome_email($user);
}
$message = $request->user_id ? tr('user_updated_success') : tr('user_created_success');
return redirect(route('admin.users.view', ['user_id' => $user->id ]))->with('flash_success', $message);
}
throw new Exception(tr('user_save_failed'));
} catch(Exception $e){
DB::rollback();
return back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_view()
*
* @uses to view the user details based on user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return View page
*
*/
public function users_view(UserGetRequest $request) {
try {
$user = User::withCount(['userWithdrawals', 'walletTransactions', 'wishlists', 'orders'])->find($request->user_id);
return view('admin.users.view')
->with('page', 'users')
->with('sub_page', 'users-view')
->with('user',$user);
} catch (Exception $e) {
return redirect()->route('admin.users.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method users_status
*
* @uses to change user status as DECLINED/APPROVED based on user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return response success/failure message
*
**/
public function users_status(UserGetRequest $request) {
try {
DB::beginTransaction();
$user = User::find($request->user_id);
$result = $user->update(['status' => $user->status ? DECLINED : APPROVED]);
if($result) {
DB::commit();
$message = $user->status ? tr('user_approve_success') : tr('user_decline_success');
return back()->with('flash_success', $message);
}
throw new Exception(tr('user_status_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->route('admin.users.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method users_delete()
*
* @uses to delete the user details based on user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return response of success/failure details with view page
*
*/
public function users_delete(UserGetRequest $request) {
try {
DB::begintransaction();
$user = User::find($request->user_id);
if($user->delete()) {
DB::commit();
return redirect()->route('admin.users.index')->with('flash_success',tr('user_deleted_success'));
}
throw new Exception(tr('user_delete_failed'));
} catch(Exception $e){
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_send_welcome_email()
*
* @uses to send a admin welcome email (With reset password link)
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return to edit user page
*
*/
public function users_send_welcome_email(UserGetRequest $request) {
try {
$user = User::find($request->user_id);
if($user->reset_password_step == COMPLETED) {
throw new Exception(tr('user_already_completed_reset_password_step'));
}
EmailService::send_admin_welcome_email($user);
return redirect(route('admin.users.view', ['user_id' => $user->id ]))->with('flash_success',tr('welcome_email_send_successfully'));
} catch(Exception $e) {
return redirect()->route('admin.users.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method wishlists()
*
* @uses to view the wishlists of user based on user_id
*
* @created Karthick
*
* @updated
*
* @param object $request - user_id
*
* @return View page
*
*/
public function wishlists(UserGetRequest $request) {
try {
$user = User::find($request->user_id, ['name']);
$wishlists = Wishlist::with(['product:id,name'])->where(['user_id' => $request->user_id])->paginate($this->take);
return view('admin.users.wishlists')
->with('page', 'users')
->with('sub_page', 'users-view')
->with(compact(['wishlists', 'user']));
} catch (Exception $e) {
return redirect()->route('admin.users.index')->with('flash_error', $e->getMessage());
}
}
/**
* @method users_export()
*
* @uses to export users in excel format
*
* @created Karthick
*
* @updated
*
* @param
*
* @return
*
*/
public function users_export(Request $request) {
try {
$file_format = $request->file_format ? : '.xlsx';
$filename = routefreestring(Setting::get('site_name'))."-".now()."-".uniqid().$file_format;
return Excel::download(new UsersExport($request), $filename);
} catch(\Exception $e) {
return redirect()->route('admin.users.index')->with('flash_error' , $e->getMessage());
}
}
/**
* @method users_email_status()
*
* @uses verify the user email
*
* @created Shakthi
*
* @updated
*
* @param object $request - User Id
*
* @return redirect back page with status of the user email verification
*/
public function users_email_status(UserGetRequest $request) {
try {
DB::beginTransaction();
$user = User::find($request->user_id);
$result = $user->update(['is_email_verified' => $user->is_email_verified ? USER_EMAIL_NOT_VERIFIED : USER_EMAIL_VERIFIED]);
throw_if(!$result, new Exception(tr('user_verify_status_update_failed')));
$message = $user->is_email_verified ? tr('user_email_verify_success') : tr('user_email_unverify_success');
DB::commit();
return back()->with('flash_success', $message);
} catch(Exception $e) {
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_two_step_status()
*
* @uses verify the user two step auth disable
*
* @created Shakthi
*
* @updated
*
* @param object $request - User Id
*
* @return redirect back page with status of the user two step auth disable
*/
public function users_two_step_status(UserGetRequest $request) {
try {
DB::beginTransaction();
$user = User::find($request->user_id);
throw_if($user->is_two_step_auth_enabled == NO, new Exception(tr('two_step_auth_not_enable')));
$result = $user->update(['is_two_step_auth_enabled' => NO]);
throw_if(!$result, new Exception(tr('two_step_auth_disable_failed')));
DB::commit();
return back()->with('flash_success', tr('two_step_auth_disable_success'));
} catch(Exception $e) {
DB::rollback();
return back()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager