/** * Get the last day from date range * * @param \Opit\OpitHrm\LeaveBundle\Entity\Leave $leave * @param \Opit\OpitHrm\LeaveBundle\Model\LeaveRequestService $leaveRequestService * @param integer $leftToAvail * @return DateTime */ protected function calculateLeaveEndDate(Leave $leave, LeaveRequestService $leaveRequestService, $leftToAvail) { $leaveStartDate = $leave->getStartDate(); $leaveEndDate = clone $leaveStartDate; $countLeaveDays = $leaveRequestService->countLeaveDays($leaveStartDate, $leaveEndDate); while ($countLeaveDays !== $leftToAvail) { $leaveEndDate = date_add($leaveEndDate, date_interval_create_from_date_string('1 day')); $countLeaveDays = $leaveRequestService->countLeaveDays($leaveStartDate, $leaveEndDate); } return $leaveEndDate; }