foreach ($date_rows as $date_data) {
             $prev_total_time = 0;
             if (isset($date_meal_total_group[$user_date_stamp][$date_data['meal_policy_id']])) {
                 $prev_total_time = $date_meal_total_group[$user_date_stamp][$date_data['meal_policy_id']]['total_time'];
             }
             $date_data['total_time'] = $date_data['total_time'] + $prev_total_time;
             $date_meal_total_group[$user_date_stamp][$date_data['meal_policy_id']] = $date_data;
         }
     }
     $date_total_meal_ids = array_unique($date_total_meal_ids);
     sort($date_total_meal_ids);
     $date_meal_policy_total_rows = TimeSheetFormatArrayByDate($date_meal_total_group, $date_total_meal_ids, $calendar_array, 'meal_policy');
     //var_dump($date_meal_policy_total_rows);
 }
 $bplf = new BreakPolicyListFactory();
 $break_policy_options = $bplf->getByCompanyIdArray($current_company->getId());
 unset($bplf);
 $udtlf->getByCompanyIDAndUserIdAndStatusAndTypeAndStartDateAndEndDate($current_company->getId(), $user_id, 10, 110, $start_date, $end_date);
 if ($udtlf->getRecordCount() > 0) {
     foreach ($udtlf as $udt_obj) {
         $user_date_stamp = TTDate::strtotime($udt_obj->getColumn('user_date_stamp'));
         if ($udt_obj->getBreakPolicyID() !== FALSE and isset($break_policy_options[$udt_obj->getBreakPolicyID()])) {
             $break_policy = $break_policy_options[$udt_obj->getBreakPolicyID()];
         } else {
             $break_policy = TTi18n::gettext('No Break Policy');
         }
         $date_break_policy_totals[$user_date_stamp][] = array('date_stamp' => $udt_obj->getColumn('user_date_stamp'), 'id' => $udt_obj->getId(), 'user_date_id' => $udt_obj->getUserDateId(), 'status_id' => $udt_obj->getStatus(), 'type_id' => $udt_obj->getType(), 'over_time_policy_id' => $udt_obj->getOverTimePolicyID(), 'break_policy_id' => $udt_obj->getbreakPolicyID(), 'break_policy' => $break_policy, 'department_id' => $udt_obj->getDepartment(), 'total_time' => $udt_obj->getTotalTime(), 'total_time_display' => abs($udt_obj->getTotalTime()), 'override' => $udt_obj->getOverride());
         $date_break_policy_total_policy_ids[] = (int) $udt_obj->getBreakPolicyID();
         $date_total_break_policy_ids[] = (int) $udt_obj->getBreakPolicyID();
     }
 }
         $data = array('id' => $pg_obj->getId(), 'name' => $pg_obj->getName(), 'meal_policy_ids' => $pg_obj->getMealPolicy(), 'break_policy_ids' => $pg_obj->getBreakPolicy(), 'holiday_policy_ids' => $pg_obj->getHolidayPolicy(), 'exception_policy_control_id' => $pg_obj->getExceptionPolicyControlID(), 'user_ids' => $pg_obj->getUser(), 'over_time_policy_ids' => $pg_obj->getOverTimePolicy(), 'premium_policy_ids' => $pg_obj->getPremiumPolicy(), 'round_interval_policy_ids' => $pg_obj->getRoundIntervalPolicy(), 'accrual_policy_ids' => $pg_obj->getAccrualPolicy(), 'created_date' => $pg_obj->getCreatedDate(), 'created_by' => $pg_obj->getCreatedBy(), 'updated_date' => $pg_obj->getUpdatedDate(), 'updated_by' => $pg_obj->getUpdatedBy(), 'deleted_date' => $pg_obj->getDeletedDate(), 'deleted_by' => $pg_obj->getDeletedBy());
     }
 }
 $none_array_option = array('0' => TTi18n::gettext('-- None --'));
 $ulf = new UserListFactory();
 $user_options = $ulf->getByCompanyIDArray($current_company->getId(), FALSE, TRUE);
 $otplf = new OverTimePolicyListFactory();
 $over_time_policy_options = Misc::prependArray($none_array_option, $otplf->getByCompanyIDArray($current_company->getId(), FALSE));
 $pplf = new PremiumPolicyListFactory();
 $premium_policy_options = Misc::prependArray($none_array_option, $pplf->getByCompanyIDArray($current_company->getId(), FALSE));
 $riplf = new RoundIntervalPolicyListFactory();
 $round_interval_policy_options = Misc::prependArray($none_array_option, $riplf->getByCompanyIDArray($current_company->getId(), FALSE));
 $mplf = new MealPolicyListFactory();
 $meal_options = Misc::prependArray($none_array_option, $mplf->getByCompanyIdArray($current_company->getId(), FALSE));
 $bplf = new BreakPolicyListFactory();
 $break_options = Misc::prependArray($none_array_option, $bplf->getByCompanyIdArray($current_company->getId(), FALSE));
 $epclf = new ExceptionPolicyControlListFactory();
 $exception_options = Misc::prependArray($none_array_option, $epclf->getByCompanyIdArray($current_company->getId(), FALSE));
 $hplf = new HolidayPolicyListFactory();
 $holiday_policy_options = Misc::prependArray($none_array_option, $hplf->getByCompanyIdArray($current_company->getId(), FALSE));
 $aplf = new AccrualPolicyListFactory();
 $aplf->getByCompanyIdAndTypeID($current_company->getId(), array(20, 30));
 //Calendar and Hour based.
 $accrual_options = Misc::prependArray($none_array_option, $aplf->getArrayByListFactory($aplf, FALSE));
 //Select box options;
 $data['user_options'] = $user_options;
 $data['over_time_policy_options'] = $over_time_policy_options;
 $data['premium_policy_options'] = $premium_policy_options;
 $data['round_interval_policy_options'] = $round_interval_policy_options;
 $data['accrual_policy_options'] = $accrual_options;
 $data['meal_options'] = $meal_options;
        }
    default:
        if (isset($id)) {
            BreadCrumb::setCrumb($title);
            $splf = new SchedulePolicyListFactory();
            $splf->getByIdAndCompanyID($id, $current_company->getID());
            foreach ($splf as $sp_obj) {
                //Debug::Arr($station,'Department', __FILE__, __LINE__, __METHOD__,10);
                $data = array('id' => $sp_obj->getId(), 'name' => $sp_obj->getName(), 'over_time_policy_id' => $sp_obj->getOverTimePolicyID(), 'absence_policy_id' => $sp_obj->getAbsencePolicyID(), 'meal_policy_id' => $sp_obj->getMealPolicyID(), 'break_policy_ids' => $sp_obj->getBreakPolicy(), 'start_stop_window' => $sp_obj->getStartStopWindow(), 'created_date' => $sp_obj->getCreatedDate(), 'created_by' => $sp_obj->getCreatedBy(), 'updated_date' => $sp_obj->getUpdatedDate(), 'updated_by' => $sp_obj->getUpdatedBy(), 'deleted_date' => $sp_obj->getDeletedDate(), 'deleted_by' => $sp_obj->getDeletedBy());
            }
        } elseif ($action != 'submit') {
            $data = array('start_stop_window' => 3600);
        }
        $aplf = new AbsencePolicyListFactory();
        $absence_options = $aplf->getByCompanyIDArray($current_company->getId(), TRUE);
        $otplf = new OverTimePolicyListFactory();
        $over_time_options = $otplf->getByCompanyIDArray($current_company->getId(), TRUE, array('type_id' => '= 200'));
        $mplf = new MealPolicyListFactory();
        $meal_options = $mplf->getByCompanyIDArray($current_company->getId(), TRUE);
        $bplf = new BreakPolicyListFactory();
        $break_options = $bplf->getByCompanyIdArray($current_company->getId(), TRUE);
        //Select box options;
        $data['over_time_options'] = $over_time_options;
        $data['absence_options'] = $absence_options;
        $data['meal_options'] = $meal_options;
        $data['break_options'] = $break_options;
        $smarty->assign_by_ref('data', $data);
        break;
}
$smarty->assign_by_ref('spf', $spf);
$smarty->display('policy/EditSchedulePolicy.tpl');