144 lines
4.1 KiB
PHP
144 lines
4.1 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Shop;
|
|
|
|
use App\Repositories\Shop\CustomerAddresses;
|
|
use App\Repositories\Shop\Customers;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Validator;
|
|
|
|
class CustomerController extends Controller
|
|
{
|
|
public function profile()
|
|
{
|
|
$data = Customers::editProfile(Customers::getId());
|
|
|
|
return view('Shop.Customers.profile', $data);
|
|
}
|
|
|
|
public static function checkAuth()
|
|
{
|
|
if (Customers::isNotConnected()) {
|
|
return redirect()->route('Shop.login');
|
|
}
|
|
}
|
|
|
|
public function modalProfile($id = false)
|
|
{
|
|
$data = [
|
|
'customer' => Customers::get($id),
|
|
];
|
|
|
|
return view('Shop.Customers.partials.registration', $data);
|
|
}
|
|
|
|
public function edit()
|
|
{
|
|
$data = [
|
|
'customer' => Customers::edit(Customers::getId()),
|
|
];
|
|
|
|
return view('Shop.Customers.edit', $data);
|
|
}
|
|
|
|
public function storeProfileAjax(Request $request)
|
|
{
|
|
$data = $request->all();
|
|
$customer = Customers::store($data);
|
|
|
|
return response()->json(['error' => 0]);
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$data = $request->all();
|
|
$customer = Customers::storeFull($data);
|
|
|
|
return redirect()->route('Shop.Customers.edit');
|
|
}
|
|
|
|
public function storeAddress(Request $request)
|
|
{
|
|
if (Customers::isNotConnected()) {
|
|
return response()->json(['message' => __('Authentification requise.')], 403);
|
|
}
|
|
|
|
$prefix = $request->input('prefix');
|
|
$types = ['deliveries' => 1, 'invoices' => 2];
|
|
|
|
if (! array_key_exists($prefix, $types)) {
|
|
return response()->json(['message' => __('Type d\'adresse inconnu.')], 422);
|
|
}
|
|
|
|
$addressData = $request->input($prefix, []);
|
|
|
|
$validator = Validator::make($addressData, [
|
|
'name' => ['nullable', 'string', 'max:150'],
|
|
'address' => ['required', 'string', 'max:255'],
|
|
'address2' => ['nullable', 'string', 'max:255'],
|
|
'zipcode' => ['required', 'string', 'max:30'],
|
|
'city' => ['required', 'string', 'max:255'],
|
|
], [
|
|
'address.required' => __('Merci de renseigner l\'adresse.'),
|
|
'zipcode.required' => __('Merci de renseigner le code postal.'),
|
|
'city.required' => __('Merci de renseigner la ville.'),
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return response()->json([
|
|
'message' => __('Merci de vérifier les informations saisies.'),
|
|
'errors' => $validator->errors(),
|
|
], 422);
|
|
}
|
|
|
|
$data = $validator->validated();
|
|
$customerId = Customers::getId();
|
|
$data['customer_id'] = $customerId;
|
|
$data['type'] = $types[$prefix];
|
|
|
|
if (empty($data['name'])) {
|
|
$data['name'] = Customers::getName($customerId);
|
|
}
|
|
|
|
$address = CustomerAddresses::store($data);
|
|
|
|
$html = view('Shop.Customers.partials.address_item', [
|
|
'address' => $address->toArray(),
|
|
'prefix' => $prefix,
|
|
'with_name' => true,
|
|
'selected' => $address->id,
|
|
])->render();
|
|
|
|
return response()->json([
|
|
'success' => true,
|
|
'html' => $html,
|
|
'message' => __('Adresse enregistrée.'),
|
|
'id' => $address->id,
|
|
]);
|
|
}
|
|
|
|
public function delete_address($id)
|
|
{
|
|
$address = CustomerAddresses::get($id);
|
|
|
|
if (! $address || (int) $address->customer_id !== (int) Customers::getId()) {
|
|
abort(404);
|
|
}
|
|
|
|
$remaining = CustomerAddresses::getModel()
|
|
->byCustomer($address->customer_id)
|
|
->byType($address->type)
|
|
->count();
|
|
|
|
if ($remaining <= 1) {
|
|
return redirect()->route('Shop.Customers.edit')
|
|
->with('growl', [__('Vous devez conserver au moins une adresse par type.'), 'warning']);
|
|
}
|
|
|
|
CustomerAddresses::destroy($id);
|
|
|
|
return redirect()->route('Shop.Customers.edit')
|
|
->with('growl', [__('Adresse supprimée.'), 'success']);
|
|
}
|
|
}
|