mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-08-02 21:16:12 -04:00
187 lines
5.5 KiB
PHP
187 lines
5.5 KiB
PHP
<?php
|
|
|
|
namespace Modules\Customer\Http\Controllers;
|
|
use App\Models\Order;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Routing\Controller;
|
|
use Modules\Customer\Http\Requests\ProfileRequest;
|
|
use Modules\Customer\Http\Requests\CreateAddressRequest;
|
|
use Modules\Customer\Entities\CustomerAddress;
|
|
use Modules\Customer\Rules\MatchOldPassword;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Hash;
|
|
use App\Traits\ImageStore;
|
|
use Illuminate\Support\Facades\File;
|
|
use Modules\Customer\Services\CustomerService;
|
|
use App\Repositories\UserRepository;
|
|
use Brian2694\Toastr\Facades\Toastr;
|
|
use Modules\Setup\Entities\Country;
|
|
use Exception;
|
|
use Illuminate\Support\Facades\DB;
|
|
use Illuminate\Validation\Rule;
|
|
use Modules\UserActivityLog\Traits\LogActivity;
|
|
use Yajra\DataTables\Facades\DataTables;
|
|
use Modules\Subscription\Entities\UserCredit;
|
|
use Modules\Customer\Services\AugmentationService;
|
|
use Illuminate\Support\Facades\URL;
|
|
use Modules\WTIALaCarte\Entities\AlacarteOrder;
|
|
use App\Traits\SendMail;
|
|
|
|
|
|
class CustomerAccountController extends Controller
|
|
{
|
|
use ImageStore, SendMail;
|
|
protected $customerService;
|
|
|
|
public function __construct(CustomerService $customerService){
|
|
$this->customerService = $customerService;
|
|
}
|
|
|
|
public function account()
|
|
{
|
|
$customer = auth()->user();
|
|
$orders = AlacarteOrder::with(['user','items.product'])->where('user_id',$customer->id)->latest()->get();
|
|
return view('customer::account')->with('customer',$customer)->with('orders',$orders);
|
|
}
|
|
|
|
public function updateProfile(Request $request)
|
|
{
|
|
|
|
try {
|
|
|
|
$request->validate([
|
|
'avatar' => 'sometimes|nullable|image',
|
|
'first_name' => 'required|max:255',
|
|
'last_name' => 'nullable|max:255',
|
|
'phone' => 'required|max:255',
|
|
'date_of_birth' => 'nullable|date',
|
|
'description' => 'sometimes|nullable'
|
|
]);
|
|
|
|
$customer = auth()->user();
|
|
$customer->first_name = $request->first_name;
|
|
$customer->last_name = $request->last_name;
|
|
$customer->phone = $request->phone;
|
|
$customer->date_of_birth = $request->date_of_birth;
|
|
$customer->description = $request->description;
|
|
|
|
$file = $request->file('avatar');
|
|
if ($request->hasFile('avatar')) {
|
|
$this->deleteImage($customer->avatar);
|
|
$customer->avatar= $this->saveAvatar($file,200,200);
|
|
}
|
|
|
|
|
|
$customer->save();
|
|
|
|
return response()->json([
|
|
'message' => 'Profile Updated Successfully.'
|
|
]);
|
|
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function updatePassword(Request $request)
|
|
{
|
|
|
|
try {
|
|
|
|
$request->validate([
|
|
'current_password' => 'required|string',
|
|
'password' => 'required|min:8|confirmed',
|
|
'password_confirmation' => 'required'
|
|
],
|
|
[
|
|
'password.min' => 'Minimun password length is 8!'
|
|
]);
|
|
|
|
$customer = auth()->user();
|
|
|
|
if (!Hash::check($request->current_password, $customer->password)) {
|
|
return response()->json([
|
|
'message' => 'Current password does not match.'
|
|
], 500);
|
|
}
|
|
|
|
$customer->password = Hash::make($request->password);
|
|
$customer->save();
|
|
|
|
return response()->json([
|
|
'message' => 'Password Change Successfully.'
|
|
]);
|
|
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function updateEmail(Request $request)
|
|
{
|
|
|
|
try {
|
|
|
|
$customer = auth()->user();
|
|
|
|
$request->validate([
|
|
'email' => 'required|string|email|max:255|unique:users,email,'.$customer->id
|
|
]);
|
|
|
|
$action_link = URL::temporarySignedRoute('customer.account.update-email-verify', 60 * 60, [
|
|
'user' => encrypt($customer->id),
|
|
'email' => $request->email
|
|
]);
|
|
|
|
$this->sendChangeEmailVerification($request->email, $action_link);
|
|
|
|
return response()->json([
|
|
'message' => 'Please check your email for a verification link to activate your new email adddress.'
|
|
]);
|
|
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function verifyUpdateEmail(Request $request)
|
|
{
|
|
|
|
try {
|
|
|
|
if (!$request->hasValidSignature()) {
|
|
abort(403);
|
|
}
|
|
|
|
$customer = auth()->user();
|
|
if($customer->id == decrypt($request->user)){
|
|
|
|
$this->sendChangeEmailNotification($customer->email, $request->email);
|
|
|
|
$customer->email = $request->email;
|
|
$customer->save();
|
|
|
|
|
|
Toastr::success('New Email Successfully Verified', __('common.success'));
|
|
return redirect()->to('/account');
|
|
|
|
} else {
|
|
abort(403);
|
|
}
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
} |