You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
258 lines
8.7 KiB
258 lines
8.7 KiB
<?php |
|
|
|
namespace App\Http\Controllers\System; |
|
|
|
use App\Class\LogWriter; |
|
use App\Models\ViolationParkingEquipment; |
|
use Illuminate\Http\Request; |
|
use App\Http\Controllers\Controller; |
|
use App\Models\AssetOwnership; |
|
use App\Models\CustodyUnit; |
|
use Illuminate\Support\Facades\DB; |
|
use Illuminate\Support\Facades\Log; |
|
|
|
class ViolationParkingEquipmentController extends Controller |
|
{ |
|
|
|
public function __construct() |
|
{ |
|
$this->middleware('permission:vpk-device-setting'); |
|
} |
|
|
|
public function page() |
|
{ |
|
// ['custodyunit' => $custodyunit, 'assetownership' => $assetownership] |
|
|
|
$custodyunit = CustodyUnit::all(); |
|
$assetownership = AssetOwnership::all(); |
|
return view('system.violationparking.equipment') |
|
->with('custodyunit', $custodyunit) |
|
->with('assetownership', $assetownership); |
|
} |
|
|
|
/** |
|
* Display a listing of the resource. |
|
*/ |
|
public function index(Request $request) |
|
{ |
|
#region DataTable 搜尋屬性 |
|
$draw = $request->get('draw'); |
|
$start = $request->get("start"); |
|
$rowperpage = $request->get("length"); // Rows display per page |
|
|
|
$columnIndex_arr = $request->get('order'); |
|
$columnName_arr = $request->get('columns'); |
|
$order_arr = $request->get('order'); |
|
$search_arr = $request->get('search'); |
|
|
|
$columnIndex = $columnIndex_arr[0]['column']; // Column index |
|
$columnName = $columnName_arr[$columnIndex]['data']; // Column name |
|
$columnSortOrder = $order_arr[0]['dir']; // asc or desc |
|
$searchValue = $search_arr['value']; // Search value |
|
#endregion |
|
|
|
// Role with permissions |
|
$records = ViolationParkingEquipment::query(); |
|
$totalRecords = $records->count(); |
|
|
|
if (isset($columnName)) |
|
$records->orderBy($columnName, $columnSortOrder); |
|
if (isset($searchValue)) { |
|
$records->where(function ($query) use ($searchValue) { |
|
// $query->where('outlet_id', 'like', '%' . $searchValue . '%') |
|
// ->orwhere('name', 'like', '%' . $searchValue . '%') |
|
// ->orwhere('serialnumber', 'like', '%' . $searchValue . '%') |
|
// ->orwhere('creator_id', 'like', '%' . $searchValue . '%'); |
|
}); |
|
} |
|
|
|
$totalRecordswithFilter = $records->count(); |
|
if (isset($start)) |
|
$records->skip($start); |
|
if (isset($rowperpage)) |
|
$records->take($rowperpage); |
|
|
|
$data_arr = $records->get(); |
|
|
|
$response = array( |
|
"draw" => intval($draw), |
|
"iTotalRecords" => $totalRecords, |
|
"iTotalDisplayRecords" => $totalRecordswithFilter, |
|
"aaData" => $data_arr |
|
); |
|
return response()->json($response); |
|
} |
|
|
|
/** |
|
* Store a newly created resource in storage. |
|
*/ |
|
public function store(Request $request) |
|
{ |
|
$device = new ViolationParkingEquipment(); |
|
DB::beginTransaction(); |
|
try { |
|
$device->serialnumber = $request->serialnumber; |
|
$device->brand = $request->brand; |
|
$device->model = $request->model; |
|
$device->custodyunit_id = $request->custodyunit_id; |
|
$device->assetownership_id = $request->assetownership_id; |
|
$device->buydate = $request->buydate; |
|
$device->activatedate = $request->activatedate; |
|
$device->locationid = $request->locationid; |
|
$device->location = $request->location; |
|
$device->comment = $request->comment; |
|
$device->precinct = $request->precinct; |
|
$device->station = $request->station; |
|
|
|
$device->save(); |
|
|
|
$logData = [ |
|
'action' => 'create', |
|
'action_detail' => '新增設備', |
|
'ip' => request()->ip(), |
|
'remark' => "新增設備:{$device->serialnumber}", |
|
]; |
|
logWriter::writeLog($logData, 'api'); |
|
DB::commit(); |
|
|
|
return response()->json(['success' => true, 'message' => '新增成功']); |
|
} catch (\Throwable $th) { |
|
//throw $th; |
|
Log::error($th); |
|
DB::rollBack(); |
|
return response()->json(['success' => false, 'message' => '新增失敗']); |
|
} |
|
} |
|
|
|
/** |
|
* Display the specified resource. |
|
*/ |
|
public function show(string $id) |
|
{ |
|
$device = ViolationParkingEquipment::find($id); |
|
return response()->json(['success' => true, 'data' => $device]); |
|
} |
|
|
|
/** |
|
* Update the specified resource in storage. |
|
*/ |
|
public function update(Request $request, string $id) |
|
{ |
|
$device = ViolationParkingEquipment::find($id); |
|
|
|
DB::beginTransaction(); |
|
try { |
|
$device->serialnumber = $request->serialnumber; |
|
$device->brand = $request->brand; |
|
$device->model = $request->model; |
|
$device->custodyunit_id = $request->custodyunit_id ?? null; |
|
$device->assetownership_id = $request->assetownership_id ?? null; |
|
$device->buydate = $request->buydate; |
|
$device->activatedate = $request->activatedate; |
|
$device->locationid = $request->locationid; |
|
$device->location = $request->location; |
|
$device->comment = $request->comment; |
|
$device->precinct = $request->precinct; |
|
$device->station = $request->station; |
|
$device->save(); |
|
|
|
$logData = [ |
|
'action' => 'update', |
|
'action_detail' => '更新設備', |
|
'ip' => request()->ip(), |
|
'remark' => "更新設備:{$device->serialnumber}", |
|
]; |
|
logWriter::writeLog($logData, 'api'); |
|
DB::commit(); |
|
return response()->json(['success' => true, 'message' => '更新成功']); |
|
} catch (\Throwable $th) { |
|
//throw $th; |
|
Log::error($th); |
|
DB::rollBack(); |
|
return response()->json(['success' => false, 'message' => '更新失敗']); |
|
} |
|
} |
|
|
|
/** |
|
* Remove the specified resource from storage. |
|
*/ |
|
public function destroy(string $id) |
|
{ |
|
$device = ViolationParkingEquipment::find($id); |
|
try { |
|
$device->delete(); |
|
return response()->json(['success' => true, 'message' => '刪除成功']); |
|
} catch (\Throwable $th) { |
|
//throw $th; |
|
Log::error($th); |
|
return response()->json(['success' => false, 'message' => '刪除失敗']); |
|
} |
|
} |
|
|
|
|
|
/** |
|
* 取得保管單位資料 |
|
*/ |
|
public function indexUnit(Request $request) |
|
{ |
|
|
|
if($request->type == "custodyunit"){ |
|
$unit = CustodyUnit::all(); |
|
return response()->json(['success' => true, 'data' => $unit]); |
|
}else if ($request->type == "assetownership"){ |
|
$unit = AssetOwnership::all(); |
|
return response()->json(['success' => true, 'data' => $unit]); |
|
} |
|
|
|
return response()->json(['success' => false, 'message' => '取得失敗']); |
|
} |
|
|
|
/** |
|
* 新增單位資料 |
|
*/ |
|
public function storeUnit(Request $request) |
|
{ |
|
// custodyunit_id |
|
//assetownership_id) |
|
DB::beginTransaction(); |
|
try { |
|
if($request->type == "custodyunit"){ |
|
$unit = new CustodyUnit(); |
|
$unit->name = $request->name; |
|
$unit->save(); |
|
$logData = [ |
|
'action' => 'create', |
|
'action_detail' => '新增保管單位', |
|
'ip' => request()->ip(), |
|
'remark' => "新增保管單位:{$request->name}", |
|
]; |
|
|
|
LogWriter::writeLog($logData, 'api'); |
|
DB::commit(); |
|
return response()->json(['success' => true, 'message' => '保管單位-新增成功']); |
|
}else if ($request->type == "assetownership"){ |
|
$unit = new AssetOwnership(); |
|
$unit->name = $request->name; |
|
$unit->save(); |
|
$logData = [ |
|
'action' => 'create', |
|
'action_detail' => '新增財產所屬單位', |
|
'ip' => request()->ip(), |
|
'remark' => "新增財產所屬單位:{$request->name}", |
|
]; |
|
|
|
LogWriter::writeLog($logData, 'api'); |
|
DB::commit(); |
|
return response()->json(['success' => true, 'message' => '財產所屬單位-新增成功']); |
|
} |
|
|
|
} catch (\Throwable $th) { |
|
//throw $th; |
|
Log::error($th); |
|
DB::rollBack(); |
|
} |
|
|
|
|
|
return response()->json(['success' => false, 'message' => '新增失敗']); |
|
} |
|
}
|
|
|