Files
wticreatorstudio/Modules/Customer/Http/Controllers/CustomerAdminController.php
T
2024-02-26 03:46:26 -05:00

82 lines
2.6 KiB
PHP

<?php
namespace Modules\Customer\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use App\Models\User;
use Modules\Customer\Services\CustomerService;
use App\Repositories\UserRepository;
use Exception;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
use Modules\Customer\Services\AugmentationService;
use Modules\WTIJobBoard\Services\JobRequestCategoriesService;
class CustomerAdminController extends Controller
{
protected $customerService;
public function __construct(CustomerService $customerService)
{
$this->customerService = $customerService;
$this->categoryService = new JobRequestCategoriesService();
}
public function data($id){
$data['customer'] = $this->customerService->find($id);
$data['job_requests'] = \Modules\WTIJobBoard\Entities\JobRequest::with(['category', 'video', 'product', 'tracks.status', 'tracks.metas', 'shipment'])->latest('id')->where('client_id', $id)->whereNull('deleted_at')->get();
return response()->json($data);
}
public function credits($id){
try {
$credits = $this->customerService->credits($id);
$categories = $this->categoryService->all(['active' => 1]);
return response()->json([
'credits' => $credits,
'categories' => $categories
]);
} catch(Exception $e){
return response()->json([
'message' => $e->getMessage()
], 500);
}
}
public function updateCustomerProfile($id, Request $request)
{
$request->validate([
'first_name' => 'required|max:255',
'last_name' => 'nullable|max:255',
'email' => ['required', 'string', 'max:255', 'unique:users,email,'.$id],
'phone' => 'required|max:255',
'password' => 'sometimes|nullable|confirmed|min:8',
'is_active' => 'required',
'storefront' => 'required',
'company_name' => 'required',
'brand_name' => 'required',
'company_address' => 'required'
]);
try {
$user = $this->customerService->update($request, $id);
if($user){
return response()->json([
'customer' => $user->with('wallet_balances', 'orders', 'customerAddresses', 'creditPoints', 'subscriptions')->first(),
'message' => 'Customer Profile Updated Successfully.'
]);
}
} catch(Exception $e){
return response()->json([
'message' => $e->getMessage()
], 500);
}
}
}