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); CustomerAddresses::setDefault($customerId, $address->id, $types[$prefix]); $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); CustomerAddresses::ensureDefault($address->customer_id, $address->type); return redirect()->route('Shop.Customers.edit') ->with('growl', [__('Adresse supprimée.'), 'success']); } }