186 lines
7.4 KiB
PHP
Executable File
186 lines
7.4 KiB
PHP
Executable File
<?php
|
|
|
|
namespace Modules\M3\Http\Controllers;
|
|
|
|
use Datatables;
|
|
use Illuminate\Http\Request;
|
|
use Modules\M3\Helpers\CAProvinces;
|
|
use Modules\M3\Helpers\USStates;
|
|
use Modules\M3\Models\ShipTo;
|
|
|
|
class ShipToController extends Controller
|
|
{
|
|
public function index(Request $request)
|
|
{
|
|
if ($request->ajax()) {
|
|
$data = ShipTo::select('*');
|
|
|
|
return Datatables::of($data)
|
|
->addIndexColumn()
|
|
->addColumn('checkbox', function ($row) {
|
|
return '';
|
|
})
|
|
->addColumn('action', function ($row) {
|
|
$actionBtn = '<a href="' . url('/ship-to/' . trim($row->AUSHSHZP) . '/' . trim($row->AUSHWHS) . '/edit') . '" class="edit btn btn-primary btn-sm">Edit</a> ';
|
|
$actionBtn .= '<form method="POST" action="' . url('ship-to/' . urlencode(trim($row->AUSHSHZP)) . '/' . urlencode(trim($row->AUSHWHS))) . '" style="display:inline">';
|
|
$actionBtn .= csrf_field() . method_field('DELETE');
|
|
$actionBtn .= '<button type="submit" class="btn btn-danger btn-sm" onclick="return confirm(\'Are you sure?\')">Delete</button></form>';
|
|
|
|
return $actionBtn;
|
|
})
|
|
->rawColumns(['checkbox', 'action'])
|
|
->make(true);
|
|
}
|
|
|
|
return view('m3::liberty-theme.pages.ship-to.index');
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
// US
|
|
$uSstates = USStates::all();
|
|
// CA
|
|
$cAstates = CAProvinces::all();
|
|
|
|
// All States
|
|
$states = array_merge($uSstates, $cAstates);
|
|
|
|
return view('m3::liberty-theme.pages.ship-to.create', compact('states'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
$validated = $request->validate(
|
|
[
|
|
'AUSTCN' => 'nullable|max:11',
|
|
'AUSHSHNM' => 'required|max:36',
|
|
'AUSHSHA1' => 'required|max:36',
|
|
'AUSHSHA2' => 'required|max:36',
|
|
'AUSHSHA3' => 'nullable|max:36',
|
|
'AUSHSHA4' => 'nullable|max:36',
|
|
'AUSHSHCI' => 'required|max:20',
|
|
'AUSHSHST' => 'required|max:2',
|
|
'AUSHSHZP' => 'required|max:10',
|
|
'AUSHSHCT' => 'required|max:3',
|
|
'AUSHWHS' => 'required|max:3',
|
|
],
|
|
[
|
|
'AUSHSHNM.required' => 'Name is required',
|
|
'AUSHSHA1.required' => 'Address 1 is required',
|
|
'AUSHSHA2.required' => 'Address 2 is required',
|
|
'AUSHSHCI.required' => 'City is required',
|
|
'AUSHSHST.required' => 'State is required',
|
|
'AUSHSHZP.required' => 'Zip code is required',
|
|
'AUSHSHCT.required' => 'Country is required',
|
|
'AUSHWHS.required' => 'Warehouse is required',
|
|
|
|
'AUSTCN.max' => 'Customer Number cannot exceed 11 characters',
|
|
'AUSHSHNM.max' => 'Name cannot exceed 36 characters',
|
|
'AUSHSHA1.max' => 'Address 1 cannot exceed 36 characters',
|
|
'AUSHSHA2.max' => 'Address 2 cannot exceed 36 characters',
|
|
'AUSHSHA3.max' => 'Address 3 cannot exceed 36 characters',
|
|
'AUSHSHA4.max' => 'Address 4 cannot exceed 36 characters',
|
|
'AUSHSHCI.max' => 'City cannot exceed 20 characters',
|
|
'AUSHSHST.max' => 'State cannot exceed 2 characters',
|
|
'AUSHSHZP.max' => 'Zip code cannot exceed 10 characters',
|
|
'AUSHSHCT.max' => 'Country cannot exceed 3 characters',
|
|
'AUSHWHS.max' => 'Warehouse cannot exceed 3 characters',
|
|
],
|
|
);
|
|
$validated['AUSTCN'] = $validated['AUSTCN'] ?? ' ';
|
|
|
|
$model = new ShipTo;
|
|
$model->fill($validated);
|
|
$success = $model->save();
|
|
if ($success) {
|
|
return redirect()->route('m3.ship-to.index')->with('success', 'Record created successfully.');
|
|
} else {
|
|
return redirect()->back()
|
|
->withErrors(['unique' => 'The combination of ZipCode and Warehouse must be unique.'])
|
|
->withInput();
|
|
}
|
|
}
|
|
|
|
public function edit($aushshzp, $aushwhs)
|
|
{
|
|
// US
|
|
$uSstates = USStates::all();
|
|
// CA
|
|
$cAstates = CAProvinces::all();
|
|
|
|
// All States
|
|
$states = array_merge($uSstates, $cAstates);
|
|
|
|
$shipTo = ShipTo::where('AUSHSHZP', $aushshzp)
|
|
->where('AUSHWHS', $aushwhs)
|
|
->firstOrFail();
|
|
|
|
return view('m3::liberty-theme.pages.ship-to.edit', compact('shipTo', 'states'));
|
|
}
|
|
|
|
public function update(Request $request, $aushshzp, $aushwhs)
|
|
{
|
|
$validated = array_map(function ($value) {
|
|
return $value === null ? '' : $value;
|
|
}, $request->validate(
|
|
[
|
|
'AUSTCN' => 'nullable|string|max:11',
|
|
'AUSHSHNM' => 'required|max:36',
|
|
'AUSHSHA1' => 'required|max:36',
|
|
'AUSHSHA2' => 'required|max:36',
|
|
'AUSHSHA3' => 'nullable|string|max:36',
|
|
'AUSHSHA4' => 'nullable|string|max:36',
|
|
'AUSHSHCI' => 'required|max:20',
|
|
'AUSHSHST' => 'required|max:2',
|
|
'AUSHSHCT' => 'required|max:3',
|
|
],
|
|
[
|
|
'AUSHSHNM.required' => 'Name is required',
|
|
'AUSHSHA1.required' => 'Address 1 is required',
|
|
'AUSHSHA2.required' => 'Address 2 is required',
|
|
'AUSHSHCI.required' => 'City is required',
|
|
'AUSHSHST.required' => 'State is required',
|
|
'AUSHSHZP.required' => 'Zip code is required',
|
|
'AUSHSHCT.required' => 'Country is required',
|
|
'AUSHWHS.required' => 'Warehouse is required',
|
|
|
|
'AUSTCN.max' => 'Customer Number cannot exceed 11 characters',
|
|
'AUSHSHNM.max' => 'Name cannot exceed 36 characters',
|
|
'AUSHSHA1.max' => 'Address 1 cannot exceed 36 characters',
|
|
'AUSHSHA2.max' => 'Address 2 cannot exceed 36 characters',
|
|
'AUSHSHA3.max' => 'Address 3 cannot exceed 36 characters',
|
|
'AUSHSHA4.max' => 'Address 4 cannot exceed 36 characters',
|
|
'AUSHSHCI.max' => 'City cannot exceed 20 characters',
|
|
'AUSHSHST.max' => 'State cannot exceed 2 characters',
|
|
'AUSHSHZP.max' => 'Zip code cannot exceed 10 characters',
|
|
'AUSHSHCT.max' => 'Country cannot exceed 3 characters',
|
|
'AUSHWHS.max' => 'Warehouse cannot exceed 3 characters',
|
|
],
|
|
));
|
|
|
|
$updated = ShipTo::where('AUSHSHZP', $aushshzp)
|
|
->where('AUSHWHS', $aushwhs)
|
|
->update($validated);
|
|
|
|
if ($updated) {
|
|
return redirect()->route('m3.ship-to.index')->with('success', 'Record updated successfully.');
|
|
} else {
|
|
return redirect()->route('m3.ship-to.index')->with('error', 'Record could not be updated.');
|
|
}
|
|
}
|
|
|
|
public function destroy($aushshzp, $aushwhs)
|
|
{
|
|
$deleted = ShipTo::where('AUSHSHZP', $aushshzp)
|
|
->where('AUSHWHS', $aushwhs)
|
|
->delete();
|
|
|
|
if ($deleted) {
|
|
return redirect()->route('m3.ship-to.index')->with('success', 'Record deleted successfully.');
|
|
} else {
|
|
return redirect()->route('m3.ship-to.index')->with('error', 'Record not found or could not be deleted.');
|
|
}
|
|
|
|
}
|
|
}
|