You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
572 lines
25 KiB
572 lines
25 KiB
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
class Event_wait_list_model extends CI_Model {
|
|
|
|
public function __construct() {
|
|
parent::__construct();
|
|
$this->load->model("user_activity_log_model");
|
|
}
|
|
|
|
public function check_subscription($user_id, $event_schedule_id)
|
|
{
|
|
$query = $this->db->select('ewl.status, ewl.number_of_places')
|
|
->from('event_wait_list ewl')
|
|
->join('event_schedule es', 'es.event_schedule_id = ewl.event_schedule_id', 'left')
|
|
->join('event e', 'e.event_id = es.event_id', 'left')
|
|
->where('es.event_status !=', 'CANCEL')
|
|
->where('ewl.event_schedule_id', $event_schedule_id)
|
|
->where('ewl.wait_list_subscriber', $user_id)
|
|
->where('(CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= 0')
|
|
->where('es.event_status IN (\'FULL\', \'AVAILABLE\')')
|
|
->where('ewl.status !=', 0)
|
|
->order_by('ewl.date_time', 'DESC')
|
|
->limit(1)
|
|
->get()
|
|
->row();
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
if($query->status == 0){
|
|
return false;
|
|
}else{
|
|
return $query->number_of_places;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function count_all_waitlist_subscription($user_id, $event_schedule_id, $event_id, $page=2, $seats_reserved=0)
|
|
{
|
|
if($page == 2){
|
|
|
|
$query = $this->db->query("
|
|
SELECT ewl.status, ewl.number_of_places
|
|
FROM event_wait_list ewl
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = ewl.event_schedule_id
|
|
AND es.event_schedule_id = ?
|
|
LEFT JOIN event e ON e.event_id = es.event_id
|
|
WHERE ewl.event_schedule_id = ?
|
|
AND es.event_schedule_id = ?
|
|
AND ewl.wait_list_subscriber = ?
|
|
AND es.event_status != 'CANCEL'
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= 0
|
|
AND es.event_status IN ('FULL', 'AVAILABLE')
|
|
AND ewl.status != 0
|
|
".(($seats_reserved > 0)? "AND ewl.number_of_places = '".$this->db->escape_str($seats_reserved)."'":"")."
|
|
ORDER BY ewl.date_time DESC
|
|
LIMIT 1
|
|
", array($event_schedule_id, $event_schedule_id, $event_schedule_id, $user_id))->row();
|
|
|
|
} else{
|
|
|
|
$query = $this->db->query("SELECT SUM(ewl.number_of_places) as number_of_places
|
|
FROM event_wait_list ewl
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = ewl.event_schedule_id
|
|
LEFT JOIN event e ON e.event_id = es.event_id
|
|
WHERE ewl.wait_list_subscriber = ".$this->db->escape($user_id)."
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= 0
|
|
and es.event_status IN ('FULL', 'AVAILABLE')
|
|
AND es.event_status != 'CANCEL'
|
|
and es.event_id = ".$this->db->escape($event_id)."
|
|
and es.back_office_status IN(1,2,3)
|
|
and ewl.status = 1")->row();
|
|
}
|
|
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
return $query->number_of_places;
|
|
}
|
|
}
|
|
public function count_all_waitlist_subscription_for_myres_history($user_id, $event_schedule_id, $event_id)
|
|
{
|
|
$query = $this->db->query("SELECT SUM(ewl.number_of_places) as number_of_places
|
|
FROM event_wait_list ewl
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = ewl.event_schedule_id
|
|
LEFT JOIN event e ON e.event_id = es.event_id
|
|
WHERE ewl.wait_list_subscriber = ?
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= 0
|
|
AND es.event_id = ?
|
|
AND ewl.status = 1", [$user_id, $event_id])->row();
|
|
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
return $query->number_of_places;
|
|
}
|
|
}
|
|
|
|
public function count_wl_registration_by_event_schedule($event_schedule_id){
|
|
$query = $this->db->query("SELECT SUM(ewl.number_of_places) as number_of_places
|
|
FROM event_wait_list ewl
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = ewl.event_schedule_id
|
|
WHERE es.event_schedule_id = ".$this->db->escape($event_schedule_id)."
|
|
and es.back_office_status NOT IN(6)
|
|
and ewl.status = 1")->row();
|
|
|
|
return ($query->number_of_places)?$query->number_of_places:0;
|
|
}
|
|
|
|
public function register_waitlist($registration) {
|
|
|
|
$registeredSubcriberWL = false;
|
|
|
|
// Remaining waiting list seats
|
|
$remaining_seats = $this->db->select('quota_waiting_list_seat')
|
|
->from('event_schedule')
|
|
->where('event_schedule_id', $registration['event_schedule_id'])
|
|
->limit(1)
|
|
->get()
|
|
->row();
|
|
|
|
if($remaining_seats->quota_waiting_list_seat < 1) { return false; }
|
|
else{
|
|
|
|
if($registration["action"] == "register") {
|
|
// Register Client and get get the registration id
|
|
$registeredSubcriberWL = $this->add_reserved_seats($registration);
|
|
|
|
} else if($registration["action"] == "modify") {
|
|
// Update registration
|
|
$registeredSubcriberWL = $this->update_reserved_seats($registration);
|
|
}
|
|
|
|
// Subtract from quota_waiting_list_seat seats
|
|
$this->db->query("
|
|
UPDATE event_schedule
|
|
SET quota_waiting_list_seat = (CASE
|
|
WHEN (quota_waiting_list_seat - ?) <= 0 THEN 0
|
|
ELSE (quota_waiting_list_seat- ?)
|
|
END)
|
|
WHERE event_schedule_id = ? ", array($registration['seats_reserved'], $registration['seats_reserved'], $registration['event_schedule_id']));
|
|
}
|
|
|
|
// Update event_status and back_office_status
|
|
$check_seats = $this->db->select('quota_waiting_list_seat, remaining_seat, event_status, back_office_status')
|
|
->from('event_schedule')
|
|
->where('event_schedule_id', $registration['event_schedule_id'])
|
|
->limit(1)
|
|
->get()
|
|
->row();
|
|
|
|
if($check_seats->quota_waiting_list_seat <= 0 && ($check_seats->remaining_seat >=0 && $check_seats->event_status!="AVAILABLE")){
|
|
$this->db->where('event_schedule_id', $registration['event_schedule_id']);
|
|
$this->db->update('event_schedule', array('back_office_status' => 3, 'event_status' => "FULL"));
|
|
|
|
$event_schedule_id = $registration['event_schedule_id'];
|
|
$log_desc = "No more available waitlist seats. Event schedule is now locked for any registrations. Backoffice status changed from Open to Locked.";
|
|
$act_log = $this->user_activity_log_model->add_activity_log(array(
|
|
"description" => $log_desc." - event_schedule_id : ".$this->db->escape($event_schedule_id),
|
|
"user_id" => $_SESSION["logged_in"]["user_id"],
|
|
"action" => "EDIT",
|
|
"table_origin" => "event_schedule",
|
|
"reference_id" => $event_schedule_id
|
|
));
|
|
}
|
|
|
|
// Update event concurrent process
|
|
$this->db->set('process_status', 0);
|
|
$this->db->where('login_id', $registration['login_id']);
|
|
$this->db->where('process_type', $registration['process_type']);
|
|
$this->db->update('event_concurrent_process');
|
|
|
|
return $registeredSubcriberWL;
|
|
}
|
|
|
|
private function add_reserved_seats($registration){
|
|
|
|
$this->db->insert('event_wait_list',
|
|
array(
|
|
'event_schedule_id' => $registration['event_schedule_id'],
|
|
'wait_list_subscriber' => $registration['user_id'],
|
|
'number_of_places' => $registration['seats_reserved'],
|
|
'user_agent' => $registration['user_agent'],
|
|
'isModeratedButAllowedInWL' => $registration['isModeratedButAllowedInWL']?? 0,
|
|
'is_user_moderated' => $registration['is_user_moderated']?? 1
|
|
)
|
|
);
|
|
//get the registration id
|
|
return $this->db->insert_id();
|
|
|
|
}
|
|
|
|
private function update_reserved_seats($registration){
|
|
$row = $this->db->select("wait_list_id")
|
|
->from("event_wait_list")
|
|
->where("event_schedule_id", $registration['event_schedule_id'])
|
|
->where("wait_list_subscriber", $registration['user_id'])
|
|
->where("status", 1)
|
|
->get()
|
|
->row();
|
|
if($row){
|
|
$this->db->query("
|
|
UPDATE event_wait_list
|
|
SET number_of_places = number_of_places + ?
|
|
WHERE event_schedule_id =?
|
|
AND wait_list_subscriber = ?
|
|
AND wait_list_id = ?
|
|
AND status =1", array($registration['seats_reserved'], $registration['event_schedule_id'], $registration['user_id'], $row->wait_list_id));
|
|
|
|
if($this->db->affected_rows()){
|
|
return $row->wait_list_id;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_waitlist_registration_details($user_id, $event_schedule_id){
|
|
return $this->db->query("select ew.*,
|
|
(CASE
|
|
WHEN ew.number_of_places = 0 THEN 1
|
|
ELSE ew.number_of_places
|
|
END) as seats_reserved
|
|
from event_wait_list ew
|
|
INNER JOIN event_schedule es USING(event_schedule_id)
|
|
where ew.wait_list_subscriber = ?
|
|
and ew.event_schedule_id = ?
|
|
AND es.event_status != 'CANCEL'
|
|
and ew.status = ?
|
|
limit 1
|
|
", array($user_id, $event_schedule_id, 1))->row();
|
|
}
|
|
|
|
public function seats_reserved($user_id, $event_schedule_id){
|
|
$query = $this->db->select('ew.number_of_places')
|
|
->from('event_wait_list ew')
|
|
->join('event_schedule es', 'ew.event_schedule_id = es.event_schedule_id')
|
|
->where('es.event_status !=', 'CANCEL')
|
|
->where('ew.wait_list_subscriber', $user_id)
|
|
->where('ew.event_schedule_id', $event_schedule_id)
|
|
->where('ew.status', 1)
|
|
->order_by('ew.date_time', 'DESC')
|
|
->limit(1)
|
|
->get();
|
|
$guests = $query->row();
|
|
return $guests->number_of_places;
|
|
}
|
|
|
|
public function prepare_list_for_reinvitation_email($email_schedule_id, $event_schedule_id, $limit){
|
|
/*
|
|
Email key will be used to get the group of recipient ids in one single query
|
|
which will also be used to insert into the table "event_email_recipient_other_detail"
|
|
to get the exact id and exact connection.
|
|
*/
|
|
$email_key = "2E".generate_random_keys(8);
|
|
|
|
/* Set moderated users */
|
|
|
|
$this->db->query("INSERT INTO
|
|
event_email_recipient(event_schedule_id, email_type_id, email_key, reference_id)
|
|
(SELECT ?, ?, ?, ewl.wait_list_id
|
|
FROM event_wait_list ewl
|
|
LEFT JOIN event_schedule es
|
|
ON es.event_schedule_id = ewl.event_schedule_id
|
|
LEFT JOIN event e
|
|
ON e.event_id = es.event_id
|
|
WHERE es.back_office_status IN(2,3)
|
|
AND e.status = 1
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= ewl.number_of_places
|
|
AND ewl.wait_list_id NOT IN(SELECT eer.reference_id
|
|
FROM event_email_recipient eer
|
|
WHERE eer.email_status IN(1, 0, 5)
|
|
AND eer.event_schedule_id = ?
|
|
AND eer.email_type_id = 2
|
|
GROUP BY eer.reference_id)
|
|
AND ewl.status = 1
|
|
AND ewl.event_schedule_id= ?
|
|
ORDER BY is_user_moderated ASC, ewl.wait_list_id ASC
|
|
LIMIT 0, ".((int)($limit))." )", array(
|
|
$event_schedule_id,
|
|
2,
|
|
$email_key,
|
|
$event_schedule_id,
|
|
$event_schedule_id
|
|
));
|
|
|
|
//insert into other details table
|
|
$this->db->query("INSERT INTO event_email_recipient_other_detail(email_sched_reference_id, email_sched_reference, email_recipient_id)
|
|
(SELECT ?, ?, email_recipient_id
|
|
FROM event_email_recipient eer
|
|
WHERE eer.email_type_id = ?
|
|
AND eer.email_key = ?
|
|
AND eer.event_schedule_id= ? )",
|
|
array($email_schedule_id,
|
|
1,
|
|
2, //email_type_id for reinvitation waitlist
|
|
$email_key,
|
|
$event_schedule_id)
|
|
);
|
|
|
|
return $this->db->affected_rows();
|
|
}
|
|
|
|
public function get_data_waitlists(){
|
|
$this->load->model("event_schedule_model");
|
|
$result = $this->db->select("
|
|
e.event_id,
|
|
es.event_schedule_id,
|
|
e.title as event_title,
|
|
et.event_type,
|
|
es.event_status,
|
|
".$this->event_schedule_model->use_diffent_address()."
|
|
(CASE WHEN e.rate > 0 THEN e.rate ELSE \"\" END) as event_rate,
|
|
efa.file_name as event_picture,
|
|
e.description as event_description,
|
|
es.start_date_time as event_start_date")
|
|
->select("DAYNAME(es.start_date_time) AS event_start_day_name", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%e') AS event_start_day", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%m') AS event_start_month", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%M') AS event_start_month_name", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->from(" event_email_recipient eer")
|
|
->join("event_schedule es", "es.event_schedule_id = eer.event_schedule_id", "left")
|
|
->join("event e", "e.event_id = es.event_id", "left")
|
|
->join('event_type et', 'et.event_type_id = e.event_type_id',"left")
|
|
->join('event_wait_list ewl', 'ewl.event_schedule_id = eer.event_schedule_id AND ewl.wait_list_id = eer.reference_id AND ewl.status=1',"left")
|
|
->join('event_file_attachment efa', 'efa.event_id = e.event_id AND efa.status=1 AND efa.attachment_type =1', "left")
|
|
->where("(eer.email_status = 0 OR (eer.email_status = 3 AND eer.email_number_of_send_attempt <=3))")
|
|
->where("e.status",1)
|
|
->where("ewl.event_schedule_id = eer.event_schedule_id ")
|
|
->where("eer.email_type_id", 2)
|
|
->where("eer.event_schedule_id IN(
|
|
select eses.event_schedule_id
|
|
from event_schedule_email_status eses
|
|
where eses.event_schedule_id = eer.event_schedule_id
|
|
and eses.email_type_id = 2
|
|
and eses.status = 1
|
|
)")
|
|
// ->where("(CASE
|
|
// WHEN eer.email_sched_reference = 1
|
|
// THEN
|
|
// (SELECT eeds.email_type_id
|
|
// FROM event_email_schedule ees
|
|
// LEFT JOIN `event_email_default_setting` eeds
|
|
// ON `eeds`.`email_tpl_setting_id` = `ees`.`reference`
|
|
// AND eeds.email_type_id = 2
|
|
// WHERE ees.email_schedule_id = eer.email_sched_reference_id
|
|
// AND ees.event_schedule_id = eer.event_schedule_id
|
|
// /*AND ees.email_schedule_status= 1*/
|
|
// LIMIT 1)
|
|
// WHEN eer.email_sched_reference = 2
|
|
// THEN
|
|
// (SELECT eeds.email_type_id
|
|
// FROM event_email_default_setting eeds
|
|
// WHERE eeds.email_tpl_setting_id = eer.email_sched_reference_id
|
|
// /*AND eeds.email_tpl_setting_status= 1*/
|
|
// AND eeds.email_type_id = 2
|
|
// LIMIT 1)
|
|
// END) = 2")
|
|
// ->where("eer.reference_id IN(
|
|
// SELECT wait_list_id
|
|
// FROM event_wait_list
|
|
// WHERE wait_list_id = eer.reference_id
|
|
// AND event_id = eer.event_id
|
|
// AND status = 1
|
|
// )")
|
|
->where("ewl.wait_list_id = eer.reference_id")
|
|
->where("ewl.status",1)
|
|
->where_in("es.back_office_status", array(2,3))
|
|
->where("es.start_date_time > NOW()")
|
|
->where("(CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >", 0)
|
|
->where("es.event_status", "AVAILABLE")
|
|
->group_by("eer.event_schedule_id")
|
|
->get();
|
|
|
|
if ($result->num_rows() > 0) {
|
|
return $result->result();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_waitlists_subscribers($event_schedule_id, $limit){
|
|
$result = $this->db->query("SELECT
|
|
ewl.wait_list_subscriber as subscriber_id,
|
|
eer.reference_id,
|
|
u.email_address,
|
|
ewl.number_of_places as seats_reserved,
|
|
CONCAT(u.first_name, ' ', u.last_name) AS subscriber,
|
|
u.first_name subs_prenom,
|
|
u.last_name subs_nom,
|
|
eer.email_recipient_id,
|
|
eer.email_number_of_send_attempt
|
|
FROM
|
|
event_email_recipient eer
|
|
LEFT JOIN event_wait_list ewl
|
|
ON ewl.event_schedule_id = eer.event_schedule_id
|
|
AND ewl.wait_list_id = eer.reference_id
|
|
AND ewl.status=1
|
|
LEFT JOIN user u
|
|
ON u.user_id = ewl.wait_list_subscriber
|
|
LEFT JOIN event_schedule es
|
|
ON es.event_schedule_id = eer.event_schedule_id
|
|
LEFT JOIN event e
|
|
ON e.event_id = es.event_id
|
|
WHERE ewl.status=1
|
|
AND eer.reference_id = ewl.wait_list_id
|
|
AND e.status = 1
|
|
AND eer.email_type_id = 2
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) >= ewl.number_of_places
|
|
/*AND
|
|
(CASE
|
|
WHEN eer.email_sched_reference = 1
|
|
THEN
|
|
(SELECT eeds.email_type_id
|
|
FROM event_email_schedule ees
|
|
LEFT JOIN `event_email_default_setting` eeds
|
|
ON `eeds`.`email_tpl_setting_id` = `ees`.`reference`
|
|
AND eeds.email_type_id = 2
|
|
WHERE ees.email_schedule_id = eer.email_sched_reference_id
|
|
AND ees.event_schedule_id = eer.event_schedule_id
|
|
AND ees.email_schedule_status= 1
|
|
LIMIT 1)
|
|
WHEN eer.email_sched_reference = 2
|
|
THEN
|
|
(SELECT eeds.email_type_id
|
|
FROM event_email_default_setting eeds
|
|
WHERE eeds.email_tpl_setting_id = eer.email_sched_reference_id
|
|
AND eeds.email_tpl_setting_status= 1
|
|
AND eeds.email_type_id = 2
|
|
LIMIT 1)
|
|
END) = 2*/
|
|
AND ewl.wait_list_subscriber NOT IN(
|
|
SELECT er.subscriber
|
|
FROM event_registration er
|
|
WHERE er.event_schedule_id = eer.event_schedule_id
|
|
AND er.subscriber = ewl.wait_list_subscriber
|
|
AND er.status = 1
|
|
)
|
|
AND (eer.email_status = 0 OR (eer.email_status = 3 AND eer.email_number_of_send_attempt <=3))
|
|
AND eer.event_schedule_id = ?
|
|
AND es.start_date_time >= NOW()
|
|
AND (CASE
|
|
WHEN e.seat_feature = 2 THEN e.remaining_combined_seat
|
|
ELSE es.remaining_seat
|
|
END) > 0
|
|
AND es.event_status = 'AVAILABLE'
|
|
GROUP BY eer.reference_id
|
|
LIMIT 0, ".((int)($limit)), array($event_schedule_id));
|
|
|
|
if ($result->num_rows() > 0) {
|
|
return $result->result();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_waitlist_reinvitation_email_data($email_recipient_id, $subscriber){
|
|
$this->load->model("event_schedule_model");
|
|
$result = $this->db->select("
|
|
e.event_id,
|
|
es.event_schedule_id,
|
|
e.title as event_title,
|
|
es.event_status,
|
|
et.event_type,
|
|
u.email_address,
|
|
".$this->event_schedule_model->use_diffent_address()."
|
|
(CASE WHEN e.rate > 0 THEN e.rate ELSE \"\" END) as event_rate,
|
|
ewl.number_of_places as seats_reserved,
|
|
efa.file_name as event_picture,
|
|
eet.email_tpl_detail,
|
|
e.description as event_description,
|
|
es.start_date_time as event_start_date")
|
|
->select("DAYNAME(es.start_date_time) AS event_start_day_name", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%e') AS event_start_day", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%m') AS event_start_month", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%M') AS event_start_month_name", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->select("CONCAT(u.first_name, ' ', u.last_name) AS subscriber", FALSE)
|
|
->select("u.first_name AS subs_prenom", FALSE)
|
|
->select("u.last_name AS subs_nom", FALSE)
|
|
// ->select("CONCAT('(', u.email_address, ')') AS email_address", FALSE)
|
|
->from(" event_email_recipient eer")
|
|
->join("event_schedule es", "es.event_schedule_id = eer.event_schedule_id", "left")
|
|
->join("event e", "e.event_id = es.event_id", "left")
|
|
->join("event_wait_list ewl", "ewl.wait_list_id = eer.reference_id", "left")
|
|
->join("user u", "u.user_id = ewl.wait_list_subscriber", "left")
|
|
->join('event_type et', 'et.event_type_id = e.event_type_id',"left")
|
|
->join('event_email_template eet', 'eet.email_tpl_id = eer.email_tpl_id',"left")
|
|
->join('event_file_attachment efa', 'efa.event_id = e.event_id AND efa.status=1 AND efa.attachment_type =1', "left")
|
|
->where("eer.email_recipient_id", $email_recipient_id)
|
|
->group_by("eer.event_schedule_id")
|
|
->get();
|
|
if($result->num_rows() > 0){
|
|
return $result->row();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/* Check if can still reserve more than 1 date per event schedule? */
|
|
public function count_all_waitlist_user_registration_per_event($event_id, $user_id){
|
|
|
|
$result = $this->db->select('COUNT(ewl.status) as total_registration', FALSE)
|
|
->from('event_wait_list ewl')
|
|
->join('event_schedule es', 'es.event_schedule_id = ewl.event_schedule_id', 'left')
|
|
->where('es.event_id', $event_id)
|
|
->where('es.event_status !=', 'CANCEL')
|
|
->where_in('es.back_office_status', array(2,3))
|
|
->where('ewl.wait_list_subscriber', $user_id)
|
|
->where('ewl.status !=', 0)
|
|
->order_by('ewl.date_time', 'DESC')
|
|
->get()
|
|
->row();
|
|
|
|
if($result){
|
|
return $result->total_registration;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/**
|
|
* Reset the moderation of the subscribers in the WL so that once the event
|
|
* becomes available again the subscriber who are already
|
|
* in the WL can now reserve in the event regardless of the moderation
|
|
* @method resetModeratedReservationsFronWaitingListByEventSchedule
|
|
* @param int $eventScheduleId
|
|
* @return void
|
|
*/
|
|
public function resetModeratedReservationsFronWaitingListByEventSchedule(int $eventScheduleId) :void {
|
|
$this->db->where('event_schedule_id', $eventScheduleId);
|
|
$this->db->where('status', 1);
|
|
$this->db->update('event_wait_list', array('isModeratedButAllowedInWL' => 0));
|
|
}
|
|
|
|
/**
|
|
* Reset the moderation of the subscribers in the WL so that once the event
|
|
* becomes available again the subscriber who are already
|
|
* in the WL can now reserve in the event regardless of the moderation
|
|
* @method resetModeratedReservationsFronWaitingListByEvent
|
|
* @param int $event_id
|
|
* @return void
|
|
*/
|
|
public function resetModeratedReservationsFronWaitingListByEvent(int $event_id) :void {
|
|
|
|
$this->db->query(
|
|
"UPDATE event_wait_list ewl
|
|
LEFT JOIN event_schedule es USING(event_schedule_id)
|
|
SET ewl.isModeratedButAllowedInWL = 0
|
|
WHERE ewl.isModeratedButAllowedInWL = 1
|
|
AND ewl.status = 1
|
|
AND es.event_id = ?", $event_id);
|
|
}
|
|
}
|
|
|