Commit 51b3233e authored by m-wynn's avatar m-wynn

Merge branch 'feature/menu_questionnaire' into 'develop'

アンケート画面作成

See merge request !1
parents ee9a0e77 f976588d
<?php
namespace App\Http\Controllers;
use App\Http\Requests\CreateQuestionnaireRequest;
use App\Http\Requests\UpdateQuestionnaireRequest;
use App\Http\Controllers\AppBaseController;
use App\Repositories\QuestionnaireRepository;
use Illuminate\Http\Request;
use Flash;
class QuestionnaireController extends AppBaseController
{
/** @var QuestionnaireRepository $questionnaireRepository*/
private $questionnaireRepository;
public function __construct(QuestionnaireRepository $questionnaireRepo)
{
$this->questionnaireRepository = $questionnaireRepo;
}
/**
* Display a listing of the Questionnaire.
*/
public function index(Request $request)
{
$questionnaires = $this->questionnaireRepository->paginate(10);
return view('questionnaires.index')
->with('questionnaires', $questionnaires);
}
/**
* Show the form for creating a new Questionnaire.
*/
public function create()
{
return view('questionnaires.create');
}
/**
* Store a newly created Questionnaire in storage.
*/
public function store(CreateQuestionnaireRequest $request)
{
$input = $request->all();
$questionnaire = $this->questionnaireRepository->create($input);
Flash::success('Questionnaire saved successfully.');
return redirect(route('questionnaires.index'));
}
/**
* Display the specified Questionnaire.
*/
public function show($id)
{
$questionnaire = $this->questionnaireRepository->find($id);
if (empty($questionnaire)) {
Flash::error('Questionnaire not found');
return redirect(route('questionnaires.index'));
}
return view('questionnaires.show')->with('questionnaire', $questionnaire);
}
/**
* Show the form for editing the specified Questionnaire.
*/
public function edit($id)
{
$questionnaire = $this->questionnaireRepository->find($id);
if (empty($questionnaire)) {
Flash::error('Questionnaire not found');
return redirect(route('questionnaires.index'));
}
return view('questionnaires.edit')->with('questionnaire', $questionnaire);
}
/**
* Update the specified Questionnaire in storage.
*/
public function update($id, UpdateQuestionnaireRequest $request)
{
$questionnaire = $this->questionnaireRepository->find($id);
if (empty($questionnaire)) {
Flash::error('Questionnaire not found');
return redirect(route('questionnaires.index'));
}
$questionnaire = $this->questionnaireRepository->update($request->all(), $id);
Flash::success('Questionnaire updated successfully.');
return redirect(route('questionnaires.index'));
}
/**
* Remove the specified Questionnaire from storage.
*
* @throws \Exception
*/
public function destroy($id)
{
$questionnaire = $this->questionnaireRepository->find($id);
if (empty($questionnaire)) {
Flash::error('Questionnaire not found');
return redirect(route('questionnaires.index'));
}
$this->questionnaireRepository->delete($id);
Flash::success('Questionnaire deleted successfully.');
return redirect(route('questionnaires.index'));
}
}
<?php
namespace App\Http\Requests;
use App\Models\Questionnaire;
use Illuminate\Foundation\Http\FormRequest;
class CreateQuestionnaireRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return Questionnaire::$rules;
}
}
<?php
namespace App\Http\Requests;
use App\Models\Questionnaire;
use Illuminate\Foundation\Http\FormRequest;
class UpdateQuestionnaireRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
$rules = Questionnaire::$rules;
return $rules;
}
}
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Questionnaire extends Model
{
public $table = 't_questionnaires';
public $fillable = [
'u_id',
'q1',
'q2',
'q3',
'q4',
'q5',
'q6'
];
protected $casts = [
'u_id' => 'integer',
'q1' => 'string',
'q2' => 'string',
'q3' => 'string',
'q4' => 'string',
'q5' => 'string',
'q6' => 'string'
];
public static array $rules = [
'u_id' => 'required|max:2',
'q1' => 'required|max:32',
'q2' => 'required|max:32',
'q3' => 'required|max:100',
'q4' => 'required|max:64',
'q5' => 'required|max:64',
'q6' => 'nullable'
];
}
<?php
namespace App\Repositories;
use App\Models\Questionnaire;
use App\Repositories\BaseRepository;
class QuestionnaireRepository extends BaseRepository
{
protected $fieldSearchable = [
'u_id',
'q1',
'q2',
'q3',
'q4',
'q5',
'q6'
];
public function getFieldsSearchable(): array
{
return $this->fieldSearchable;
}
public function model(): string
{
return Questionnaire::class;
}
}
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateTQuestionnairesTable extends Migration
{
/**
* Run the migrations.
*/
public function up()
{
Schema::create('t_questionnaires', function (Blueprint $table) {
$table->bigIncrements('id')->comment('ID');
$table->bigInteger('u_id')->unsigned()->length(20)->comment('ユーザーID');
$table->string('q1', 32)->comment('設問1回答');
$table->string('q2', 32)->comment('設問2回答');
$table->string('q3', 100)->comment('設問3回答');
$table->string('q4', 64)->comment('設問4回答');
$table->string('q5', 64)->comment('設問5回答');
$table->text('q6')->nullable()->comment('設問6回答');
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*/
public function down()
{
Schema::dropIfExists('t_questionnaires');
}
};
[
{
"name": "id",
"dbType": "id",
"htmlType": "",
"validations": "",
"searchable": false,
"fillable": false,
"primary": true,
"inForm": false,
"inIndex": false,
"inView": false
},
{
"name": "u_id",
"dbType": "bigInteger",
"htmlType": "text",
"validations": "required|max:2",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q1",
"dbType": "string",
"htmlType": "text",
"validations": "required|max:32",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q2",
"dbType": "string",
"htmlType": "text",
"validations": "required|max:32",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q3",
"dbType": "string",
"htmlType": "text",
"validations": "required|max:100",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q4",
"dbType": "string",
"htmlType": "text",
"validations": "required|max:64",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q5",
"dbType": "string",
"htmlType": "text",
"validations": "required|64",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "q6",
"dbType": "text",
"htmlType": "textarea",
"validations": "nullable",
"searchable": true,
"fillable": true,
"primary": false,
"inForm": true,
"inIndex": true,
"inView": true
},
{
"name": "created_at",
"dbType": "timestamp",
"htmlType": "",
"validations": "",
"searchable": false,
"fillable": false,
"primary": false,
"inForm": false,
"inIndex": false,
"inView": true
},
{
"name": "updated_at",
"dbType": "timestamp",
"htmlType": "",
"validations": "",
"searchable": false,
"fillable": false,
"primary": false,
"inForm": false,
"inIndex": false,
"inView": true
}
]
\ No newline at end of file
......@@ -5,3 +5,10 @@
<p>Home</p>
</a>
</li>
<li class="nav-item">
<a href="{{ route('questionnaires.index') }}" class="nav-link {{ Request::is('questionnaires*') ? 'active' : '' }}">
<i class="nav-icon fas fa-home"></i>
<p>Questionnaires</p>
</a>
</li>
@extends('layouts.app')
@section('content')
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-12">
<h1>
Create Questionnaires
</h1>
</div>
</div>
</div>
</section>
<div class="content px-3">
@include('adminlte-templates::common.errors')
<div class="card">
{!! Form::open(['route' => 'questionnaires.store']) !!}
<div class="card-body">
<div class="row">
@include('questionnaires.fields')
</div>
</div>
<div class="card-footer">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
<a href="{{ route('questionnaires.index') }}" class="btn btn-default"> Cancel </a>
</div>
{!! Form::close() !!}
</div>
</div>
@endsection
@extends('layouts.app')
@section('content')
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-12">
<h1>
Edit Questionnaire
</h1>
</div>
</div>
</div>
</section>
<div class="content px-3">
@include('adminlte-templates::common.errors')
<div class="card">
{!! Form::model($questionnaire, ['route' => ['questionnaires.update', $questionnaire->id], 'method' => 'patch']) !!}
<div class="card-body">
<div class="row">
@include('questionnaires.fields')
</div>
</div>
<div class="card-footer">
{!! Form::submit('Save', ['class' => 'btn btn-primary']) !!}
<a href="{{ route('questionnaires.index') }}" class="btn btn-default"> Cancel </a>
</div>
{!! Form::close() !!}
</div>
</div>
@endsection
<!-- U Id Field -->
<div class="form-group col-sm-6">
{!! Form::label('u_id', 'U Id:') !!}
{!! Form::text('u_id', null, ['class' => 'form-control', 'required', 'maxlength' => 2]) !!}
</div>
<!-- Q1 Field -->
<div class="form-group col-sm-6">
{!! Form::label('q1', 'Q1:') !!}
{!! Form::text('q1', null, ['class' => 'form-control', 'required', 'maxlength' => 32]) !!}
</div>
<!-- Q2 Field -->
<div class="form-group col-sm-6">
{!! Form::label('q2', 'Q2:') !!}
{!! Form::text('q2', null, ['class' => 'form-control', 'required', 'maxlength' => 32]) !!}
</div>
<!-- Q3 Field -->
<div class="form-group col-sm-6">
{!! Form::label('q3', 'Q3:') !!}
{!! Form::text('q3', null, ['class' => 'form-control', 'required', 'maxlength' => 100]) !!}
</div>
<!-- Q4 Field -->
<div class="form-group col-sm-6">
{!! Form::label('q4', 'Q4:') !!}
{!! Form::text('q4', null, ['class' => 'form-control', 'required', 'maxlength' => 64]) !!}
</div>
<!-- Q5 Field -->
<div class="form-group col-sm-6">
{!! Form::label('q5', 'Q5:') !!}
{!! Form::text('q5', null, ['class' => 'form-control', 'required']) !!}
</div>
<!-- Q6 Field -->
<div class="form-group col-sm-12 col-lg-12">
{!! Form::label('q6', 'Q6:') !!}
{!! Form::textarea('q6', null, ['class' => 'form-control']) !!}
</div>
\ No newline at end of file
@extends('layouts.app')
@section('content')
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Questionnaires</h1>
</div>
<div class="col-sm-6">
<a class="btn btn-primary float-right"
href="{{ route('questionnaires.create') }}">
Add New
</a>
</div>
</div>
</div>
</section>
<div class="content px-3">
@include('flash::message')
<div class="clearfix"></div>
<div class="card">
@include('questionnaires.table')
</div>
</div>
@endsection
@extends('layouts.app')
@section('content')
<section class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>
Questionnaire Details
</h1>
</div>
<div class="col-sm-6">
<a class="btn btn-default float-right"
href="{{ route('questionnaires.index') }}">
Back
</a>
</div>
</div>
</div>
</section>
<div class="content px-3">
<div class="card">
<div class="card-body">
<div class="row">
@include('questionnaires.show_fields')
</div>
</div>
</div>
</div>
@endsection
<!-- U Id Field -->
<div class="col-sm-12">
{!! Form::label('u_id', 'U Id:') !!}
<p>{{ $questionnaire->u_id }}</p>
</div>
<!-- Q1 Field -->
<div class="col-sm-12">
{!! Form::label('q1', 'Q1:') !!}
<p>{{ $questionnaire->q1 }}</p>
</div>
<!-- Q2 Field -->
<div class="col-sm-12">
{!! Form::label('q2', 'Q2:') !!}
<p>{{ $questionnaire->q2 }}</p>
</div>
<!-- Q3 Field -->
<div class="col-sm-12">
{!! Form::label('q3', 'Q3:') !!}
<p>{{ $questionnaire->q3 }}</p>
</div>
<!-- Q4 Field -->
<div class="col-sm-12">
{!! Form::label('q4', 'Q4:') !!}
<p>{{ $questionnaire->q4 }}</p>
</div>
<!-- Q5 Field -->
<div class="col-sm-12">
{!! Form::label('q5', 'Q5:') !!}
<p>{{ $questionnaire->q5 }}</p>
</div>
<!-- Q6 Field -->
<div class="col-sm-12">
{!! Form::label('q6', 'Q6:') !!}
<p>{{ $questionnaire->q6 }}</p>
</div>
<!-- Created At Field -->
<div class="col-sm-12">
{!! Form::label('created_at', 'Created At:') !!}
<p>{{ $questionnaire->created_at }}</p>
</div>
<!-- Updated At Field -->
<div class="col-sm-12">
{!! Form::label('updated_at', 'Updated At:') !!}
<p>{{ $questionnaire->updated_at }}</p>
</div>
<div class="card-body p-0">
<div class="table-responsive">
<table class="table" id="questionnaires-table">
<thead>
<tr>
<th>U Id</th>
<th>Q1</th>
<th>Q2</th>
<th>Q3</th>
<th>Q4</th>
<th>Q5</th>
<th>Q6</th>
<th colspan="3">Action</th>
</tr>
</thead>
<tbody>
@foreach($questionnaires as $questionnaire)
<tr>
<td>{{ $questionnaire->u_id }}</td>
<td>{{ $questionnaire->q1 }}</td>
<td>{{ $questionnaire->q2 }}</td>
<td>{{ $questionnaire->q3 }}</td>
<td>{{ $questionnaire->q4 }}</td>
<td>{{ $questionnaire->q5 }}</td>
<td>{{ $questionnaire->q6 }}</td>
<td style="width: 120px">
{!! Form::open(['route' => ['questionnaires.destroy', $questionnaire->id], 'method' => 'delete']) !!}
<div class='btn-group'>
<a href="{{ route('questionnaires.show', [$questionnaire->id]) }}"
class='btn btn-default btn-xs'>
<i class="far fa-eye"></i>
</a>
<a href="{{ route('questionnaires.edit', [$questionnaire->id]) }}"
class='btn btn-default btn-xs'>
<i class="far fa-edit"></i>
</a>
{!! Form::button('<i class="far fa-trash-alt"></i>', ['type' => 'submit', 'class' => 'btn btn-danger btn-xs', 'onclick' => "return confirm('Are you sure?')"]) !!}
</div>
{!! Form::close() !!}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
<div class="card-footer clearfix">
<div class="float-right">
@include('adminlte-templates::common.paginate', ['records' => $questionnaires])
</div>
</div>
</div>
......@@ -20,3 +20,5 @@ Route::get('/', function () {
Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home');
Auth::routes();
Route::resource('questionnaires', App\Http\Controllers\QuestionnaireController::class);
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment