form address
This commit is contained in:
parent
a2caec5b74
commit
10f3abc047
|
|
@ -53,4 +53,122 @@ class AddressController extends Controller
|
|||
'data' => $villages,
|
||||
];
|
||||
}
|
||||
|
||||
public function update(Request $request, $id)
|
||||
{
|
||||
$request->validate([
|
||||
'province_id' => 'required|exists:provinces,id',
|
||||
'city_id' => 'required|exists:cities,id',
|
||||
'district_id' => 'required|exists:districts,id',
|
||||
'subdistrict_id' => 'required|exists:subdistricts,id',
|
||||
'postal_code' => 'required|string|max:10',
|
||||
'address' => 'required|string|max:255',
|
||||
'is_primary' => 'boolean'
|
||||
]);
|
||||
|
||||
$address = auth()->user()->addresses()->findOrFail($id);
|
||||
|
||||
$address->update([
|
||||
'province_id' => $request->province_id,
|
||||
'city_id' => $request->city_id,
|
||||
'district_id' => $request->district_id,
|
||||
'subdistrict_id' => $request->subdistrict_id,
|
||||
'postal_code' => $request->postal_code,
|
||||
'address' => $request->address,
|
||||
'is_primary' => $request->boolean('is_primary')
|
||||
]);
|
||||
|
||||
// Update location names based on selected IDs
|
||||
$province = Province::find($request->province_id);
|
||||
$city = City::find($request->city_id);
|
||||
$district = District::find($request->district_id);
|
||||
$subdistrict = Subdistrict::find($request->subdistrict_id);
|
||||
|
||||
$address->update([
|
||||
'province_name' => $province?->name,
|
||||
'regency_name' => $city?->name,
|
||||
'district_name' => $district?->name,
|
||||
'village_name' => $subdistrict?->name,
|
||||
]);
|
||||
|
||||
// If set as primary, unset other primary addresses
|
||||
if ($request->boolean('is_primary')) {
|
||||
auth()->user()->addresses()
|
||||
->where('id', '!=', $address->id)
|
||||
->update(['is_primary' => false]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => __('addresses.address_updated_successfully'),
|
||||
'address' => $address->fresh()
|
||||
]);
|
||||
}
|
||||
|
||||
public function store(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'province_id' => 'required|exists:provinces,id',
|
||||
'city_id' => 'required|exists:cities,id',
|
||||
'district_id' => 'required|exists:districts,id',
|
||||
'subdistrict_id' => 'required|exists:subdistricts,id',
|
||||
'postal_code' => 'required|string|max:10',
|
||||
'address' => 'required|string|max:255',
|
||||
'is_primary' => 'boolean'
|
||||
]);
|
||||
|
||||
// Get location names
|
||||
$province = Province::find($request->province_id);
|
||||
$city = City::find($request->city_id);
|
||||
$district = District::find($request->district_id);
|
||||
$subdistrict = Subdistrict::find($request->subdistrict_id);
|
||||
|
||||
$address = auth()->user()->addresses()->create([
|
||||
'label' => 'Address ' . (auth()->user()->addresses()->count() + 1),
|
||||
'province_id' => $request->province_id,
|
||||
'city_id' => $request->city_id,
|
||||
'district_id' => $request->district_id,
|
||||
'subdistrict_id' => $request->subdistrict_id,
|
||||
'province_name' => $province?->name,
|
||||
'regency_name' => $city?->name,
|
||||
'district_name' => $district?->name,
|
||||
'village_name' => $subdistrict?->name,
|
||||
'postal_code' => $request->postal_code,
|
||||
'address' => $request->address,
|
||||
'is_primary' => $request->boolean('is_primary')
|
||||
]);
|
||||
|
||||
// If set as primary, unset other primary addresses
|
||||
if ($request->boolean('is_primary')) {
|
||||
auth()->user()->addresses()
|
||||
->where('id', '!=', $address->id)
|
||||
->update(['is_primary' => false]);
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => __('addresses.address_created_successfully'),
|
||||
'address' => $address
|
||||
]);
|
||||
}
|
||||
|
||||
public function destroy($id)
|
||||
{
|
||||
$address = auth()->user()->addresses()->findOrFail($id);
|
||||
|
||||
// Don't allow deletion if it's the only address
|
||||
if (auth()->user()->addresses()->count() === 1) {
|
||||
return response()->json([
|
||||
'success' => false,
|
||||
'message' => __('addresses.cannot_delete_only_address')
|
||||
], 400);
|
||||
}
|
||||
|
||||
$address->delete();
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => __('addresses.address_deleted_successfully')
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ return [
|
|||
'select_city' => 'Select city...',
|
||||
'district' => 'District',
|
||||
'select_district' => 'Select district...',
|
||||
'village' => 'Village',
|
||||
'select_village' => 'Select village...',
|
||||
'village' => 'Subdistrict',
|
||||
'select_village' => 'Select subdistrict...',
|
||||
'zip_code' => 'ZIP code',
|
||||
'address' => 'Address',
|
||||
'set_as_primary_address' => 'Set as primary address',
|
||||
|
|
@ -29,6 +29,16 @@ return [
|
|||
'please_select_village' => 'Please select your village!',
|
||||
'please_enter_zip_code' => 'Please enter your ZIP code!',
|
||||
'please_enter_address' => 'Please enter your address!',
|
||||
'saving' => 'Saving',
|
||||
'error_saving_address' => 'Error saving address',
|
||||
'address_updated_successfully' => 'Address updated successfully',
|
||||
'address_created_successfully' => 'Address created successfully',
|
||||
'address_deleted_successfully' => 'Address deleted successfully',
|
||||
'cannot_delete_only_address' => 'Cannot delete the only address',
|
||||
'delete' => 'Delete',
|
||||
'cancel' => 'Cancel',
|
||||
'confirm_delete_address' => 'Are you sure you want to delete this address?',
|
||||
'this_action_cannot_be_undone' => 'This action cannot be undone.',
|
||||
'regions' => [
|
||||
'africa' => 'Africa',
|
||||
'asia' => 'Asia',
|
||||
|
|
|
|||
|
|
@ -13,8 +13,8 @@ return [
|
|||
'select_city' => 'Pilih kota...',
|
||||
'district' => 'Kecamatan',
|
||||
'select_district' => 'Pilih kecamatan...',
|
||||
'village' => 'Kelurahan',
|
||||
'select_village' => 'Pilih kelurahan...',
|
||||
'village' => 'Kelurahan/Desa',
|
||||
'select_village' => 'Pilih kelurahan/desa...',
|
||||
'zip_code' => 'Kode Pos',
|
||||
'address' => 'Alamat',
|
||||
'set_as_primary_address' => 'Jadikan alamat utama',
|
||||
|
|
@ -26,9 +26,19 @@ return [
|
|||
'please_select_province' => 'Silakan pilih provinsi Anda!',
|
||||
'please_select_city' => 'Silakan pilih kota Anda!',
|
||||
'please_select_district' => 'Silakan pilih kecamatan Anda!',
|
||||
'please_select_village' => 'Silakan pilih kelurahan Anda!',
|
||||
'please_select_village' => 'Silakan pilih kelurahan/desa Anda!',
|
||||
'please_enter_zip_code' => 'Silakan masukkan kode pos Anda!',
|
||||
'please_enter_address' => 'Silakan masukkan alamat Anda!',
|
||||
'saving' => 'Menyimpan',
|
||||
'error_saving_address' => 'Terjadi kesalahan saat menyimpan alamat',
|
||||
'address_updated_successfully' => 'Alamat berhasil diperbarui',
|
||||
'address_created_successfully' => 'Alamat berhasil dibuat',
|
||||
'address_deleted_successfully' => 'Alamat berhasil dihapus',
|
||||
'cannot_delete_only_address' => 'Tidak dapat menghapus satu-satunya alamat',
|
||||
'delete' => 'Hapus',
|
||||
'cancel' => 'Batal',
|
||||
'confirm_delete_address' => 'Apakah Anda yakin ingin menghapus alamat ini?',
|
||||
'this_action_cannot_be_undone' => 'Tindakan ini tidak dapat dibatalkan.',
|
||||
'regions' => [
|
||||
'africa' => 'Afrika',
|
||||
'asia' => 'Asia',
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -75,6 +75,9 @@ Route::put('/profile/password', [ProfileController::class, 'updatePassword'])->n
|
|||
|
||||
|
||||
Route::get('/addresses', [AddressController::class, 'index'])->name('addresses');
|
||||
Route::post('/addresses', [AddressController::class, 'store'])->name('addresses.store');
|
||||
Route::put('/addresses/{id}', [AddressController::class, 'update'])->name('addresses.update');
|
||||
Route::delete('/addresses/{id}', [AddressController::class, 'destroy'])->name('addresses.destroy');
|
||||
Route::get('/addresses/provinces', [AddressController::class, 'provinces'])->name('addresses.provinces');
|
||||
Route::get('/addresses/cities/{provinceId}', [AddressController::class, 'cities'])->name('addresses.cities');
|
||||
Route::get('/addresses/districts/{provinceId}', [AddressController::class, 'districts'])->name('addresses.districts');
|
||||
|
|
|
|||
Loading…
Reference in New Issue