0, 'sort' => $request->input('sort', ''), // ソート対象カラム 'sort_type' => $request->input('sort_type', ''), // 昇順/降順 'page' => $request->get('page', 1), ]; // Price::search 内で orderBy を反映させる $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; } }