147 lines
5.6 KiB
PHP
147 lines
5.6 KiB
PHP
<?php
|
|
|
|
defined('BASEPATH') or exit('No direct script access allowed');
|
|
|
|
class Client_groups_model extends App_Model {
|
|
public function __construct() {
|
|
parent::__construct();
|
|
}
|
|
|
|
/**
|
|
* Add new customer group
|
|
* @param array $data $_POST data
|
|
*/
|
|
public function add($data, $playground = false) {
|
|
$this->db->insert(db_prefix() . ($playground ? 'playground_' : '') . 'customers_groups', $data);
|
|
$insert_id = $this->db->insert_id();
|
|
if ($insert_id) {
|
|
log_activity('New Customer Group Created [ID:' . $insert_id . ', Name:' . $data['name'] . ']');
|
|
return $insert_id;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Get customer groups where customer belongs
|
|
* @param mixed $id customer id
|
|
* @return array
|
|
*/
|
|
public function get_customer_groups($id, $playground = false) {
|
|
$this->db->where('customer_id', $id);
|
|
return $this->db->get(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups')->result_array();
|
|
}
|
|
|
|
/**
|
|
* Get all customer groups
|
|
* @param string $id
|
|
* @return mixed
|
|
*/
|
|
public function get_groups($id = '', $playground = false) {
|
|
if (is_numeric($id)) {
|
|
$this->db->where('id', $id);
|
|
return $this->db->get(db_prefix() . ($playground ? 'playground_' : '') . 'customers_groups')->row();
|
|
}
|
|
$this->db->order_by('name', 'asc');
|
|
return $this->db->get(db_prefix() . ($playground ? 'playground_' : '') . 'customers_groups')->result_array();
|
|
}
|
|
|
|
/**
|
|
* Edit customer group
|
|
* @param array $data $_POST data
|
|
* @return boolean
|
|
*/
|
|
public function edit($data, $playground = false) {
|
|
$this->db->where('id', $data['id']);
|
|
$this->db->update(db_prefix() . ($playground ? 'playground_' : '') . 'customers_groups', ['name' => $data['name'], ]);
|
|
if ($this->db->affected_rows() > 0) {
|
|
log_activity('Customer Group Updated [ID:' . $data['id'] . ']');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Delete customer group
|
|
* @param mixed $id group id
|
|
* @return boolean
|
|
*/
|
|
public function delete($id, $playground = false) {
|
|
$this->db->where('id', $id);
|
|
$this->db->delete(db_prefix() . ($playground ? 'playground_' : '') . 'customers_groups');
|
|
if ($this->db->affected_rows() > 0) {
|
|
$this->db->where('groupid', $id);
|
|
$this->db->delete(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups');
|
|
hooks()->do_action('customer_group_deleted', $id);
|
|
log_activity('Customer Group Deleted [ID:' . $id . ']');
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Update/sync customer groups where belongs
|
|
* @param mixed $id customer id
|
|
* @param mixed $groups_in
|
|
* @return boolean
|
|
*/
|
|
public function sync_customer_groups($id, $groups_in, $playground = false) {
|
|
if ($groups_in == false) {
|
|
unset($groups_in);
|
|
}
|
|
$affectedRows = 0;
|
|
$customer_groups = $this->get_customer_groups($id);
|
|
if (sizeof($customer_groups) > 0) {
|
|
foreach ($customer_groups as $customer_group) {
|
|
if (isset($groups_in)) {
|
|
if (!in_array($customer_group['groupid'], $groups_in)) {
|
|
$this->db->where('customer_id', $id);
|
|
$this->db->where('id', $customer_group['id']);
|
|
$this->db->delete(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups');
|
|
if ($this->db->affected_rows() > 0) {
|
|
$affectedRows++;
|
|
}
|
|
}
|
|
} else {
|
|
$this->db->where('customer_id', $id);
|
|
$this->db->delete(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups');
|
|
if ($this->db->affected_rows() > 0) {
|
|
$affectedRows++;
|
|
}
|
|
}
|
|
}
|
|
if (isset($groups_in)) {
|
|
foreach ($groups_in as $group) {
|
|
$this->db->where('customer_id', $id);
|
|
$this->db->where('groupid', $group);
|
|
$_exists = $this->db->get(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups')->row();
|
|
if (!$_exists) {
|
|
if (empty($group)) {
|
|
continue;
|
|
}
|
|
$this->db->insert(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups', ['customer_id' => $id, 'groupid' => $group, ]);
|
|
if ($this->db->affected_rows() > 0) {
|
|
$affectedRows++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (isset($groups_in)) {
|
|
foreach ($groups_in as $group) {
|
|
if (empty($group)) {
|
|
continue;
|
|
}
|
|
$this->db->insert(db_prefix() . ($playground ? 'playground_' : '') . 'customer_groups', ['customer_id' => $id, 'groupid' => $group, ]);
|
|
if ($this->db->affected_rows() > 0) {
|
|
$affectedRows++;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if ($affectedRows > 0) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
}
|