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

<?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' => '新增失敗']);
}
}