diff --git a/app/Http/Controllers/Shop/CustomerController.php b/app/Http/Controllers/Shop/CustomerController.php index 35e1ab53..0f156486 100644 --- a/app/Http/Controllers/Shop/CustomerController.php +++ b/app/Http/Controllers/Shop/CustomerController.php @@ -5,6 +5,7 @@ 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 { @@ -56,6 +57,65 @@ class CustomerController extends Controller 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, + ])->render(); + + return response()->json([ + 'success' => true, + 'html' => $html, + 'message' => __('Adresse enregistrée.'), + 'id' => $address->id, + ]); + } + public function delete_address($id) { $address = CustomerAddresses::get($id); diff --git a/resources/views/Shop/Customers/partials/address_item.blade.php b/resources/views/Shop/Customers/partials/address_item.blade.php new file mode 100644 index 00000000..a8352fa1 --- /dev/null +++ b/resources/views/Shop/Customers/partials/address_item.blade.php @@ -0,0 +1,23 @@ +