/**
  * Display Row
  *
  * @param array $departments
  * @param int $level
  *
  * @return void
  */
 public function display_rows($departments = array(), $level = 0)
 {
     global $per_page;
     $results = new \WeDevs\ERP\HRM\Models\Department();
     $departments = erp_array_to_object($results->orderby('id', 'desc')->get()->toArray());
     $this->_display_rows_hierarchical($departments, $this->get_pagenum(), $per_page);
 }
Пример #2
0
/**
 * Get all the departments of a company
 *
 * @param  int  the company id
 *
 * @return array  list of departments
 */
function erp_hr_get_departments($args = [])
{
    $defaults = array('number' => 20, 'offset' => 0, 'orderby' => 'id', 'order' => 'asc', 'no_object' => false);
    $args = wp_parse_args($args, $defaults);
    $cache_key = 'erp-get-departments';
    $results = wp_cache_get($cache_key, 'wp-erp');
    $department = new \WeDevs\ERP\HRM\Models\Department();
    if (isset($args['s'])) {
        $results = $department->where('title', 'LIKE', '%' . $_GET['s'] . '%')->get()->toArray();
        $results = erp_array_to_object($results);
    }
    if (false === $results) {
        $results = $department->get()->toArray();
        $results = erp_array_to_object($results);
        wp_cache_set($cache_key, $results, 'wp-erp');
    }
    $results = erp_parent_sort($results);
    $departments = [];
    if ($results) {
        foreach ($results as $key => $row) {
            if (true === $args['no_object']) {
                $departments[] = $row;
            } else {
                $departments[] = new WeDevs\ERP\HRM\Department(intval($row->id));
            }
        }
    }
    return $departments;
}
Пример #3
0
/**
 * Get all the departments of a company
 *
 * @param  int  the company id
 *
 * @return array  list of departments
 */
function erp_hr_get_departments()
{
    $cache_key = 'erp-get-departments';
    $results = wp_cache_get($cache_key, 'wp-erp');
    if (false === $results) {
        $results = erp_array_to_object(\WeDevs\ERP\HRM\Models\Department::all()->toArray());
        wp_cache_set($cache_key, $results, 'wp-erp');
    }
    return $results;
}
Пример #4
0
/**
 * Get all the departments of a company
 *
 * @param  int  the company id
 *
 * @return array  list of departments
 */
function erp_hr_get_designations($args = array())
{
    $defaults = array('number' => 20, 'offset' => 0, 'orderby' => 'title', 'order' => 'ASC');
    $args = wp_parse_args($args, $defaults);
    $cache_key = 'erp-designations';
    $designations = wp_cache_get($cache_key, 'wp-erp');
    $designation = new \WeDevs\ERP\HRM\Models\Designation();
    if (false === $designations) {
        $results = $designation->skip($args['offset'])->take($args['number'])->orderBy($args['orderby'], $args['order'])->get()->toArray();
        $designations = erp_array_to_object($results);
        wp_cache_set($cache_key, $designations, 'wp-erp');
    }
    return $designations;
}
Пример #5
0
/**
 * Get all peoples
 *
 * @since 1.0
 *
 * @param $args array
 *
 * @return array
 */
function erp_get_peoples($args = [])
{
    global $wpdb;
    $defaults = ['type' => 'all', 'number' => 20, 'offset' => 0, 'orderby' => 'id', 'order' => 'ASC', 'trashed' => false, 'meta_query' => [], 'count' => false, 'include' => [], 'exclude' => []];
    $args = wp_parse_args($args, $defaults);
    $people_type = is_array($args['type']) ? implode('-', $args['type']) : $args['type'];
    $cache_key = 'erp-people-' . $people_type . '-' . md5(serialize($args));
    $items = wp_cache_get($cache_key, 'wp-erp');
    if (false === $items) {
        $people = new WeDevs\ERP\Framework\Models\People();
        // Check if want all data without any pagination
        if ($args['number'] != '-1') {
            $people = $people->skip($args['offset'])->take($args['number']);
        }
        // Check if meta query apply
        if (!empty($args['meta_query'])) {
            $people_tb = $wpdb->prefix . 'erp_peoples';
            $peoplemeta_tb = $wpdb->prefix . 'erp_peoplemeta';
            $meta_key = isset($args['meta_query']['meta_key']) ? $args['meta_query']['meta_key'] : '';
            $meta_value = isset($args['meta_query']['meta_value']) ? $args['meta_query']['meta_value'] : '';
            $compare = isset($args['meta_query']['compare']) ? $args['meta_query']['compare'] : '=';
            $people = $people->leftjoin($peoplemeta_tb, $people_tb . '.id', '=', $peoplemeta_tb . '.erp_people_id')->select(array($people_tb . '.*', $peoplemeta_tb . '.meta_key', $peoplemeta_tb . '.meta_value'))->where($peoplemeta_tb . '.meta_key', $meta_key)->where($peoplemeta_tb . '.meta_value', $compare, $meta_value);
        }
        // Check if render only soft deleted row
        if ($args['trashed']) {
            $people = $people->onlyTrashed();
        }
        // Check is the row want to search
        if (isset($args['s']) && !empty($args['s'])) {
            $arg_s = $args['s'];
            $people = $people->where('first_name', 'LIKE', "%{$arg_s}%")->orWhere('last_name', 'LIKE', "%{$arg_s}%")->orWhere('company', 'LIKE', "%{$arg_s}%");
        }
        $people = apply_filters('erp_people_query_object', $people);
        // Render all collection of data according to above filter (Main query)
        $items = $people->type($args['type'])->orderBy($args['orderby'], $args['order'])->get()->toArray();
        $items = erp_array_to_object($items);
        // Check if args count true, then return total count customer according to above filter
        if ($args['count']) {
            $items = $people->type($args['type'])->count();
        }
        wp_cache_set($cache_key, $items, 'wp-erp');
    }
    return $items;
}
Пример #6
0
 /**
  * Get logs base on criteria
  *
  * @since 0.1
  *
  * @param  array $data
  *
  * @return object [collection of log]
  */
 public function get($args = array())
 {
     global $wpdb;
     $defaults = array('number' => 20, 'offset' => 0, 'no_object' => false);
     $args = wp_parse_args($args, $defaults);
     $where = $results = [];
     $audits = new \WeDevs\ERP\Admin\Models\Audit_Log();
     $audit_log = $audits->leftjoin($wpdb->users, 'created_by', '=', $wpdb->users . '.ID')->select($wpdb->users . '.display_name', $wpdb->prefix . 'erp_audit_log.*');
     if (isset($args['component']) && !empty($args['component'])) {
         $audit_log = $audit_log->where('component', $args['component']);
     }
     if (isset($args['sub_component']) && !empty($args['sub_component'])) {
         $audit_log = $audit_log->where('sub_component', $args['sub_component']);
     }
     if (isset($args['old_value']) && !empty($args['old_value'])) {
         $audit_log = $audit_log->where('old_value', $args['old_value']);
     }
     if (isset($args['new_value']) && !empty($args['new_value'])) {
         $audit_log = $audit_log->where('new_value', $args['new_value']);
     }
     if (isset($args['changetype']) && !empty($args['changetype'])) {
         $audit_log = $audit_log->where('changetype', $args['changetype']);
     }
     if (isset($args['created_by']) && !empty($args['created_by'])) {
         $audit_log = $audit_log->where('created_by', (int) $args['created_by']);
     }
     $cache_key = 'erp-get-audit-log' . md5(serialize($args));
     $results = wp_cache_get($cache_key, 'wp-erp');
     $users = array();
     if (false === $results) {
         $results = $audit_log->skip($args['offset'])->take($args['number'])->get()->toArray();
         $results = erp_array_to_object($results);
         wp_cache_set($cache_key, $results, 'wp-erp', HOUR_IN_SECONDS);
     }
     return $results;
 }
/**
 * Get all transaction
 *
 * @param $args array
 *
 * @return array
 */
function erp_ac_get_all_transaction($args = array())
{
    global $wpdb;
    $defaults = array('type' => 'expense', 'number' => 20, 'offset' => 0, 'orderby' => 'issue_date', 'order' => 'DESC');
    $args = wp_parse_args($args, $defaults);
    $cache_key = 'erp-ac-transaction-all-' . md5(serialize($args));
    $items = wp_cache_get($cache_key, 'erp-accounting');
    if (false === $items) {
        $transaction = new WeDevs\ERP\Accounting\Model\Transaction();
        if (isset($args['user_id']) && !empty($args['user_id'])) {
            $transaction = $transaction->where('user_id', '=', $args['user_id']);
        }
        if (isset($args['start_date']) && !empty($args['start_date'])) {
            $transaction = $transaction->where('issue_date', '>=', $args['start_date']);
        }
        if (isset($args['end_date']) && !empty($args['end_date'])) {
            $transaction = $transaction->where('issue_date', '<=', $args['end_date']);
        }
        $items = $transaction->skip($args['offset'])->take($args['number'])->type($args['type'])->orderBy($args['orderby'], $args['order'])->orderBy('created_at', $args['order'])->get()->toArray();
        $items = erp_array_to_object($items);
        wp_cache_set($cache_key, $items, 'erp-accounting');
    }
    return $items;
}
Пример #8
0
 /**
  * Get Performance
  *
  * @return array
  */
 public function get_performance($type = '')
 {
     $performance = array('reviews' => array(), 'comments' => array(), 'goals' => array());
     $results = erp_array_to_object(\WeDevs\ERP\HRM\Models\Performance::all()->toArray());
     if ($results) {
         foreach ($results as $key => $value) {
             if (isset($performance[$value->type])) {
                 $performance[$value->type][] = $value;
             }
         }
     }
     if (!empty($type) && isset($performance[$type])) {
         return $performance[$type];
     }
     return $performance;
 }
Пример #9
0
/**
 * Get calendar leave events
 *
 * @param   array|boolean $get
 *
 * @since 0.1
 *
 * @return array
 */
function erp_hr_get_calendar_leave_events($get = false, $user_id = false)
{
    global $wpdb;
    $employee_tb = $wpdb->prefix . 'erp_hr_employees';
    $users_tb = $wpdb->users;
    $request_tb = $wpdb->prefix . 'erp_hr_leave_requests';
    $policy_tb = $wpdb->prefix . 'erp_hr_leave_policies';
    $employee = new \WeDevs\ERP\HRM\Models\Employee();
    $leave_request = new \WeDevs\ERP\HRM\Models\Leave_request();
    $department = isset($get['department']) && !empty($get['department']) && $get['department'] != '-1' ? intval($get['department']) : false;
    $designation = isset($get['designation']) && !empty($get['designation']) && $get['designation'] != '-1' ? intval($get['designation']) : false;
    if (!$get) {
        $request = $leave_request->leftJoin($users_tb, $request_tb . '.user_id', '=', $users_tb . '.ID')->leftJoin($policy_tb, $request_tb . '.policy_id', '=', $policy_tb . '.id')->select($users_tb . '.display_name', $request_tb . '.*', $policy_tb . '.color');
        if ($user_id) {
            $request = $request->where($request_tb . '.user_id', $user_id);
        }
        return erp_array_to_object($request->get()->toArray());
    }
    if ($department && $designation) {
        $leave_requests = erp_array_to_object($leave_request->leftJoin($employee_tb, $request_tb . '.user_id', '=', $employee_tb . '.user_id')->leftJoin($users_tb, $request_tb . '.user_id', '=', $users_tb . '.ID')->leftJoin($policy_tb, $request_tb . '.policy_id', '=', $policy_tb . '.id')->select($users_tb . '.display_name', $request_tb . '.*', $policy_tb . '.color')->where($employee_tb . '.designation', '=', $designation)->where($employee_tb . '.department', '=', $department)->get()->toArray());
    } else {
        if ($designation) {
            $leave_requests = erp_array_to_object($leave_request->leftJoin($employee_tb, $request_tb . '.user_id', '=', $employee_tb . '.user_id')->leftJoin($users_tb, $request_tb . '.user_id', '=', $users_tb . '.ID')->leftJoin($policy_tb, $request_tb . '.policy_id', '=', $policy_tb . '.id')->select($users_tb . '.display_name', $request_tb . '.*', $policy_tb . '.color')->where($employee_tb . '.designation', '=', $designation)->get()->toArray());
        } else {
            if ($department) {
                $leave_requests = erp_array_to_object($leave_request->leftJoin($employee_tb, $request_tb . '.user_id', '=', $employee_tb . '.user_id')->leftJoin($users_tb, $request_tb . '.user_id', '=', $users_tb . '.ID')->leftJoin($policy_tb, $request_tb . '.policy_id', '=', $policy_tb . '.id')->select($users_tb . '.display_name', $request_tb . '.*', $policy_tb . '.color')->where($employee_tb . '.department', '=', $department)->get()->toArray());
            }
        }
    }
    return $leave_requests;
}
Пример #10
0
/**
 * Get Employee Announcement List
 *
 * @since 0.1
 *
 * @param  integer $user_id
 *
 * @return array
 */
function erp_hr_employee_dashboard_announcement($user_id)
{
    global $wpdb;
    return erp_array_to_object(\WeDevs\ERP\HRM\Models\Announcement::join($wpdb->posts, 'post_id', '=', $wpdb->posts . '.ID')->where('user_id', '=', $user_id)->orderby($wpdb->posts . '.post_date', 'desc')->take(8)->get()->toArray());
}
Пример #11
0
/**
 * Get all campaign
 *
 * @since 1.0
 *
 * @return array
 */
function erp_crm_get_campaigns($args = [])
{
    global $wpdb;
    $defaults = ['number' => 20, 'offset' => 0, 'orderby' => 'created_at', 'order' => 'DESC', 'count' => false, 'withgroup' => true];
    $args = wp_parse_args($args, $defaults);
    $cache_key = 'erp-crm-campaign-' . md5(serialize($args));
    $items = wp_cache_get($cache_key, 'wp-erp');
    if (false === $items) {
        $campaigns = new \WeDevs\ERP\CRM\Models\Campaign();
        if ($args['withgroup']) {
            $campaigns = $campaigns->with('groups');
        }
        // Check if want all data without any pagination
        if ($args['number'] != '-1') {
            $campaigns = $campaigns->skip($args['offset'])->take($args['number']);
        }
        // Check is the row want to search
        if (isset($args['s']) && !empty($args['s'])) {
            $arg_s = $args['s'];
            $campaigns = $campaigns->where('title', 'LIKE', "%{$arg_s}%")->orWhere('description', 'LIKE', "%{$arg_s}%");
        }
        // Render all collection of data according to above filter (Main query)
        $results = $campaigns->get()->toArray();
        $items = erp_array_to_object($results);
        // Check if args count true, then return total count customer according to above filter
        if ($args['count']) {
            $items = WeDevs\ERP\CRM\Models\Campaign::count();
        }
        wp_cache_set($cache_key, $items, 'wp-erp');
    }
    return $items;
}
Пример #12
0
/**
 * ERP dashboard leave calendar widget
 *
 * @since 0.1
 *
 * @return void
 */
function erp_hr_dashboard_widget_leave_calendar()
{
    $user_id = get_current_user_id();
    $leave_requests = erp_hr_get_calendar_leave_events(false, $user_id);
    $holidays = erp_array_to_object(\WeDevs\ERP\HRM\Models\Leave_Holiday::all()->toArray());
    $events = [];
    $holiday_events = [];
    $event_data = [];
    foreach ($leave_requests as $key => $leave_request) {
        $events[] = array('id' => $leave_request->id, 'title' => $leave_request->display_name, 'start' => $leave_request->start_date, 'end' => $leave_request->end_date, 'url' => erp_hr_url_single_employee($leave_request->user_id), 'color' => $leave_request->color, 'img' => get_avatar($leave_request->user_id, 16));
    }
    foreach ($holidays as $key => $holiday) {
        $holiday_events[] = ['id' => $holiday->id, 'title' => $holiday->title, 'start' => $holiday->start, 'end' => $holiday->end, 'color' => '#FF5354', 'img' => '', 'holiday' => true];
    }
    $event_data = array_merge($events, $holiday_events);
    ?>
    <style>
        .fc-time {
            display:none;
        }
        .erp-leave-avatar img {
            border-radius: 50%;
            margin: 3px 7px 0 0;

        }
        .erp-calendar-filter {
            margin: 15px 0px;
        }
        .fc-title {
            position: relative;
            top: -4px;
        }
    </style>

    <?php 
    if (erp_hr_get_assign_policy_from_entitlement($user_id)) {
        ?>
        <div class="erp-hr-new-leave-request-wrap">
            <a href="#" class="button button-primary" id="erp-hr-new-leave-req"><?php 
        _e('Take a Leave', 'wp-erp');
        ?>
</a>
        </div>
    <?php 
    }
    ?>

    <div id="erp-hr-calendar"></div>

    <script>
    ;jQuery(document).ready(function($) {

        $('#erp-hr-calendar').fullCalendar({
            header: {
                left: 'prev,next today',
                center: 'title',
                right: 'month,agendaWeek,agendaDay'
            },
            editable: false,
            eventLimit: true, // allow "more" link when too many events
            events: <?php 
    echo json_encode($event_data);
    ?>
,
            eventRender: function(event, element, calEvent) {
                if ( event.holiday ) {
                    element.find('.fc-content').find('.fc-title').css({ 'top':'0px', 'left' : '3px', 'fontSize' : '13px', 'padding':'2px' });
                };
                if( event.img != 'undefined' ) {
                    element.find('.fc-content').find('.fc-title').before( $("<span class=\"fc-event-icons erp-leave-avatar\">"+event.img+"</span>") );
                }
            },
        });
    });

</script>
    <?php 
}