public function generateEndDate(LeavePeriodDataHolder $leavePeriodDataHolder)
 {
     $isLeavePeriodStartOnFeb29th = $leavePeriodDataHolder->getIsLeavePeriodStartOnFeb29th();
     $nonLeapYearLeavePeriodStartDate = $leavePeriodDataHolder->getNonLeapYearLeavePeriodStartDate();
     $dateFormat = $leavePeriodDataHolder->getDateFormat();
     $leavePeriodStartDate = $leavePeriodDataHolder->getLeavePeriodStartDate();
     $leavePeriodStartDateTimestamp = strtotime($leavePeriodStartDate);
     if ($isLeavePeriodStartOnFeb29th == 'Yes') {
         $nextYear = date('Y', strtotime('+1 year', $leavePeriodStartDateTimestamp));
         if ($nextYear % 4 == 0) {
             return $nextYear . '-02-28';
         } else {
             $nextLeavePeriodStartDate = $nextYear . '-' . $nonLeapYearLeavePeriodStartDate;
             $leavePeriodEndDateTimestamp = strtotime('-1 day', strtotime($nextLeavePeriodStartDate));
             return date($dateFormat, $leavePeriodEndDateTimestamp);
         }
     } else {
         return date($dateFormat, strtotime('+1 year, -1 day', $leavePeriodStartDateTimestamp));
     }
 }