I have a web application with Laravel-5.8. In the project, I have four (4) different dates.
appraisal_start, appraisal_end, submission_start, submission_end.
Already, I have validated appraisal_start and appraisal_end, then submission_start and submission_end as shown in the rules of my code below:
public function rules()
{
return [
'appraisal_start' => 'required',
'appraisal_end' => 'required|after_or_equal:appraisal_start',
'submission_start' => 'required',
'submission_end' => 'required|after_or_equal:submission_start',
];
}
public function create()
{
abort_unless(\Gate::allows('appraisal_identity_create'), 403);
return view('appraisal.appraisal_identities.create');
}
public function store(StoreAppraisalIdentityRequest $request)
{
abort_unless(\Gate::allows('appraisal_identity_create'), 403);
$appraisalStart = Carbon::parse($request->appraisal_start);
$appraisalEnd = Carbon::parse($request->appraisal_end);
$submissionStart = Carbon::parse($request->submission_start);
$submissionEnd = Carbon::parse($request->submission_end);
$identity = AppraisalIdentity::create([
'appraisal_start' => $appraisalStart,
'appraisal_end' => $appraisalEnd,
'submission_start' => $submissionStart,
'submission_end' => $submissionEnd,
]);
Session::flash('success', 'Appraisal Initialization is created successfully');
return redirect()->route('appraisal.appraisal_identities.index');
}
view
<div class="card-body">
<form action="{{route('appraisal.appraisal_identities.store')}}" method="post" class="form-horizontal" enctype="multipart/form-data">
{{csrf_field()}}
<div class="form-body">
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<label class="control-label text-right col-md-3">Appraisal Start Date<span style="color:red;">*</span></label>
<div class="col-md-9">
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="appraisal_start" value="{{old('appraisal_start')}}" min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<label class="control-label text-right col-md-3">Appraisal End Date<span style="color:red;">*</span></label>
<div class="col-md-9">
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="appraisal_end" value="{{old('appraisal_end')}}" min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<label class="control-label text-right col-md-3">Submission Start Date<span style="color:red;">*</span></label>
<div class="col-md-9">
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="submission_start" value="{{old('submission_start')}}" min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<label class="control-label text-right col-md-3">Submission End Date<span style="color:red;">*</span></label>
<div class="col-md-9">
<input type="date" class="form-control" placeholder="dd/mm/yyyy" name="submission_end" value="{{old('submission_end')}}" min="{{Carbon\Carbon::now()->format('Y-m-d')}}">
</div>
</div>
</div>
</div>
</div>
<div>
<button type="submit" class="btn btn-primary">{{ trans('global.save') }}</button>
<button type="button" onclick="window.location.href='{{route('appraisal.appraisal_identities.index')}}'" class="btn btn-default">Cancel</button>
</div>
</form>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(function () {
$('#appraisal_start').datetimepicker({
format: "YYYY-MM-DD"
});
$('#appraisal_end').datetimepicker({
format: "YYYY-MM-DD"
});
$('#submission_start').datetimepicker({
format: "YYYY-MM-DD"
});
$('#submission_end').datetimepicker({
format: "YYYY-MM-DD"
});
});
});
</script>
The issue now is how do I validate that submission_start and submission_end must be withing the range of appraisal_start and appraisal_end.
Thanks