我正在创建一个Laravel项目,该项目是休假应用程序模块上的人力资源管理(HRM)应用程序。我被困在需要计算半天叶子的地方,无论是上午休假还是下午休假。我如何创建条件让员工选择申请半天上午或下午。我已完成休假申请全天(1.0天)和几天工作。我只需要为选择AM和PM做条件,值是(0.5天)。我怎么能这样做?
这是我的控制器,我为全日休假申请做了条件。
//method controller to calculate different between date
public static function countDiffDays($start_date, $end_date)
{
$leave_from=date('Y-m-d', strtotime($start_date));
$leave_to=date('Y-m-d', strtotime($end_date));
$datediff = strtotime($leave_to) - strtotime($leave_from);
$daycount = round($datediff / (60 * 60 * 24));
return $daycount;
}
//condition for full day leave application//
public function postNewLeave(Request $request)
{
$v = \Validator::make($request->all(), [
'leave_type' => 'required', 'leave_from' => 'required', 'leave_to' => 'required'
]);
if ($v->fails()) {
return redirect('employee/leave')->withErrors($v->errors());
}
// request data date from view
$leave_from=date('Y-m-d', strtotime($request->leave_from));
$leave_to=date('Y-m-d', strtotime($request->leave_to));
//count date difference from static method above
$dayTaken = self::countDiffDays($request->leave_from, $request->leave_to );
$lt = $request->leave_type;
$ltModel = LeaveType::where('id',$lt)->get()->first();
$getLeave = LeaveEmployee::where([['emp_id',auth()->user()->id],['ltype_id', $lt]])->get()->first();
if($getLeave == false){
$dayLeft = $ltModel->leave_quota - $dayTaken;
}else{
$dayLeft = $getLeave->remaining_leave - $dayTaken;
}
if(LeaveEmployee::where([['emp_id',auth()->user()->id],['ltype_id', $lt]])->exists() == true){
// If row exist just update
$getLeave->remaining_leave = $dayLeft;
$getLeave->save();
// Create a new row in sys_leave table
Leave::create([
'emp_id' => auth()->user()->id,
'leave_from' => $leave_from,
'leave_to' => $leave_to,
'ltype_id' => $request->leave_type,
'applied_on' => date('Y-m-d'),
'leave_reason' => $request->leave_reason,
'status' => 'pending',
'credit' => $request->credit
]);
}else{ // If not exist create a new row
Leave::create([
'emp_id' => auth()->user()->id,
'leave_from' => $leave_from,
'leave_to' => $leave_to,
'ltype_id' => $request->leave_type,
'applied_on' => date('Y-m-d'),
'leave_reason' => $request->leave_reason,
'status' => 'pending',
'credit' => $request->credit
]);
LeaveEmployee::create([
'emp_id' => auth()->user()->id,
'ltype_id' => $request->leave_type,
'remaining_leave' => $dayLeft
]);
}
return redirect('employee/leave')->with([
'message' => language_data('Leave Request Send Successfully')
]);
}
这是我对leave.blade.php。This is an example feature on other HRM to apply for Full day, AM and PM options.
的看法
<div class="modal fade" id="new-leave" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">{{language_data('Request For New Leave')}}</h4>
</div>
<form class="form-some-up" role="form" method="post" action="{{url('employee/leave/post-new-leave')}}">
<div class="modal-body">
<div class="form-group">
<label>{{language_data('Leave Type')}}</label>
<select name="leave_type" id="e20" class="form-control selectpicker" data-live-search="true">
@foreach($leave_type as $lt)
<option value="{{$lt->id}}">{{$lt->leave}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label>{{language_data('Leave From')}}</label>
<input type="text" class="form-control datePicker" name="leave_from" required="">
</div>
<div class="form-group">
<label>{{language_data('Leave To')}}</label>
<input type="text" class="form-control datePicker" name="leave_to" required="">
</div>
<div class="form-group">
<label>{{language_data('Leave Reason')}}</label>
<textarea class="textarea-wysihtml5 form-control" name="leave_reason"></textarea>
</div>
</div>
<div class="modal-footer">
<input type="hidden" name="_token" value="{{csrf_token()}}">
<button type="button" class="btn btn-default" data-dismiss="modal">{{language_data('Close')}}</button>
<button type="submit" class="btn btn-primary">{{language_data('Send')}}</button>
</div>
</form>
</div>
</div>
</div>