259 lines
9.7 KiB
PHP
259 lines
9.7 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 = [
|
|
'prine_name' => $request->input('prine_name'), // 商品名
|
|
'price_month' => $request->input('price_month',''), // 期間
|
|
'park_id' => $request->input('park_name'), // 駐輪場
|
|
'psection_id' => $request->input('psection_subject'), // 車種区分
|
|
'price_ptypeid' => $request->input('ptype_subject'), // 駐輪分類
|
|
'user_categoryid' => $request->input('user_category_name'), // 利用者分類
|
|
'pplace_id' => $request->input('pplace_id'), // 駐車車室
|
|
'price' => $request->input('price'), // 駐輪料金(税込)
|
|
];
|
|
|
|
$dataList = $this->getDataDropList();
|
|
$inputs = array_merge($inputs, $dataList);
|
|
if ($request->isMethod('POST')) {
|
|
$type = false;
|
|
$validation = new PriceRequest();
|
|
$rules = $validation->rules();
|
|
$validator = Validator::make($request->all(), $rules, $validation->messages());
|
|
if (!$validator->fails()) {
|
|
\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', __('新しい作成に失敗しました'));
|
|
}
|
|
}else {
|
|
$inputs['errorMsg'] = $this->__buildErrorMessasges($validator);
|
|
}
|
|
}
|
|
|
|
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;
|
|
$validation = new PriceRequest();
|
|
$rules = $validation->rules();
|
|
$validator = Validator::make($request->all(), $rules, $validation->messages());
|
|
$requestAll = $request->all();
|
|
$requestAll['price_ptypeid]'] = $request->input('ptype_subject');
|
|
$requestAll['user_categoryid'] = $request->input('user_category_name'); // 利用者分類
|
|
$requestAll['psection_id'] = $request->input('psection_subject');
|
|
$requestAll['park_id'] = $request->input('park_name');
|
|
$data = array_merge($data, $requestAll);
|
|
if (!$validator->fails()) {
|
|
\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', __('更新に失敗しました'));
|
|
}
|
|
}else {
|
|
$data['errorMsg'] = $this->__buildErrorMessasges($validator);
|
|
}
|
|
}
|
|
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;
|
|
}
|
|
|
|
|
|
} |