Exemplo n.º 1
0
 /**
  * Gets the leave dates
  *
  * Returns the date list between the start and end date of the
  * two dates
  *
  * @since 0.1
  *
  * @return void
  */
 public function leave_request_dates()
 {
     $this->verify_nonce('wp-erp-hr-nonce');
     $id = isset($_POST['employee_id']) && $_POST['employee_id'] ? intval($_POST['employee_id']) : false;
     if (!$id) {
         $this->send_error('Please select employee', 'wp-erp');
     }
     $policy_id = isset($_POST['type']) && $_POST['type'] ? $_POST['type'] : false;
     if (!$policy_id) {
         $this->send_error('Please select leave type', 'wp-erp');
     }
     $start_date = isset($_POST['from']) ? sanitize_text_field($_POST['from']) : date_i18n('Y-m-d');
     $end_date = isset($_POST['to']) ? sanitize_text_field($_POST['to']) : date_i18n('Y-m-d');
     $valid_date_range = erp_hrm_is_valid_leave_date_range_within_financial_date_range($start_date, $end_date);
     $financial_start_date = date('Y-m-d', strtotime(erp_financial_start_date()));
     $financial_end_date = date('Y-m-d', strtotime(erp_financial_end_date()));
     if ($start_date > $end_date) {
         $this->send_error('Invalid date range', 'wp-erp');
     }
     if (!$valid_date_range) {
         $this->send_error(sprintf('Date range must be within %s to %s', erp_format_date($financial_start_date), erp_format_date($financial_end_date)));
     }
     $leave_record_exisst = erp_hrm_is_leave_recored_exist_between_date($start_date, $end_date, $id);
     if ($leave_record_exisst) {
         $this->send_error(__('Leave recored found withing this range!', 'wp-erp'));
     }
     $is_policy_valid = erp_hrm_is_valid_leave_duration($start_date, $end_date, $policy_id, $id);
     if (!$is_policy_valid) {
         $this->send_error(__('Your leave duration exceeded entitlement!', 'wp-erp'));
     }
     $days = erp_hr_get_work_days_between_dates($start_date, $end_date);
     if (is_wp_error($days)) {
         $this->send_error($days->get_error_message());
     }
     // just a bit more readable date format
     foreach ($days['days'] as &$date) {
         $date['date'] = erp_format_date($date['date'], 'D, M d');
     }
     $days['total'] = sprintf('%d %s', $days['total'], _n('day', 'days', $days['total'], 'wp-erp'));
     $this->send_success($days);
 }
Exemplo n.º 2
0
/**
 * Add a new leave request
 *
 * @since 0.1
 *
 * @param  array $args
 *
 * @return integet request_id
 */
function erp_hr_leave_insert_request($args = array())
{
    global $wpdb;
    $defaults = array('user_id' => 0, 'leave_policy' => 0, 'start_date' => current_time('mysql'), 'end_date' => current_time('mysql'), 'reason' => '', 'status' => 0);
    $args = wp_parse_args($args, $defaults);
    extract($args);
    if (!intval($user_id)) {
        return new WP_Error('no-employee', __('No employee ID provided.', 'wp-error'));
    }
    if (!intval($leave_policy)) {
        return new WP_Error('no-policy', __('No leave policy provided.', 'wp-error'));
    }
    $period = erp_hr_get_work_days_between_dates($start_date, $end_date);
    if (is_wp_error($period)) {
        return $period;
    }
    // prepare the periods
    $leaves = array();
    if ($period['days']) {
        foreach ($period['days'] as $date) {
            if (!$date['count']) {
                continue;
            }
            $leaves[] = array('date' => $date['date'], 'length_hours' => '08:00:00', 'length_days' => '1.00', 'start_time' => '00:00:00', 'end_time' => '00:00:00', 'duration_type' => 1);
        }
    }
    if ($leaves) {
        $request = array('user_id' => $user_id, 'policy_id' => $leave_policy, 'days' => count($leaves), 'start_date' => $start_date, 'end_date' => $end_date, 'reason' => wp_kses_post($reason), 'status' => 2, 'created_by' => get_current_user_id(), 'created_on' => current_time('mysql'));
        if ($wpdb->insert($wpdb->prefix . 'erp_hr_leave_requests', $request)) {
            $request_id = $wpdb->insert_id;
            foreach ($leaves as $leave) {
                $leave['request_id'] = $request_id;
                $wpdb->insert($wpdb->prefix . 'erp_hr_leaves', $leave);
            }
            do_action('erp_hr_leave_new', $request_id, $request, $leaves);
            return $request_id;
        }
    }
    return false;
}
Exemplo n.º 3
0
 /**
  * Gets the leave dates
  *
  * Returns the date list between the start and end date of the
  * two dates
  *
  * @return void
  */
 public function leave_request_dates()
 {
     $this->verify_nonce('wp-erp-hr-nonce');
     $id = isset($_POST['employee_id']) ? intval($_POST['employee_id']) : get_current_user_id();
     $start_date = isset($_POST['from']) ? sanitize_text_field($_POST['from']) : date_i18n('Y-m-d');
     $end_date = isset($_POST['to']) ? sanitize_text_field($_POST['to']) : date_i18n('Y-m-d');
     $days = erp_hr_get_work_days_between_dates($start_date, $end_date);
     if (is_wp_error($days)) {
         $this->send_error($days->get_error_message());
     }
     // just a bit more readable date format
     foreach ($days['days'] as &$date) {
         $date['date'] = erp_format_date($date['date'], 'D, M d');
     }
     $days['total'] = sprintf('%d %s', $days['total'], _n('day', 'days', $days['total'], 'wp-erp'));
     $this->send_success($days);
 }