mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-07-31 05:16:49 -04:00
Admin customer job settings for category recipient emails and remove prices on prepaid subscrptions
149 lines
4.3 KiB
PHP
149 lines
4.3 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;
|
|
use Modules\WTIJobBoard\Services\JobRequestSettingsService;
|
|
use Modules\Subscription\Repositories\PaymentCodeRepository;
|
|
|
|
class CustomerAdminController extends Controller
|
|
{
|
|
protected $customerService;
|
|
protected $paymentCodeRepository;
|
|
|
|
|
|
public function __construct(CustomerService $customerService)
|
|
{
|
|
$this->customerService = $customerService;
|
|
$this->settingService = new JobRequestSettingsService;
|
|
$this->categoryService = new JobRequestCategoriesService();
|
|
$this->paymentCodeRepository = new PaymentCodeRepository();
|
|
}
|
|
|
|
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);
|
|
}
|
|
}
|
|
|
|
public function settings($id){
|
|
|
|
try {
|
|
|
|
$settings = $this->settingService->settings($id);
|
|
|
|
return response()->json([
|
|
'settings' => $settings
|
|
]);
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function saveSettings($id, Request $request){
|
|
|
|
$request->validate([
|
|
'settings' => 'array',
|
|
'settings.*.email' => 'nullable|email'
|
|
]);
|
|
|
|
$this->settingService->save($request,$id);
|
|
|
|
return response()->json([
|
|
'message' => 'Settings successfully saved.'
|
|
]);
|
|
}
|
|
|
|
public function validatePaymentCode($id, Request $request)
|
|
{
|
|
$request->validate([
|
|
'code' => 'required'
|
|
]);
|
|
|
|
try {
|
|
|
|
return $this->paymentCodeRepository->validate($request->code);
|
|
|
|
} catch (\Exception $e) {
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
|
|
public function applyPaymentCode($id, Request $request)
|
|
{
|
|
try {
|
|
|
|
return $this->paymentCodeRepository->apply($request->code,$id);
|
|
|
|
} catch(Exception $e){
|
|
return response()->json([
|
|
'message' => $e->getMessage()
|
|
], 500);
|
|
}
|
|
}
|
|
} |