krgm.so-manager-dev.com/app/Http/Controllers/Admin/PriceController.php
你的名字 40526ea0cf
All checks were successful
Deploy preview (main_ou) / deploy (push) Successful in 13s
画面エラー修正
2025-08-23 20:32:52 +09:00

251 lines
9.3 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Requests\PriceRequest;
use App\Models\Park;
use App\Models\Price;
use App\Models\Psection;
use App\Models\Ptype;
use App\Models\Usertype;
use App\Models\Utils;
use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Validator;
use Response;
class PriceController extends Controller
{
public function list(Request $request)
{
$inputs = [
'isExport' => 0,
'sort' => $request->input('sort', ''),
'sort_type' => $request->input('sort_type', ''),
'page' => $request->get('page', 1),
];
$inputs['list'] = Price::search($inputs);
if ($inputs['list']->total() > 0 && $inputs['page'] > $inputs['list']->lastPage()) {
return redirect()->route('prices');
}
return view('admin.prices.list', $inputs);
}
public function add(Request $request)
{
$inputs = [
'price_parkplaceid' => $request->input('price_parkplaceid'), // 駐車場所ID
'park_id' => $request->input('park_id'), // 駐輪場ID
'prine_name' => $request->input('prine_name'), // 商品名
'price_month' => $request->input('price_month',''), // 期間
'user_categoryid' => $request->input('user_categoryid'), // 利用者分類ID
'price' => $request->input('price'), // 駐輪料金(税込)
'psection_id' => $request->input('psection_id'), // 車種区分ID
'price_ptypeid' => $request->input('price_ptypeid'), // 駐輪分類ID
'pplace_id' => $request->input('pplace_id'), // 駐車車室ID
];
$dataList = $this->getDataDropList();
$inputs = array_merge($inputs, $dataList);
if ($request->isMethod('POST')) {
$type = false;
\DB::transaction(function () use ($inputs, &$type) {
$new = new Price();
$new->fill($inputs);
if( $new->save()){
$type = true;
}
});
if ($type) {
$request->session()->flash('success', __('新しい成功を創造する。'));
return redirect()->route('prices');
} else {
$request->session()->flash('error', __('新しい作成に失敗しました'));
}
}
return view('admin.prices.add', $inputs);
}
public function edit(Request $request, $pk ,$view=''){
$price = Price::getByPk($pk);
if (empty($pk) || empty($price)) {
abort('404');
}
$data = $price->getAttributes();
$dataList = $this->getDataDropList();
$data = array_merge($data, $dataList);
if ($request->isMethod('POST')) {
$type = false;
$requestAll = [
'price_parkplaceid' => $request->input('price_parkplaceid'),
'park_id' => $request->input('park_id'),
'prine_name' => $request->input('prine_name'),
'price_month' => $request->input('price_month',''),
'user_categoryid' => $request->input('user_categoryid'),
'price' => $request->input('price'),
'psection_id' => $request->input('psection_id'),
'price_ptypeid' => $request->input('price_ptypeid'),
'pplace_id' => $request->input('pplace_id'),
];
$data = array_merge($data, $requestAll);
\DB::transaction(function () use ($data, &$type,$price) {
$price->fill($data);
$price->save();
$type = true;
});
if ($type) {
$request->session()->flash('success', __('更新に成功しました'));
return redirect()->route('prices');
} else {
$request->session()->flash('error', __('更新に失敗しました'));
}
}
if ($view != '') {
return view($view, $data);
}
return view('admin.prices.edit', $data);
}
public function delete(Request $request)
{
$arr_pk = $request->get('pk');
if ($arr_pk) {
if (Price::deleteByPk($arr_pk)) {
return redirect()->route('prices')->with('success', __("削除成功。"));
} else {
return redirect()->route('prices')->with('error', __('削除に失敗しました。'));
}
}
return redirect()->route('prices')->with('error', __('削除するユーザーを選択してください。'));
}
public function export(Request $request)
{
$headers = array(
"Content-type" => "text/csv;charset=UTF-8",
'Content-Encoding: UTF-8',
"Content-Disposition" => "attachment; filename=file.csv",
"Pragma" => "no-cache",
"Cache-Control" => "must-revalidate, post-check=0, pre-check=0",
"Expires" => "0"
);
$inputs = [
'isMethodPost' => 0,
'isExport' => 1,
'sort' => $request->input('sort', ''),
'sort_type' => $request->input('sort_type', ''),
];
$dataExport = Price::search($inputs);
$columns = array(
__('駐車場所ID'),// 0
__('商品名'),// 1
__('期間'),// 2
__('駐輪場ID'),// 3
__('駐輪場名'),// 3
__('車種区分ID'),// 5
__('車種区分'),// 6
__('駐輪分類ID'),// 7
__('駐輪分類'),// 8
__('利用者分類ID'),// 9
__('利用者分類'),// 10
__('駐車車室ID'),//11
__('駐輪料金(税込)'),// 12
);
$filename = "駐輪場所、料金マスタ.csv";
$file = fopen($filename, 'w+');
fputcsv($file, $columns);
foreach ($dataExport as $items) {
fputcsv($file, array(
$items->price_parkplaceid,// 0
$items->prine_name, // 1
$items->price_month, // 2
$items->park_id, // 3
!empty($items->getPark())? $items->getPark()->park_name:'' ,// 4
$items->psection_id, // 5
!empty($items->getPSection())? $items->getPSection()->psection_subject:'',// 6
$items->price_ptypeid, // 7
!empty($items->getPType())? $items->getPType()->ptype_subject:'' ,// 8
$items->user_categoryid, //9
!empty($items->getUserType())? $items->getUserType()->print_name:'' ,//10
$items->pplace_id,// 11
$items->price, // 12
));
}
fclose($file);
return Response::download($filename, $filename, $headers);
}
public function import(Request $request)
{
$file = $request->file('file');
if(!empty($file)){
$data = Utils::csvToArray($file);
$type = 1;
$msg = '';
$record = 0;
DB::beginTransaction();
try {
Price::query()->delete();
$col = 13;
foreach ($data as $key => $items) {
$record = $key + 2;
if (count($items) == $col) {
$row = new Price();
$row->price_parkplaceid = $items[0];
$row->prine_name = $items[1];
$row->price_month = $items[2];
$row->park_id = $items[3];
$row->psection_id = $items[5];
$row->price_ptypeid = $items[7];
$row->user_categoryid = $items[9];
$row->pplace_id = $items[11];
$row->price = $items[12];
if (!$row->save()) {
$type = 0;
$msg = '行:record型が一致しません。';
break;
}
} else {
$type = 0;
$msg = '行:record列数が一致しません。';
break;
}
}
} catch (\Exception $e) {
$msg = '行:record型が一致しません。';
$type = 0;
}
if ($type) {
DB::commit();
return redirect()->route('prices')->with('success', __('輸入成功'));
} else {
DB::rollBack();
return redirect()->route('prices')->with('error', __($msg, ['record' => $record]));
}
} else {
return redirect()->route('prices')->with('error', __('あなたはcsvファイルを選択していません。'));
}
}
public function info(Request $request, $id)
{
return $this->edit($request, $id, 'admin.prices.info');
}
public function getDataDropList()
{
$data['parks'] = Park::getList() ;
$data['psections'] = Psection::getList() ;
$data['ptypes'] = Ptype::getList() ;
$data['userTypes'] = Usertype::getList() ;
return $data;
}
}