Viewing File: /home/ubuntu/shop-website-base/app/Http/Controllers/Admin/UserController.php
<?php
namespace App\Http\Controllers\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Helpers\Helper, App\Helpers\EnvEditorHelper;
use DB, Hash, Exception, File, Setting, Validator;
use App\Models\User, App\Models\Settings;
use App\Jobs\SendEmailJob;
use Carbon\Carbon;
class UserController extends Controller {
/**
* Create a new controller instance.
*
* @return void
*/
protected $paginate_count;
public function __construct() {
$this->middleware('auth:admin');
$this->paginate_count = 10;
}
/**
* @method users_index()
*
* @uses To list out users details
*
* @created Arun
*
* @updated Arun
*
* @param
*
* @return return view page
*
*/
public function users_index(Request $request) {
$base_query = User::orderBy('updated_at','desc');
if($request->search_key) {
$base_query = $base_query
->where('name','LIKE','%'.$request->search_key.'%')
->orWhere('email','LIKE','%'.$request->search_key.'%')
->orWhere('mobile','LIKE','%'.$request->search_key.'%');
}
if($request->today_users){
$base_query->whereDate('created_at', Carbon::today());
}
$users = $base_query->paginate($this->paginate_count);
return view('admin.users.index')
->with('main_page','users_crud')
->with('page','users')
->with('sub_page' , 'users-index')
->with('users' , $users);
}
/**
* @method users_create()
*
* @uses To create user details
*
* @created Arun
*
* @updated Arun
*
* @param
*
* @return return view 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_save()
*
* @uses To save the users details of new/existing user object based on details
*
* @created Arun
*
* @updated Arun
*
* @param object request - User Form Data
*
* @return success message
*
*/
public function users_save(Request $request) {
try {
DB::begintransaction();
$rules = [
'name' => 'required|max:191',
'email' => $request->user_id ? 'nullable|email|max:191|unique:users,email,'.$request->user_id.',id' : 'nullable|email|max:191|unique:users,email,NULL,id',
'password' => $request->user_id ? "" : 'required|min:6',
'mobile' => $request->user_id ? 'required|digits_between:6,13|unique:users,mobile,'.$request->user_id.',id' : 'required|digits_between:6,13|unique:users,mobile,NULL,id',
'picture'=> 'mimes:jpg,png,jpeg|max:2048|nullable',
'user_id' => 'nullable|exists:users,id',
];
Helper::custom_validator($request->all(), $rules);
if (strlen($request->mobile) == substr_count($request->mobile, 0)) {
return redirect()->back()->withInput()->with('flash_error', tr('mobile_validate_0'));
}
$user = $request->user_id ? User::find($request->user_id) : new User;
$is_new_user = NO;
if($user->id) {
$message = tr('user_updated_success');
} else {
$is_new_user = YES;
$user->password = ($request->password) ? \Hash::make($request->password) : null;
$message = tr('user_created_success');
$user->email_verified_at = date('Y-m-d H:i:s');
$user->is_verified = USER_EMAIL_VERIFIED;
$user->login_by = 'manual';
}
$user->name = $request->name ?: $user->name;
$user->email = $request->email ?: $user->email;
$user->mobile = $request->mobile ?: '';
$user->about = $request->about ?: '';
$user->gender = $request->gender ?? 'male';
// Upload picture
if($request->hasFile('picture')) {
if($request->user_id) {
Helper::storage_delete_file($user->picture, FILE_PATH_USER);
// Delete the old pic
}
$user->picture = Helper::storage_upload_file($request->file('picture'), FILE_PATH_USER);
}
if($user->save()) {
if($is_new_user == YES) {
if(!$request->user_id && $request->email!=''){
$email_data['subject'] = tr('user_welcome_title').' '.Setting::get('site_name');
$email_data['page'] = "emails.users.welcome";
$email_data['data'] = $user;
$email_data['email'] = $user->email;
$email_data['name'] = $user->name;
$email_data['verification_code'] = $user->verification_code;
$this->dispatch(new \App\Jobs\SendEmailJob($email_data));
}
$user->is_verified = USER_EMAIL_VERIFIED;
$user->save();
}
DB::commit();
return redirect()->route('admin.users.view', ['user_id' => $user->id])->with('flash_success', $message);
}
throw new Exception(tr('user_save_failed'),101);
} catch(Exception $e){
DB::rollback();
return redirect()->back()->withInput()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_view()
*
* @uses view the user details based on users id
*
* @created Arun
*
* @updated Arun
*
* @param object $request - User Id
*
* @return View page
*
*/
public function users_view(Request $request) {
try {
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
return view('admin.users.view')
->with('page', 'users')
->with('sub_page','users-view')
->with('user' , $user);
} catch (Exception $e) {
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_edit()
*
* @uses To display and update user details based on the user id
*
* @created Arun
*
* @updated Arun
*
* @param object $request - User Id
*
* @return redirect view page
*
*/
public function users_edit(Request $request) {
try {
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
return view('admin.users.edit')
->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 update user status as DECLINED/APPROVED based on users id
*
* @created Arun
*
* @updated
*
* @param object $request - User Id
*
* @return response success/failure message
*
**/
public function users_status(Request $request) {
try {
DB::beginTransaction();
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
$user->status = $user->status ? DECLINED : APPROVED ;
if($user->save()) {
DB::commit();
$message = $user->status ? tr('user_approve_success') : tr('user_decline_success');
return redirect()->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 delete the user details based on user id
*
* @created Arun
*
* @updated
*
* @param object $request - User Id
*
* @return response of success/failure details with view page
*
*/
public function users_delete(Request $request) {
try {
DB::begintransaction();
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
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 redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method users_verify_status()
*
* @uses verify for the user
*
* @created Arun
*
* @updated
*
* @param integer $request id
*
* @return redirect back page with status of the user verification
*/
public function users_verify_status(Request $request) {
try {
DB::beginTransaction();
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
$user->is_verified = $user->is_verified ? USER_EMAIL_NOT_VERIFIED : USER_EMAIL_VERIFIED;
if($user->save()) {
DB::commit();
$message = $user->is_verified ? tr('user_verify_success') : tr('user_unverify_success');
return redirect()->route('admin.users.index')->with('flash_success', $message);
}
throw new Exception(tr('user_verify_change_failed'));
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method user_refunds()
*
* @uses view provider redeems
*
* @created Arun
*
* @updated
*
* @param Integer $request - provider id
*
* @return view page
*
**/
public function user_refunds(Request $request) {
$base_query = UserRefund::orderBy('updated_at','desc');
if($request->user_id) {
$base_query = $base_query->where('user_refunds.user_id',$request->user_id);
}
$search_key = $request->search_key;
if($search_key) {
$base_query = $base_query
->whereHas('user', function($q) use ($search_key) {
return $q->Where('users.name','LIKE','%'.$search_key.'%');
});
}
$user_refunds = $base_query->paginate($this->paginate_count);
foreach ($user_refunds as $key => $user_refund) {
$user_refund->paid_date = common_date($user_refund->paid_date);
}
return view('admin.revenues.user_refunds')
->with('page', 'revenues')
->with('sub_page','revenues-user_refunds')
->with('user_refunds', $user_refunds);
}
/**
* @method user_refunds_payment()
*
* @uses view provider redeems
*
* @created Arun
*
* @updated
*
* @param Integer $request - provider id
*
* @return view page
*
**/
public function user_refunds_payment(Request $request) {
try {
DB::beginTransaction();
$rules = [
'amount' => 'required|numeric|gt:0',
];
Helper::custom_validator($request->all(), $rules);
$user_refund = UserRefund::find($request->user_refund_id);
if(!$user_refund) {
throw new Exception(api_error(231), 231);
}
$user_refund->paid_date = date('Y-m-d H:i:s');
$user_refund->paid += $request->amount;
$user_refund->remaining = $user_refund->total - $user_refund->paid;
if($user_refund->save()) {
DB::commit();
//Email Notification for user - Refund Payments
if (Setting::get('is_email_notification') == YES) {
$user = User::find($user_refund->user_id);
$email_data['subject'] = Setting::get('site_name').' '.tr('user_refund_success');
$email_data['page'] = "emails.users.refund_payment";
$email_data['email'] = $user->email;
$data['refund_amount'] = $request->amount;
$data['user'] = $user->toArray();
$email_data['data'] = $data;
$this->dispatch(new SendEmailJob($email_data));
}
return redirect()->back()->with('flash_success', api_success(224));
}
} catch(Exception $e) {
DB::rollback();
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method user_wallets_index()
*
* @uses To list out users wishlist details
*
* @created Arun
*
* @updated Arun
*
* @param
*
* @return return view page
*
*/
public function user_wallets_index(Request $request) {
try {
$user_wallets = UserWallet::where('user_id',$request->user_id)->orderBy('updated_at','desc')->paginate($this->paginate_count);
return view('admin.users.user_wallets')
->with('page','users')
->with('sub_page' , 'users-view')
->with('user_wallets' , $user_wallets);
} catch (Exception $e) {
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method wishlists_index()
*
* @uses To list out users wishlist details
*
* @created Arun
*
* @updated Arun
*
* @param
*
* @return return view page
*
*/
public function wishlists_index(Request $request) {
try {
$user = User::find($request->user_id);
if(!$user) {
throw new Exception(tr('user_not_found'), 101);
}
$wishlists = Wishlist::where('user_id',$request->user_id)->orderBy('updated_at','desc')->paginate($this->paginate_count);
return view('admin.users.wishlists')
->with('page','users')
->with('sub_page' , 'users-view')
->with('user' , $user)
->with('wishlists' , $wishlists);
} catch (Exception $e) {
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
/**
* @method wishlists_delete()
*
* @uses delete the wishlist details based on wishlist id
*
* @created Arun
*
* @updated
*
* @param object $request - wishlist Id
*
* @return response of success/failure details with view page
*
*/
public function wishlists_delete(Request $request) {
try {
DB::begintransaction();
$wishlist = Wishlist::find($request->wishlist_id);
if(!$wishlist) {
throw new Exception(tr('wishlist_not_found'), 101);
}
if($wishlist->delete()) {
DB::commit();
return redirect()->back()->with('flash_success',tr('wishlist_deleted_success'));
}
throw new Exception(tr('wishlist_delete_failed'));
} catch(Exception $e){
DB::rollback();
return redirect()->back()->with('flash_error', $e->getMessage());
}
}
}
Back to Directory
File Manager