📄 AddressController.php
📁 Path: /home/skhata/new.chandrapharma.com/app/Modules/User/Controllers/AddressController.php
📊 Size: 4.04 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php
namespace App\Modules\User\Controllers;
use App\Http\Controllers\Controller;
use App\Modules\User\Models\Address;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AddressController extends Controller
{
public function index()
{
$addresses = Auth::user()->addresses()->orderByDesc('is_default')->get();
return view('account.addresses.index', compact('addresses'));
}
public function create()
{
return view('account.addresses.create');
}
public function store(Request $request)
{
$v = $request->validate([
'full_name' => 'required|string|max:255',
'address_line1' => 'required|string|max:255',
'address_line2' => 'nullable|string|max:255',
'city' => 'required|string|max:100',
'state' => 'nullable|string|max:100',
'postal_code' => 'nullable|string|max:20',
'country' => 'required|string|size:2',
'phone' => 'nullable|string|max:20',
'is_default' => 'sometimes|boolean',
]);
if ($request->boolean('is_default')) {
Auth::user()->addresses()->update(['is_default' => false]);
}
$parts = explode(' ', trim($v['full_name']), 2);
Auth::user()->addresses()->create([
'addressable_type' => Auth::user()::class,
'addressable_id' => Auth::id(),
'type' => 'shipping',
'first_name' => $parts[0],
'last_name' => $parts[1] ?? '',
'phone' => $v['phone'] ?? null,
'address_line_1' => $v['address_line1'],
'address_line_2' => $v['address_line2'] ?? null,
'city' => $v['city'],
'state' => $v['state'] ?? null,
'zip' => $v['postal_code'] ?? null,
'country' => $v['country'],
'is_default' => $request->boolean('is_default'),
]);
return redirect()->route('account.addresses.index')->with('success', 'Address saved.');
}
public function edit(Address $address)
{
abort_unless($address->addressable_id === Auth::id(), 403);
return view('account.addresses.edit', compact('address'));
}
public function update(Request $request, Address $address)
{
abort_unless($address->addressable_id === Auth::id(), 403);
$v = $request->validate([
'full_name' => 'required|string|max:255',
'address_line1' => 'required|string|max:255',
'address_line2' => 'nullable|string|max:255',
'city' => 'required|string|max:100',
'state' => 'nullable|string|max:100',
'postal_code' => 'nullable|string|max:20',
'country' => 'required|string|size:2',
'phone' => 'nullable|string|max:20',
'is_default' => 'sometimes|boolean',
]);
if ($request->boolean('is_default')) {
Auth::user()->addresses()->where('id', '!=', $address->id)->update(['is_default' => false]);
}
$parts = explode(' ', trim($v['full_name']), 2);
$address->update([
'first_name' => $parts[0],
'last_name' => $parts[1] ?? '',
'phone' => $v['phone'] ?? null,
'address_line_1'=> $v['address_line1'],
'address_line_2'=> $v['address_line2'] ?? null,
'city' => $v['city'],
'state' => $v['state'] ?? null,
'zip' => $v['postal_code'] ?? null,
'country' => $v['country'],
'is_default' => $request->boolean('is_default'),
]);
return redirect()->route('account.addresses.index')->with('success', 'Address updated.');
}
public function destroy(Address $address)
{
abort_unless($address->addressable_id === Auth::id(), 403);
$address->delete();
return back()->with('success', 'Address deleted.');
}
}