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.
1434 lines
58 KiB
1434 lines
58 KiB
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
use app\core\auth\User as UserAuth;
|
|
|
|
class Event_registration_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('er.status, er.number_of_guest')
|
|
->from('event_registration er')
|
|
->join('event_schedule es', 'er.event_schedule_id = es.event_schedule_id')
|
|
->where('er.event_schedule_id', $event_schedule_id)
|
|
->where('es.event_status !=', 'CANCEL')
|
|
->where('er.subscriber', $user_id)
|
|
->where('er.status !=', 0)
|
|
->order_by('er.date_time', 'DESC')
|
|
->limit(1)
|
|
->get()
|
|
->row();
|
|
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
if($query->status == 0){
|
|
return false;
|
|
}else{
|
|
return $query->number_of_guest+1;
|
|
}
|
|
}
|
|
}
|
|
|
|
public function count_all_event_subscription($user_id, $event_schedule_id, $event_id, $page=2, $seats_reserved=0)
|
|
{
|
|
if($page == 2){
|
|
if (UserAuth::isLoggedInAsSubscriber()) {
|
|
$_where = "";
|
|
} else {
|
|
$_where = "AND es.event_status != 'CANCEL'";
|
|
}
|
|
$query = $this->db->query("
|
|
SELECT er.status, (number_of_guest+1) as number_of_guest
|
|
FROM event_registration er
|
|
INNER JOIN event_schedule es USING(event_schedule_id)
|
|
WHERE er.event_schedule_id = ?
|
|
AND er.subscriber = ?
|
|
$_where
|
|
AND er.status != 0
|
|
".(($seats_reserved > 0)? "AND (number_of_guest+1) = '".$this->db->escape_str($seats_reserved)."'":"")."
|
|
ORDER BY er.date_time DESC
|
|
LIMIT 1
|
|
", array($event_schedule_id, $user_id))->row();
|
|
|
|
} else{
|
|
|
|
$query = $this->db->query("SELECT SUM(er.number_of_guest+1) as number_of_guest
|
|
from event_registration er
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = er.event_schedule_id
|
|
where er.subscriber = ?
|
|
AND event_status != 'CANCEL'
|
|
and es.event_id = ?
|
|
and es.back_office_status IN(1,2,3)
|
|
and er.status = 1", array($user_id, $event_id))->row();
|
|
}
|
|
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
return $query->number_of_guest;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @method count all subscription regardless the event/backoffice status of the event
|
|
* count all reservations for all types of event status
|
|
*/
|
|
public function count_all_event_subscription_for_my_reservations($user_id, $event_schedule_id, $event_id)
|
|
{
|
|
/*
|
|
* count all reservations for all types of event status
|
|
*/
|
|
$query = $this->db->query("SELECT SUM(er.number_of_guest+1) as number_of_guest
|
|
from event_registration er
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = er.event_schedule_id
|
|
where er.subscriber = ".$user_id."
|
|
and es.event_id = ".$event_id."
|
|
and es.event_schedule_id = ".$event_schedule_id."
|
|
and er.status = 1")->row();
|
|
|
|
if(!$query){
|
|
return false;
|
|
} else {
|
|
return $query->number_of_guest;
|
|
}
|
|
}
|
|
|
|
public function count_registration_by_event_schedule($event_schedule_id){
|
|
$query = $this->db->query("SELECT SUM(er.number_of_guest+1) as number_of_guest
|
|
FROM event_registration er
|
|
LEFT JOIN event_schedule es ON es.event_schedule_id = er.event_schedule_id
|
|
AND es.event_schedule_id = ?
|
|
WHERE es.event_schedule_id = ?
|
|
and es.back_office_status NOT IN(6)
|
|
and er.status = 1", array($event_schedule_id, $event_schedule_id))->row();
|
|
|
|
return ($query->number_of_guest)?$query->number_of_guest:0;
|
|
}
|
|
|
|
public function register($registration, $ws = false)
|
|
{
|
|
/**
|
|
* Negative values not allowed
|
|
*/
|
|
if ((int) $registration['seats_reserved'] <= 0 && !$ws) {
|
|
return false;
|
|
}
|
|
|
|
$remaining_seats = $this->check_seats($registration['event_id'], 1);
|
|
|
|
if ((!$remaining_seats || $remaining_seats->remaining_seat < $registration['seats_reserved']) && !$ws) {
|
|
return false;
|
|
} else {
|
|
//by default
|
|
$registeredSubcriber = false;
|
|
|
|
if($registration["action"] == "register") {
|
|
// Register Client and get the registration id
|
|
$registeredSubcriber = $this->add_reserved_seats($registration);
|
|
//to do
|
|
if(($registration['workshop_session'] == 'DISTANCE-PRESENTIEL' && $registration['registration_type'] == 'soir-distance') || $registration['workshop_session'] == 'DISTANCE') {
|
|
$ds = array(
|
|
"user_id" => $registration['user_id'],
|
|
"event_id" => $registration['event_id'],
|
|
"registration_id" => $registeredSubcriber
|
|
);
|
|
$this->save_ateriel_distance_subscriber($ds);
|
|
}
|
|
|
|
} else if($registration["action"] == "modify") {
|
|
// Update registration
|
|
$registeredSubcriber = $this->update_reserved_seats($registration);
|
|
}
|
|
|
|
//update remaining seats
|
|
if(!$ws) {
|
|
$this->update_remaining_seat($registration);
|
|
}
|
|
}
|
|
|
|
if (isset($registration['login_id']) && isset($registration["process_type"])) {
|
|
// 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');
|
|
}
|
|
|
|
// check seats and update thes event_status and back_office_status
|
|
if(!$ws) {
|
|
$this->update_event_status($registration);
|
|
}
|
|
return $registeredSubcriber;
|
|
}
|
|
|
|
private function update_event_status($registration){
|
|
|
|
$check_seats = $this->check_seats($registration['event_id'], 0);
|
|
|
|
if($registration["seat_feature"] == 1){ //per date
|
|
|
|
if($check_seats->remaining_seat <= 0){
|
|
|
|
$this->db->where('event_id', $registration['event_id']);
|
|
|
|
if($check_seats->remaining_seat <= 0) {
|
|
$this->db->update('event', array('event_status' => "FULL", 'back_office_status' => 3));
|
|
$this->db->flush_cache();
|
|
$this->db->where('event_id', $registration['event_id']);
|
|
$this->db->update('event_schedule', array('event_status' => "FULL", 'back_office_status' => 3));
|
|
|
|
$event_schedule_id = $registration['event_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" => $registration['user_id'] ?? $_SESSION["logged_in"]["user_id"],
|
|
"action" => "EDIT",
|
|
"table_origin" => "event",
|
|
"reference_id" => $event_schedule_id
|
|
));
|
|
}
|
|
// else {
|
|
// $this->db->update('event', array('event_status' => "FULL", 'back_office_status' => 2));
|
|
|
|
// $event_schedule_id = $registration['event_id'];
|
|
// $log_desc = "No more available seats. Event schedule is now open for waitlist registration. Event status changed from Available to Full.";
|
|
// $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" => $registration['user_id'] ?? $_SESSION["logged_in"]["user_id"],
|
|
// "action" => "EDIT",
|
|
// "table_origin" => "event_schedule",
|
|
// "reference_id" => $event_schedule_id
|
|
// ));
|
|
// }
|
|
}
|
|
|
|
} else if($registration["seat_feature"] == 2){ //combine
|
|
//update all open events to FULL
|
|
|
|
if($check_seats->remaining_seat <= 0){
|
|
|
|
$this->db->where('event_id', $registration["event_id"]);
|
|
$this->db->where('back_office_status', 2);
|
|
$this->db->where('event_status !=', 'CANCEL');
|
|
|
|
if($check_seats->quota_waiting_list_seat <= 0) {
|
|
$this->db->where('event_status !=', 'FULL');
|
|
$this->db->where('back_office_status !=', '3');
|
|
$this->db->update('event_schedule', array('event_status' => "FULL", 'back_office_status' => 3, 'auto_event_status' => 1));
|
|
|
|
$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" => $registration['user_id'] ?? $_SESSION["logged_in"]["user_id"],
|
|
"action" => "EDIT",
|
|
"table_origin" => "event_schedule",
|
|
"reference_id" => $event_schedule_id
|
|
));
|
|
} else {
|
|
$this->db->where('event_status !=', 'FULL');
|
|
$this->db->where('event_status !=', '2');
|
|
$this->db->update('event_schedule', array('event_status' => "FULL", 'back_office_status' => 2, 'auto_event_status' => 1));
|
|
|
|
$event_schedule_id = $registration['event_schedule_id'];
|
|
$log_desc = "No more available seats. Event schedule is now open for waitlist registration. Event status changed from Available to Full.";
|
|
$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" => $registration['user_id'] ?? $_SESSION["logged_in"]["user_id"],
|
|
"action" => "EDIT",
|
|
"table_origin" => "event_schedule",
|
|
"reference_id" => $event_schedule_id
|
|
));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
public function update_remaining_seat($registration){
|
|
$event = $this->check_seats((int)$registration['event_id']);
|
|
$reserved_seats = $this->count_total_reserved_seats($registration['event_id']);
|
|
//if($registration["seat_feature"] == 1){
|
|
$this->db->query("
|
|
UPDATE event
|
|
SET remaining_combined_seat = ?
|
|
WHERE event_id =?", array($event->total_available_seat - $reserved_seats, $registration['event_id']));
|
|
|
|
// } else if($registration["seat_feature"] == 2){
|
|
|
|
// $this->db->query("
|
|
// UPDATE event e
|
|
// LEFT JOIN event_schedule es
|
|
// ON es.event_id = e.event_id
|
|
// SET e.remaining_combined_seat = (CASE
|
|
// WHEN (e.remaining_combined_seat - ?) <= 0 THEN 0
|
|
// ELSE (e.remaining_combined_seat - ?)
|
|
// END)
|
|
// WHERE es.event_schedule_id =?", array($registration['seats_reserved'], $registration['seats_reserved'], $registration['event_schedule_id']));
|
|
// }
|
|
}
|
|
|
|
private function check_seats($event_id, $check_type=0){
|
|
return $this->db->query("select
|
|
e.remaining_combined_seat as remaining_seat, e.total_available_seat
|
|
from event e
|
|
where e.back_office_status NOT IN(0,4,7,5,6)
|
|
and e.event_id = ?
|
|
and e.status =1
|
|
limit 1
|
|
", array($event_id))->row();
|
|
}
|
|
|
|
public function can_cancel_reservation($event_id){
|
|
return $this->db->query("select
|
|
e.*
|
|
from event e
|
|
where e.back_office_status NOT IN(0,4,7,5,6)
|
|
and e.event_id = ?
|
|
and e.status =1
|
|
limit 1
|
|
", array($event_id))->row();
|
|
}
|
|
|
|
private function add_reserved_seats($registration, $ws=false){
|
|
// Check Waitlist first
|
|
if(!$ws) {
|
|
$this->load->model('event_wait_list_deregistration_model');
|
|
|
|
$check_waitlist = $this->db->select('wait_list_id, number_of_places')
|
|
->from('event_wait_list')
|
|
->where('wait_list_subscriber', $registration['user_id'])
|
|
->where('event_id', $registration['event_id'])
|
|
->where('status', 1)
|
|
->get()
|
|
->row();
|
|
|
|
if($check_waitlist){
|
|
$registration["seats_cancelled"] = $check_waitlist->number_of_places;
|
|
$this->event_wait_list_deregistration_model->deregister_waitlist($registration);
|
|
}
|
|
}
|
|
|
|
$this->db->insert('event_registration',
|
|
array(
|
|
'event_id' => $registration['event_id'],
|
|
'subscriber' => $registration['user_id'],
|
|
'number_of_guest' => $registration['seats_reserved'],
|
|
'user_agent' => $registration['user_agent'],
|
|
'workshop_session' => $registration['workshop_session'],
|
|
'registration_type' => $registration['registration_type'],
|
|
)
|
|
);
|
|
return $this->db->insert_id();
|
|
}
|
|
|
|
private function update_reserved_seats($registration){
|
|
$row = $this->db->select("registration_id")
|
|
->from("event_registration")
|
|
->where("event_schedule_id", $registration['event_schedule_id'])
|
|
->where("subscriber", $registration['user_id'])
|
|
->where("status", 1)
|
|
->get()
|
|
->row();
|
|
if($row){
|
|
$this->db->query("
|
|
UPDATE event_registration
|
|
SET number_of_guest = number_of_guest + ?
|
|
WHERE event_schedule_id =?
|
|
AND subscriber = ?
|
|
AND registration_id = ?
|
|
AND status =1", array($registration['seats_reserved'], $registration['event_schedule_id'], $registration['user_id'], $row->registration_id));
|
|
|
|
if($this->db->affected_rows()){
|
|
return $row->registration_id;
|
|
}
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_registration_details($user_id, $event_schedule_id){
|
|
return $this->db->query("select er.*,
|
|
er.number_of_guest as seats_reserved
|
|
from event_registration er
|
|
INNER JOIN event es USING(event_id)
|
|
where er.subscriber = ?
|
|
AND es.event_status != 'CANCEL'
|
|
and er.event_id = ?
|
|
and er.status = ?
|
|
limit 1
|
|
", array($user_id, $event_schedule_id, 1))->row();
|
|
}
|
|
|
|
public function seats_reserved($user_id, $event_schedule_id){
|
|
$query = $this->db->select('number_of_guest')
|
|
->from('event_registration ereg')
|
|
->join("event_schedule evsched", "ereg.event_schedule_id = evsched.event_schedule_id")
|
|
->where('subscriber', $user_id)
|
|
->where('ereg.event_schedule_id', $event_schedule_id)
|
|
->where('status', 1)
|
|
->where('subscriber', $user_id)
|
|
->where('evsched.event_status !=', 'CANCEL')
|
|
->order_by('date_time', 'DESC')
|
|
->limit(1)
|
|
->get();
|
|
// echo var_dump($query);
|
|
$guests = $query->row();
|
|
if($guests) return $guests->number_of_guest + 1;
|
|
else return 0;
|
|
}
|
|
|
|
public function get_event_subscribers($event_schedule_id){
|
|
|
|
$result = $this->db->query("
|
|
SELECT
|
|
er.date_time as date_registered,
|
|
er.number_of_guest,
|
|
CONCAT(UCASE(LEFT(u.first_name, 1)), SUBSTRING(u.first_name, 2)) AS first_name,
|
|
CONCAT(UCASE(LEFT(u.last_name, 1)), SUBSTRING(u.last_name, 2)) AS last_name,
|
|
u.email_address,
|
|
(CASE
|
|
WHEN u.status = 1 THEN 'Activé'
|
|
ELSE 'Désactivé'
|
|
END) AS status,
|
|
us.additional_address as address_1,
|
|
us.address as city,
|
|
us.email_address as sub_email_address, us.phone as telephone_number,
|
|
us.mobile as mobile_number, us.subscription_date as subscription_date_op,
|
|
us.subscriber_id
|
|
FROM
|
|
event_registration er
|
|
LEFT JOIN
|
|
user u ON u.user_id = er.subscriber
|
|
LEFT JOIN
|
|
user_role ur ON u.role_id = ur.role_id
|
|
LEFT JOIN
|
|
user_subscriber us ON us.subscriber = u.user_id
|
|
WHERE
|
|
er.event_schedule_id = ?
|
|
AND
|
|
er.status = 1
|
|
AND
|
|
u.role_id IN(3)", array($event_schedule_id));
|
|
|
|
return $result->result();
|
|
}
|
|
|
|
public function get_event_subscribers_with_waitlist($event_id) {
|
|
$result = $this->db->query("
|
|
SELECT
|
|
u.user_id as subscriber_id,
|
|
CONCAT(UCASE(LEFT(u.first_name, 1)), SUBSTRING(u.first_name, 2)) AS first_name,
|
|
CONCAT(UCASE(LEFT(u.last_name, 1)), SUBSTRING(u.last_name, 2)) AS last_name,
|
|
u.email_address,
|
|
(CASE
|
|
WHEN er.status = 1 THEN 'Confirmé'
|
|
ELSE 'Confirmé'
|
|
END
|
|
) AS reservation_status,
|
|
DATE_FORMAT(er.date_time, '%e/%m/%Y') as reservation_date,
|
|
DATE_FORMAT(er.date_time, '%Hh%i') as reservation_time,
|
|
er.number_of_guest AS total_booked,
|
|
us.address as address_1,
|
|
us.additional_address as address_2,
|
|
us.country as country,
|
|
us.postal_code as code_postal,
|
|
us.city as city,
|
|
us.civility as civility,
|
|
DATE_FORMAT(us.birthday,'%d/%m/%Y') as birth_date,
|
|
us.phone as telephone_number,
|
|
us.mobile as mobile_number,
|
|
us.subscription_date as subscription_date_op
|
|
FROM
|
|
event_registration er
|
|
LEFT JOIN
|
|
user u ON u.user_id = er.subscriber
|
|
LEFT JOIN
|
|
user_role ur ON u.role_id = ur.role_id
|
|
LEFT JOIN
|
|
user_subscriber us ON us.subscriber = u.user_id
|
|
WHERE
|
|
er.event_id = ?
|
|
AND
|
|
er.status = 1
|
|
AND
|
|
u.role_id IN(3)", array($event_id));
|
|
|
|
return $result->result();
|
|
}
|
|
|
|
public function get_event_unsubscription($event_schedule_id){
|
|
$result = $this->db->query("
|
|
SELECT
|
|
der.seats_reserve as total_booked,
|
|
der.number_of_place as number_of_place_cancelled,
|
|
CONCAT(UCASE(LEFT(u.first_name, 1)), SUBSTRING(u.first_name, 2)) AS first_name,
|
|
CONCAT(UCASE(LEFT(u.last_name, 1)), SUBSTRING(u.last_name, 2)) AS last_name,
|
|
u.email_address,
|
|
der.user_agent as navigator,
|
|
DATE_FORMAT(er.date_time, '%e/%m/%Y') as reservation_date,
|
|
DATE_FORMAT(er.date_time, '%Hh%i') as reservation_time,
|
|
DATE_FORMAT(der.date_time, '%e/%m/%Y') as date_of_cancellation,
|
|
DATE_FORMAT(der.date_time, '%Hh%i') as time_of_cancellation,
|
|
us.address as address_1, us.additional_address as address_2, DATE_FORMAT(us.birthday,'%d/%m/%Y') as birth_date,
|
|
us.country as country, us.postal_code as code_postal, us.city as city, us.civility as civility,
|
|
us.email_address as sub_email_address, us.phone as telephone_number,
|
|
us.mobile as mobile_number, us.subscription_date as subscription_date_op,
|
|
us.subscriber_id
|
|
FROM
|
|
event_deregistration der
|
|
LEFT JOIN
|
|
event_registration er ON er.registration_id = der.registration_id
|
|
LEFT JOIN
|
|
user u ON u.user_id = der.subscriber
|
|
LEFT JOIN
|
|
user_role ur ON u.role_id = ur.role_id
|
|
LEFT JOIN
|
|
user_subscriber us ON us.subscriber = u.user_id
|
|
WHERE
|
|
der.event_schedule_id = ?
|
|
AND
|
|
u.role_id IN(3)", array($event_schedule_id));
|
|
|
|
return $result->result();
|
|
}
|
|
|
|
public function get_event_waitlist($event_schedule_id){
|
|
$result = $this->db->query("
|
|
SELECT
|
|
ewl.number_of_places as total_booked,
|
|
CONCAT(UCASE(LEFT(u.first_name, 1)), SUBSTRING(u.first_name, 2)) AS first_name,
|
|
CONCAT(UCASE(LEFT(u.last_name, 1)), SUBSTRING(u.last_name, 2)) AS last_name,
|
|
u.email_address,
|
|
ewl.user_agent as navigator,
|
|
DATE_FORMAT(ewl.date_time, '%e/%m/%Y') as reservation_date,
|
|
DATE_FORMAT(ewl.date_time, '%Hh%i') as reservation_time,
|
|
us.address as address_1, us.additional_address as address_2, DATE_FORMAT(us.birthday,'%d/%m/%Y') as birth_date,
|
|
us.country as country, us.postal_code as code_postal, us.city as city, us.civility as civility,
|
|
us.email_address as sub_email_address, us.phone as telephone_number,
|
|
us.mobile as mobile_number, us.subscription_date as subscription_date_op,
|
|
us.subscriber_id
|
|
FROM
|
|
event_wait_list ewl
|
|
LEFT JOIN
|
|
user u ON u.user_id = ewl.wait_list_subscriber
|
|
LEFT JOIN
|
|
user_role ur ON u.role_id = ur.role_id
|
|
LEFT JOIN
|
|
user_subscriber us ON us.subscriber = u.user_id
|
|
WHERE
|
|
ewl.event_schedule_id = ?
|
|
AND
|
|
ewl.status = 1
|
|
AND
|
|
u.role_id IN(3)", array($event_schedule_id));
|
|
|
|
return $result->result();
|
|
}
|
|
|
|
public function filter_reservations($user_id, $month, $city)
|
|
{
|
|
$query = $this->db->query('
|
|
SELECT
|
|
e.title,
|
|
er.date_time,
|
|
er.number_of_guest
|
|
FROM event e
|
|
LEFT JOIN event_schedule es ON es.event_id = e.event_id
|
|
LEFT JOIN event_registration er ON er.event_schedule_id = es.event_schedule_id
|
|
WHERE er.status = 1 AND er.subscriber = ?', array($user_id)
|
|
);
|
|
|
|
return $query->result();
|
|
}
|
|
|
|
public function prepare_list_for_reimnder_email($email_schedule, $event){
|
|
/*
|
|
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.
|
|
*/
|
|
$this->load->model('event_email_default_setting_model');
|
|
$email_key = "1E".generate_random_keys(8);
|
|
|
|
$this->db->query("INSERT INTO
|
|
event_email_recipient(email_type_id, email_key, reference_id, event_id)
|
|
(SELECT ?, ?, er.registration_id, er.event_id
|
|
FROM event_registration er
|
|
LEFT JOIN event e
|
|
ON e.event_id = er.event_id
|
|
WHERE e.back_office_status IN(2,3)
|
|
AND er.registration_id
|
|
NOT IN( SELECT eer.reference_id
|
|
FROM event_email_recipient eer
|
|
LEFT JOIN event_email_recipient_other_detail eerod
|
|
ON eerod.email_recipient_id = eer.email_recipient_id
|
|
WHERE eer.email_type_id = 3
|
|
AND eerod.email_sched_reference_id = ?
|
|
AND eerod.email_sched_reference = ?
|
|
AND eer.email_status IN(0, 5)
|
|
AND eer.event_id = ?
|
|
)
|
|
".$this->event_email_default_setting_model->get_query_for_email_schedule(3, $email_schedule->email_schedule_id, $email_schedule->email_sched_reference, "er")."
|
|
AND er.status = 1
|
|
AND er.event_id= ? )",
|
|
array(
|
|
3, //email_type_id for reminder email
|
|
$email_key,
|
|
$email_schedule->email_schedule_id,
|
|
$email_schedule->email_sched_reference,
|
|
$event->event_id,
|
|
$event->event_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_id= ? )",
|
|
array($email_schedule->email_schedule_id,
|
|
$email_schedule->email_sched_reference,
|
|
3, //email_type_id for reminder email
|
|
$email_key,
|
|
$event->event_id)
|
|
);
|
|
return $this->db->affected_rows();
|
|
}
|
|
|
|
public function get_data_reminder_email_list(){
|
|
$this->load->model("event_schedule_model");
|
|
|
|
$result = $this->db->select("
|
|
e.event_id,
|
|
e.title as event_title,
|
|
e.event_status,
|
|
e.workshop_author,
|
|
et.event_type,
|
|
e.description as event_description,
|
|
(SELECT
|
|
CONCAT(eeds.email_tpl_setting_sched, ' ',
|
|
(CASE
|
|
WHEN eeds.email_tpl_setting_sched_by = 'DAYS' THEN 'jours'
|
|
WHEN eeds.email_tpl_setting_sched_by = 'HOURS' THEN 'heures'
|
|
WHEN eeds.email_tpl_setting_sched_by = 'MINUTES' THEN 'minutes'
|
|
ELSE ''
|
|
END
|
|
))
|
|
FROM
|
|
event_email_default_setting eeds
|
|
WHERE
|
|
eerod.email_sched_reference_id = eeds.email_tpl_setting_id
|
|
AND eerod.email_sched_reference = 2
|
|
) as event_reminder_date,
|
|
|
|
(SELECT
|
|
timestampdiff(SECOND, ees.email_schedule_date, e.start_date_time)
|
|
FROM
|
|
event_email_schedule ees
|
|
WHERE
|
|
eerod.email_sched_reference_id = ees.email_schedule_id
|
|
AND eerod.email_sched_reference = 1
|
|
) as event_reminder_specific_date,
|
|
|
|
(CASE WHEN e.rate > 0 THEN e.rate ELSE \"\" END) as event_rate,
|
|
efa.file_name as event_picture")
|
|
->select("DAYNAME(e.start_date_time) AS event_start_day_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%e') AS event_start_day", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%m') AS event_start_month", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%M') AS event_start_month_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS start_date_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y-%m-%e %H:%i:%s') AS event_start_date_time", FALSE)
|
|
->select("e.start_date_time AS date_complete", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS commencement_de_lheure", FALSE)
|
|
->from(" event_email_recipient eer")
|
|
->join("event e", "e.event_id = eer.event_id AND e.event_status != 'CANCEL'", "left")
|
|
->join("event_registration er", "er.event_id = eer.event_id AND er.registration_id = eer.reference_id", "left")
|
|
->join('event_type et', 'et.event_type_id = e.event_type_id',"left")
|
|
->join('event_file_attachment efa', 'efa.event_id = e.event_id AND efa.status=1 AND efa.attachment_type =1', "left")
|
|
->join('event_email_recipient_other_detail eerod', 'eerod.email_recipient_id = eer.email_recipient_id', "left")
|
|
->where("(eer.email_status = 0 OR (eer.email_status = 3 AND eer.email_number_of_send_attempt <=3))")
|
|
->where("er.registration_id = eer.reference_id")
|
|
->where("eerod.email_recipient_id = eer.email_recipient_id")
|
|
->where("er.status",1)
|
|
->where("eer.event_id IN(
|
|
select eses.event_id
|
|
from event_schedule_email_status eses
|
|
where eses.event_id = eer.event_id
|
|
and eses.email_type_id = 3
|
|
and eses.status = 1
|
|
)")
|
|
->where("e.status",1)
|
|
->where("e.event_status != 'CANCEL'")
|
|
->where("eer.email_type_id",3)
|
|
->where("(CASE
|
|
WHEN eerod.email_sched_reference = 1
|
|
THEN (SELECT ees.email_schedule_date
|
|
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 = 3
|
|
WHERE ees.email_schedule_id = eerod.email_sched_reference_id
|
|
AND ees.event_schedule_id = eer.event_schedule_id
|
|
AND ees.email_schedule_status != 0
|
|
AND ees.email_schedule_date <= NOW()
|
|
ORDER BY ees.email_schedule_date ASC
|
|
LIMIT 1)
|
|
WHEN eerod.email_sched_reference = 2
|
|
THEN (SELECT (CASE
|
|
WHEN eeds.email_tpl_setting_sched_by = 'HOURS'
|
|
THEN DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched HOUR)
|
|
WHEN eeds.email_tpl_setting_sched_by = 'DAYS'
|
|
THEN DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched DAY)
|
|
ELSE DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched MINUTE)
|
|
END) as email_schedule_date
|
|
FROM event_email_default_setting eeds
|
|
WHERE eeds.email_type_id = 3
|
|
AND eeds.email_tpl_setting_id = eerod.email_sched_reference_id
|
|
AND eeds.email_tpl_setting_status= 1
|
|
AND
|
|
(CASE
|
|
WHEN eeds.email_tpl_setting_sched_by = 'HOURS'
|
|
THEN DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched HOUR)
|
|
WHEN eeds.email_tpl_setting_sched_by = 'DAYS'
|
|
THEN DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched DAY)
|
|
ELSE DATE_SUB(e.start_date_time, INTERVAL email_tpl_setting_sched MINUTE)
|
|
END) <= NOW()
|
|
LIMIT 1)
|
|
END) <= NOW()
|
|
")
|
|
->where_in("e.back_office_status", array(2,3))
|
|
->where("e.start_date_time >= NOW()")
|
|
->group_by("eer.event_id")
|
|
->get();
|
|
|
|
if ($result->num_rows() > 0) {
|
|
return $result->result();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_event_subscribers_list($event_start_date_time, $event_id, $limit=100){
|
|
// public function get_event_subscribers_list($event_start_date_time, $event_schedule_id, $limit=100){
|
|
$result = $this->db->query("SELECT
|
|
es.event_schedule_id,
|
|
er.subscriber as subscriber_id,
|
|
eer.reference_id,
|
|
(er.number_of_guest+1) as seats_reserved,
|
|
u.email_address,
|
|
CONCAT(u.first_name, ' ', u.last_name) AS subscriber,
|
|
u.last_name subs_nom,
|
|
u.first_name subs_prenom,
|
|
eer.email_recipient_id,
|
|
eer.email_number_of_send_attempt,
|
|
(SELECT
|
|
CONCAT(email_tpl_setting_sched, ' ',
|
|
(CASE
|
|
WHEN email_tpl_setting_sched_by = 'DAYS' THEN 'jours'
|
|
WHEN email_tpl_setting_sched_by = 'HOURS' THEN 'heures'
|
|
WHEN email_tpl_setting_sched_by = 'MINUTES' THEN 'minutes'
|
|
ELSE ''
|
|
END
|
|
))
|
|
FROM
|
|
event_email_default_setting
|
|
WHERE
|
|
eerod.email_sched_reference_id = email_tpl_setting_id
|
|
AND eerod.email_sched_reference = 2
|
|
) as event_reminder_date
|
|
FROM
|
|
event_email_recipient eer
|
|
LEFT JOIN event_registration er
|
|
ON er.event_id = eer.event_id
|
|
AND er.registration_id = eer.reference_id
|
|
LEFT JOIN user u
|
|
ON u.user_id = er.subscriber
|
|
LEFT JOIN event_schedule es
|
|
ON es.event_id = eer.event_id
|
|
LEFT JOIN event e
|
|
ON e.event_id = es.event_id
|
|
LEFT JOIN event_email_recipient_other_detail eerod
|
|
ON eer.email_recipient_id = eerod.email_recipient_id
|
|
WHERE eer.reference_id = er.registration_id
|
|
AND e.status = 1
|
|
AND er.status = 1
|
|
AND eer.email_type_id = 3
|
|
AND (eer.email_status = 0 OR (eer.email_status = 3 AND eer.email_number_of_send_attempt <=3))
|
|
AND eer.event_id = $event_id
|
|
AND CONCAT(eerod.email_sched_reference_id,'_',eerod.email_sched_reference)
|
|
IN(
|
|
SELECT CONCAT(eeds.email_tpl_setting_id,'_',2)
|
|
FROM event_email_default_setting eeds
|
|
WHERE eeds.email_type_id = 3
|
|
AND eeds.email_tpl_setting_status = 1
|
|
AND (CASE
|
|
WHEN eeds.email_tpl_setting_sched_by = 'HOURS'
|
|
THEN DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched HOUR)
|
|
WHEN eeds.email_tpl_setting_sched_by = 'DAYS'
|
|
THEN DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched DAY)
|
|
ELSE DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched MINUTE)
|
|
END) <= NOW()
|
|
AND eeds.email_tpl_setting_id NOT IN
|
|
(
|
|
SELECT ees.reference
|
|
FROM event_email_schedule ees
|
|
LEFT JOIN `event_email_default_setting` eedsx
|
|
ON `eedsx`.`email_tpl_setting_id` = `ees`.`reference`
|
|
WHERE ees.event_id = $event_id
|
|
AND ees.event_id = eer.event_id
|
|
AND eedsx.email_type_id = 3
|
|
AND ees.email_schedule_status IN (1,2)
|
|
GROUP BY ees.reference
|
|
)
|
|
|
|
UNION
|
|
|
|
SELECT CONCAT(ees.email_schedule_id,'_',1)
|
|
FROM `event_schedule` es
|
|
LEFT JOIN `event_email_schedule` ees
|
|
ON `ees`.`event_id` = `es`.`event_id`
|
|
LEFT JOIN `event_email_default_setting` eeds
|
|
ON `eeds`.`email_tpl_setting_id` = `ees`.`reference`
|
|
WHERE `es`.`event_id` = $event_id
|
|
AND ees.email_schedule_status != 0
|
|
AND eeds.email_type_id = 3
|
|
AND es.start_date_time >= NOW()
|
|
AND es.back_office_status IN(2,3)
|
|
AND ees.email_schedule_date <= NOW()
|
|
)
|
|
AND e.start_date_time >= NOW()
|
|
AND e.back_office_status IN(2,3)
|
|
GROUP BY eer.reference_id
|
|
LIMIT 0, $limit", array($event_start_date_time, $event_start_date_time, $event_start_date_time));
|
|
|
|
//AND e.remaining_seat > 0
|
|
//AND e.event_status = 'AVAILABLE'
|
|
|
|
if ($result->num_rows() > 0) {
|
|
return $result->result();
|
|
}
|
|
return false;
|
|
|
|
// $result = $this->db->query("SELECT
|
|
// eer.event_id,
|
|
// er.subscriber as subscriber_id,
|
|
// eer.reference_id,
|
|
// (er.number_of_guest+1) as seats_reserved,
|
|
// u.email_address,
|
|
// CONCAT(u.first_name, ' ', u.last_name) AS subscriber,
|
|
// u.last_name subs_nom,
|
|
// u.first_name subs_prenom,
|
|
// eer.email_recipient_id,
|
|
// eer.email_number_of_send_attempt,
|
|
// (SELECT
|
|
// CONCAT(email_tpl_setting_sched, ' ',
|
|
// (CASE
|
|
// WHEN email_tpl_setting_sched_by = 'DAYS' THEN 'jours'
|
|
// WHEN email_tpl_setting_sched_by = 'HOURS' THEN 'heures'
|
|
// WHEN email_tpl_setting_sched_by = 'MINUTES' THEN 'minutes'
|
|
// ELSE ''
|
|
// END
|
|
// ))
|
|
// FROM
|
|
// event_email_default_setting
|
|
// WHERE
|
|
// eerod.email_sched_reference_id = email_tpl_setting_id
|
|
// AND eerod.email_sched_reference = 2
|
|
// ) as event_reminder_date
|
|
// FROM
|
|
// event_email_recipient eer
|
|
// LEFT JOIN event_registration er
|
|
// ON er.event_id = eer.event_id
|
|
// AND er.registration_id = eer.reference_id
|
|
// LEFT JOIN user u
|
|
// ON u.user_id = er.subscriber
|
|
// LEFT JOIN event e
|
|
// ON e.event_id = eer.event_id
|
|
// LEFT JOIN event_email_recipient_other_detail eerod
|
|
// ON eer.email_recipient_id = eerod.email_recipient_id
|
|
// WHERE eer.reference_id = er.registration_id
|
|
// AND e.status = 1
|
|
// AND er.status = 1
|
|
// AND eer.email_type_id = 3
|
|
// AND (eer.email_status = 0 OR (eer.email_status = 3 AND eer.email_number_of_send_attempt <=3))
|
|
// AND eer.event_id = $event_id
|
|
// AND CONCAT(eerod.email_sched_reference_id,'_',eerod.email_sched_reference)
|
|
// IN(
|
|
// SELECT CONCAT(eeds.email_tpl_setting_id,'_',2)
|
|
// FROM event_email_default_setting eeds
|
|
// WHERE eeds.email_type_id = 3
|
|
// AND eeds.email_tpl_setting_status = 1
|
|
// AND (CASE
|
|
// WHEN eeds.email_tpl_setting_sched_by = 'HOURS'
|
|
// THEN DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched HOUR)
|
|
// WHEN eeds.email_tpl_setting_sched_by = 'DAYS'
|
|
// THEN DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched DAY)
|
|
// ELSE DATE_SUB(?, INTERVAL eeds.email_tpl_setting_sched MINUTE)
|
|
// END) <= NOW()
|
|
// AND eeds.email_tpl_setting_id NOT IN
|
|
// (
|
|
// SELECT ees.reference
|
|
// FROM event_email_schedule ees
|
|
// LEFT JOIN `event_email_default_setting` eedsx
|
|
// ON `eedsx`.`email_tpl_setting_id` = `ees`.`reference`
|
|
// WHERE ees.event_id = $event_id
|
|
// AND ees.event_id = eer.event_id
|
|
// AND eedsx.email_type_id = 3
|
|
// AND ees.email_schedule_status IN (1,2)
|
|
// GROUP BY ees.reference
|
|
// )
|
|
|
|
// UNION
|
|
|
|
// SELECT CONCAT(ees.email_schedule_id,'_',1)
|
|
// FROM `event_email_schedule` ees
|
|
// LEFT JOIN `event_email_default_setting` eeds
|
|
// ON `eeds`.`email_tpl_setting_id` = `ees`.`reference`
|
|
// WHERE `ees`.`event_id` = $event_id
|
|
// AND ees.email_schedule_status != 0
|
|
// AND ees.event_id = e.event_id`
|
|
// AND eeds.email_type_id = 3
|
|
// AND e.start_date_time >= NOW()
|
|
// AND e.back_office_status IN(2,3)
|
|
// AND ees.email_schedule_date <= NOW()
|
|
// )
|
|
// AND e.start_date_time >= NOW()
|
|
// AND e.back_office_status IN(2,3)
|
|
// GROUP BY eer.reference_id
|
|
// LIMIT 0, $limit", array($event_start_date_time, $event_start_date_time, $event_start_date_time));
|
|
|
|
// //AND e.remaining_seat > 0
|
|
// //AND e.event_status = 'AVAILABLE'
|
|
|
|
// if ($result->num_rows() > 0) {
|
|
// return $result->result();
|
|
// }
|
|
// return false;
|
|
}
|
|
|
|
public function get_subscribers_by_event($event_id){
|
|
$this->db->select("er.registration_id,
|
|
er.subscriber,
|
|
er.event_id,
|
|
u.last_name as subscriber_last_name,
|
|
u.first_name as subscriber_first_name,
|
|
u.email_address,
|
|
us.address,
|
|
er.status,
|
|
us.phone,
|
|
e.workshop_author,
|
|
er.number_of_guest as seats_reserved");
|
|
$this->db->select("DATE_FORMAT(er.date_time,, '%Y-%m-%e') AS booking_date", FALSE);
|
|
$this->db->select("DATE_FORMAT(er.date_time,, '%Hh%i') AS booking_hour", FALSE);
|
|
$this->db->select("(CASE
|
|
WHEN er.status = 0 THEN 'Annulé'
|
|
ELSE 'Actif'
|
|
END) AS status_text", FALSE);
|
|
$this->db->join('user as u', 'u.user_id = er.subscriber AND u.status=1');
|
|
$this->db->join('user_subscriber as us', 'us.subscriber = er.subscriber', 'left');
|
|
$this->db->join('event as e', 'e.event_id = er.event_id', 'left');
|
|
$this->db->where('er.event_id', $event_id);
|
|
$this->db->where('er.status', 1);
|
|
$result = $this->db->get('event_registration as er');
|
|
|
|
|
|
if ($result->num_rows()>0) {
|
|
return $result->result();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function get_reminder_email_data($email_recipient_id, $subscriber){
|
|
$this->load->model("event_schedule_model");
|
|
$result = $this->db->select("
|
|
eer.event_schedule_id,
|
|
e.event_id,
|
|
e.title as event_title,
|
|
et.event_type,
|
|
es.event_status,
|
|
u.email_address,
|
|
".$this->event_schedule_model->use_diffent_address()."
|
|
(CASE WHEN e.rate > 0 THEN e.rate ELSE \"\" END) as event_rate,
|
|
(er.number_of_guest+1) as seats_reserved,
|
|
efa.file_name as event_picture,
|
|
eet.email_tpl_detail,
|
|
e.description as event_description,
|
|
(SELECT
|
|
CONCAT(eeds.email_tpl_setting_sched, ' ',
|
|
(CASE
|
|
WHEN eeds.email_tpl_setting_sched_by = 'DAYS' THEN 'jours'
|
|
WHEN eeds.email_tpl_setting_sched_by = 'HOURS' THEN 'heures'
|
|
WHEN eeds.email_tpl_setting_sched_by = 'MINUTES' THEN 'minutes'
|
|
ELSE ''
|
|
END
|
|
))
|
|
FROM
|
|
event_email_default_setting eeds
|
|
WHERE
|
|
eerod.email_sched_reference_id = eeds.email_tpl_setting_id
|
|
AND eerod.email_sched_reference = 2
|
|
) as event_reminder_date,
|
|
|
|
(SELECT
|
|
timestampdiff(SECOND, ees.email_schedule_date, es.start_date_time)
|
|
FROM
|
|
event_email_schedule ees
|
|
WHERE
|
|
eerod.email_sched_reference_id = ees.email_schedule_id
|
|
AND eerod.email_sched_reference = 1
|
|
) as event_reminder_specific_date,
|
|
|
|
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, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->select("DATE_FORMAT(es.start_date_time, '%M') AS event_start_month_name", 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_registration er", "er.registration_id = eer.reference_id", "left")
|
|
->join("user u", "u.user_id = er.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_email_recipient_other_detail eerod', 'eerod.email_recipient_id = eer.email_recipient_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)
|
|
->where("eerod.email_recipient_id = eer.email_recipient_id")
|
|
->group_by("eer.event_schedule_id")
|
|
->get();
|
|
if($result->num_rows() > 0){
|
|
return $result->row();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public function list_places_schedule($event_id, $event_schedule_id, $subscriber){
|
|
$result= $this->db->select('*')
|
|
->from('event_registration')
|
|
->where('event_schedule_id',$event_schedule_id)
|
|
->where('subscriber',$subscriber)
|
|
->where('status',1)
|
|
->get();
|
|
return $result->result();
|
|
}
|
|
|
|
/* Check if can still reserve more than 1 date per event schedule? */
|
|
public function count_all_user_registration_per_event($event_id, $user_id){
|
|
|
|
$result = $this->db->select('COUNT(er.status) as total_registration', FALSE)
|
|
->from('event_registration er')
|
|
->join('event_schedule es', 'es.event_schedule_id = er.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('er.subscriber', $user_id)
|
|
->where('er.status !=', 0)
|
|
->order_by('er.date_time', 'DESC')
|
|
->get()
|
|
->row();
|
|
|
|
if($result){
|
|
return $result->total_registration;
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public function count_total_reserved_seats($event_id) {
|
|
$this->db->select_sum('number_of_guest');
|
|
$this->db->from('event_registration');
|
|
$this->db->where('event_id', $event_id);
|
|
$this->db->where('status', 1);
|
|
$this->db->count_all();
|
|
$query=$this->db->get();
|
|
if(!empty($query->row()->number_of_guest))
|
|
return $query->row()->number_of_guest;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
public function count_total_reserved_seats_by_subscriber($subscriber_id, $event_id) {
|
|
$this->db->select_sum('number_of_guest');
|
|
$this->db->from('event_registration');
|
|
$this->db->where('subscriber', $subscriber_id);
|
|
$this->db->where('event_id', $event_id);
|
|
$this->db->where('status', 1);
|
|
$this->db->count_all();
|
|
$query=$this->db->get();
|
|
if(!empty($query->row()->number_of_guest))
|
|
return $query->row()->number_of_guest;
|
|
else
|
|
return 0;
|
|
}
|
|
|
|
public function cancel_event_registration($registration_id) {
|
|
$subscriber = $this->get_subscriber($registration_id);
|
|
$subscriber->number_of_guest -= 1;
|
|
$this->db->set('number_of_guest',$subscriber->number_of_guest);
|
|
if($subscriber->number_of_guest == 0) {
|
|
$this->db->set('status', 0);
|
|
}
|
|
$this->db->where('registration_id', $registration_id);
|
|
$update = $this->db->update("event_registration");
|
|
if($update){
|
|
$this->update_event_remaining_seats($subscriber->event_id);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
private function get_subscriber($registration_id) {
|
|
$this->db->select('*');
|
|
$this->db->where('registration_id', $registration_id);
|
|
return $this->db->get('event_registration')->row();
|
|
}
|
|
|
|
private function update_event_remaining_seats($event_id) {
|
|
$query = $this->db->select()
|
|
->from('event')
|
|
->where('event_id', $event_id)
|
|
->get_compiled_select();
|
|
$data = $this->db->query("$query FOR UPDATE")->row();
|
|
$this->db->set('remaining_combined_seat', $data->remaining_combined_seat + 1);
|
|
$this->db->where('event_id', $data->event_id)->update('event');
|
|
}
|
|
|
|
public function get_subscribers() {
|
|
$this->db->select('*');
|
|
return $this->db->get('event_registration')->result();
|
|
}
|
|
|
|
public function is_subscribed($user_id, $event_id, $email = "") {
|
|
$list = <<<HERE
|
|
malingre@lemonde.fr
|
|
tovo@lemonde.fr
|
|
jg.santi@lemonde.fr
|
|
wachowiak@lemonde.fr
|
|
ateliers+ieseg@lemonde.fr
|
|
savoyebenji@gmail.com
|
|
sophie-noelle.nemo@laposte.fr
|
|
cmbasquin@hotmail.com
|
|
christinemagne@orange.fr
|
|
descoursierem@gmail.com
|
|
mila.voisin2003@gmail.com
|
|
c.andre.art@wanadoo.fr
|
|
v.chauveau@chauveau-associes.com
|
|
c.vouilloux@orange.fr
|
|
gg.menez@laposte.net
|
|
mailys.habouzit@gmail.com
|
|
michelhuleu@hotmail.fr
|
|
alexandre.gueguen.7@orange.fr
|
|
elif.c.kayi@gmail.com
|
|
alan.calvez@hotmail.fr
|
|
d.breiner@orange.fr
|
|
brasset.marine@hotmail.fr
|
|
louis.saix@protonmail.com
|
|
kaplun.yuri@gmail.com
|
|
ubaldi.vitti@gmail.com
|
|
francoisle@outlook.com
|
|
juleslichne@gmail.com
|
|
edgarfoisnet@gmail.com
|
|
1marianne.deruelle@gmail.com
|
|
chaboche.adeline@gmail.com
|
|
mailyadamar@gmail.com
|
|
p.pochet@hotmail.fr
|
|
cuche.avocat@gmail.com
|
|
anne.veroncacheux@hotmail.fr
|
|
Laureguegan76@gmail.com
|
|
leclosduserres@gmail.com
|
|
c.derouard@ieseg.fr
|
|
r.joliet@ieseg.fr
|
|
a.matynia@ieseg.fr
|
|
l.perezarmas@ieseg.fr
|
|
y.ruia@ieseg.fr
|
|
rania.aadil@ieseg.fr
|
|
guillaume.adhemard@ieseg.fr
|
|
morgane.agostini@ieseg.fr
|
|
sara.akhondiarsi@ieseg.fr
|
|
robin.alaukla@ieseg.fr
|
|
pierre.andrieux@ieseg.fr
|
|
auriane.anselot@ieseg.fr
|
|
asmaa.arahal@ieseg.fr
|
|
gabriel.asseo@ieseg.fr
|
|
Titouan.aubry@ieseg.fr
|
|
hugo.barroso@ieseg.fr
|
|
chloe.bedhom@ieseg.fr
|
|
armand.beraud@ieseg.fr
|
|
riwan.berrada@ieseg.fr
|
|
Hugo.berthoumieux@ieseg.fr
|
|
emmanuel.bonneau@ieseg.fr
|
|
emma.bonnin@ieseg.fr
|
|
agnes.bouvarel@ieses.fr
|
|
amandine.boyas@ieseg.fr
|
|
konstantin.braz@ieseg.fr
|
|
yann.bretelle@ieseg.fr
|
|
emma.briche@ieseg.fr
|
|
thomas.brigant@ieseg.fr
|
|
mila.bruneau@ieseg.fr
|
|
nathan.caloin@ieseg.fr
|
|
oceane.camuzeaux@ieseg.fr
|
|
baptiste.carton@ieseg.fr
|
|
quentin.chaine@ieseg.fr
|
|
vincent.charbonnier@ieseg.fr
|
|
antoine.colle@ieseg.fr
|
|
Sidonie.collette@ieseg.fr
|
|
capucine.compagnionbarbry@ieseg.fr
|
|
gustave.degalard@ieseg.fr
|
|
loup-quirec.dekermel@ieseg.fr
|
|
daniela.destefanoguastalla@ieseg.fr
|
|
Louis.delplanque@ieseg.fr
|
|
celia.deroussen@ieseg.fr
|
|
cecile.desprez@ieseg.fr
|
|
Martin.desroches@ieseg.fr
|
|
thibault.desroches-nougue@ieseg.fr
|
|
ali.drissikaitouni@ieseg.fr
|
|
catherine.dubord@ieseg.fr
|
|
aubin.dufrien@ieseg.fr
|
|
louis.durance@ieseg.fr
|
|
rayan.eloueslati@ieseg.fr
|
|
tom.ernoult@ieseg.fr
|
|
victoria.etienne@ieseg.fr
|
|
louise.favrot@ieseg.fr
|
|
antoine.finkielsztejn@ieseg.fr
|
|
antoine.flipo@ieseg.fr
|
|
saona.ginestes@ieseg.fr
|
|
Bilah.habre@ieseg.fr
|
|
hugo.heurtin@ieseg.fr
|
|
lucas.howe@ieseg.fr
|
|
camille.hussherr@ieseg.fr
|
|
Justine.ibghi@ieseg.fr
|
|
yichao.ji@ieseg.fr
|
|
christianbrice.kamga@ieseg.fr
|
|
annedoulce.kneib@ieseg.fr
|
|
valentin.lauferon@ieseg.fr
|
|
clement.laurencon@ieseg.fr
|
|
aurelie.laval@ieseg.fr
|
|
amaury.legarrec@ieseg.fr
|
|
stephane.legousse@ieseg.fr
|
|
sophie.lemarchand@ieseg.fr
|
|
tanguy.leostic@ieseg.fr
|
|
elouan.leroux@ieseg.fr
|
|
severine.leroux@ieseg.fr
|
|
simon.liu@ieseg.fr
|
|
paul.lubais@ieseg.fr
|
|
joseph.mammar@ieseg.fr
|
|
eleonore.marechal@ieseg.fr
|
|
paul.mathieucollin@ieseg.fr
|
|
juliette.maurice@ieseg.fr
|
|
élise.Mbengalackbizot@ieseg.fr
|
|
elise.Mbengalackbizot@ieseg.fr
|
|
dorian.menuet@ieseg.fr
|
|
come.meriaux@ieseg.fr
|
|
yannis.meurine@ieseg.fr
|
|
dimitri.morel@ieseg.fr
|
|
theonegri8@gmail.com
|
|
celine.ni@ieseg.fr
|
|
mehdi.ouahni@ieseg.fr
|
|
Clement.pannier@ieseg.fr
|
|
paul.paressant@ieseg.fr
|
|
maiwenn.percheron@ieseg.fr
|
|
anne.perrot@ieseg.fr
|
|
elise.petitcollin@ieseg.fr
|
|
agathe.pichard@ieseg.fr
|
|
maxime.plonquet@ieseg.fr
|
|
elina.pons@ieseg.fr
|
|
vincent.porge@ieseg.fr
|
|
marine.queyrat@ieseg
|
|
arthur.radjabi@ieseg.fr
|
|
camille.roda@ieseg.fr
|
|
nina.romano@ieseg.fr
|
|
emilie.saint-mleux@ieseg.fr
|
|
marine.sarfati@ieseg.fr
|
|
matthis.saudrais@ieseg.fr
|
|
theo.sauvage@ieseg.fr
|
|
benjamin.savoye@ieseg.fr
|
|
Elisa.schiettecatte@ieseg.fr
|
|
edouard.schoumacher@ieseg.fr
|
|
naima.speybroeck@ieseg.fr
|
|
astrid.thibaud@ieseg.fr
|
|
Alexandre.trier@ieseg.fr
|
|
abinav.vadivelou@ieseg.fr
|
|
alix.vaillant@ieseg.fr
|
|
Bixente.vanoosthuyse@gmail.col
|
|
enzo.vasconi@ieseg.fr
|
|
alice.vasselin@ieseg.fr
|
|
alexandre.vimont@ieseg.fr
|
|
Margauxvinel@ieseg.fr
|
|
nathan.wygoda@ieseg.fr
|
|
vincent.zimmermann@ieseg.fr
|
|
p.bocquet@ieseg.fr
|
|
redenmarbellen98@gmail.com
|
|
maeva@wylog.com
|
|
HERE;
|
|
$list = preg_split('/\s+/', $list, -1, PREG_SPLIT_NO_EMPTY);
|
|
//print_r($list);die;
|
|
if(in_array($email,$list))
|
|
return 1;
|
|
return $this->db->query("select *
|
|
from event_registration
|
|
where subscriber = ?
|
|
and event_id = ?
|
|
and status = ?
|
|
limit 1
|
|
", array($user_id, $event_id, 1))->row();
|
|
}
|
|
|
|
public function is_subscribed_in_atelier_distance($user_id, $event_id) {
|
|
return $this->db->query("select *
|
|
from event_registration
|
|
where subscriber = ?
|
|
and event_id = ?
|
|
and status = ?
|
|
and workshop_session=?
|
|
and registration_type=?
|
|
or workshop_session=?
|
|
limit 1
|
|
", array($user_id, $event_id, 1, 'DISTANCE-PRESENTIEL', 'soir-distance', 'DISTANCE'))->row();
|
|
}
|
|
|
|
public function update_expiring_video_reservation() {
|
|
$this->db->set('is_expired', 0);
|
|
$this->db->where("DATEDIFF(NOW(), date_time)>", VIDEO_EXPIRATION); //365
|
|
$this->db->where('is_expired', 1);
|
|
$this->db->where('workshop_session', 'ENLIGNE');
|
|
$this->db->update('event_registration');
|
|
return $this->update_expiring_atelier_distance_reservation();
|
|
}
|
|
|
|
private function update_expiring_atelier_distance_reservation() {
|
|
$this->db->set('is_expired', 0);
|
|
$this->db->where("DATEDIFF(NOW(), date_time)>", VIDEO_EXPIRATION); //365
|
|
$this->db->where('is_expired', 1);
|
|
$this->db->where('registration_type', 'soir-distance');
|
|
$this->db->where('workshop_session', 'DISTANCE-PRESENTIEL');
|
|
$this->db->or_where('workshop_session', 'DISTANCE');
|
|
return $this->db->update('event_registration');
|
|
}
|
|
|
|
public function update_reservation_workshop_session($ws, $event_id) {
|
|
$this->db->set('workshop_session', $ws);
|
|
$this->db->where('event_id', $event_id);
|
|
return $this->db->update('event_registration');
|
|
}
|
|
|
|
public function save_ateriel_distance_subscriber($data) {
|
|
$this->db->insert('event_distance_subscribers', array(
|
|
'event_id' => $data['event_id'],
|
|
'subscriber' => $data['user_id'],
|
|
'registration_id' => $data['registration_id']
|
|
));
|
|
}
|
|
|
|
public function get_atelier_distance_subscribers() {
|
|
$results = $this->db->select('event_id, live_video_start_date')
|
|
->from('event_videos')
|
|
->where('live_video_start_date IS NOT NULL')
|
|
->where("TIMESTAMPDIFF(MINUTE, NOW(), live_video_start_date) =", 120)
|
|
->get()
|
|
->result();
|
|
$events = array();
|
|
foreach($results as $result) {
|
|
array_push($events, $result->event_id);
|
|
}
|
|
if(count($events) > 0) {
|
|
return $this->db->select('*')
|
|
->select("e.title AS event_title", FALSE)
|
|
->select("CONCAT(u.first_name, CONCAT(' ', u.last_name)) AS subscriber", FALSE)
|
|
->select("u.first_name AS subs_prenom", FALSE)
|
|
->select("u.last_name AS subs_nom", FALSE)
|
|
->select("u.first_name AS subscriber_first_name", FALSE)
|
|
->select("u.last_name AS subscriber_last_name", FALSE)
|
|
->select("e.rate AS event_rate", FALSE)
|
|
->select("e.status AS event_status", FALSE)
|
|
->select("e.description as event_description", FALSE)
|
|
->select("e.start_date_time as event_start_date", FALSE)
|
|
->select("DAYNAME(e.start_date_time) AS event_start_day_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%e') AS event_start_day", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%m') AS event_start_month", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%M') AS event_start_month_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS start_date_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS commencement_de_lheure", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y-%m-%e %H:%i:%s') AS event_start_date_time", FALSE)
|
|
->select("e.start_date_time AS date_complete", FALSE)
|
|
->from('event_distance_subscribers eds')
|
|
->join('event_registration er', 'er.registration_id = eds.registration_id AND er.status=1 AND er.is_expired=1', 'left')
|
|
->join('event e', 'e.event_id = eds.event_id', 'left')
|
|
->join('user u', 'u.user_id=eds.subscriber', 'left')
|
|
->where_in('eds.event_id', $events)
|
|
->get()
|
|
->result();
|
|
}
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* Retrieve subscribers by event id
|
|
* This function was used in static workshop
|
|
* do not use this in you method
|
|
*/
|
|
|
|
public function get_subscribers_by_event_id($event_ids) {
|
|
/** 47 and 53 */
|
|
$results = $this->check_event_videos_schedules($event_ids);
|
|
$events = array();
|
|
foreach($results as $result) {
|
|
array_push($events, $result->event_id);
|
|
}
|
|
if(count($events) > 0) {
|
|
return $this->db->select('*')
|
|
->select("e.title AS event_title", FALSE)
|
|
->select("CONCAT(u.first_name, CONCAT(' ', u.last_name)) AS subscriber", FALSE)
|
|
->select("u.first_name AS subs_prenom", FALSE)
|
|
->select("u.last_name AS subs_nom", FALSE)
|
|
->select("u.first_name AS subscriber_first_name", FALSE)
|
|
->select("u.last_name AS subscriber_last_name", FALSE)
|
|
->select("e.rate AS event_rate", FALSE)
|
|
->select("e.status AS event_status", FALSE)
|
|
->select("e.description as event_description", FALSE)
|
|
->select("e.start_date_time as event_start_date", FALSE)
|
|
->select("DAYNAME(e.start_date_time) AS event_start_day_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%e') AS event_start_day", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%m') AS event_start_month", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%M') AS event_start_month_name", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y') AS event_start_year", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS event_start_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS start_date_hour", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Hh%i') AS commencement_de_lheure", FALSE)
|
|
->select("DATE_FORMAT(e.start_date_time, '%Y-%m-%e %H:%i:%s') AS event_start_date_time", FALSE)
|
|
->select("e.start_date_time AS date_complete", FALSE)
|
|
->from('event_registration er')
|
|
->join('event e', 'e.event_id = er.event_id', 'left')
|
|
->join('user u', 'u.user_id=er.subscriber', 'left')
|
|
->where('er.status',1)
|
|
->where_in('er.event_id', $events)
|
|
->get()
|
|
->result();
|
|
}
|
|
return false;
|
|
}
|
|
/**
|
|
* This method is used in statice event
|
|
* Do not reuse this on your function
|
|
* This contains defined video datetime
|
|
*/
|
|
private function check_event_videos_schedules($event_ids) {
|
|
return $this->db->select('event_id, start_date_time')
|
|
->from('event_schedule')
|
|
->where('start_date_time IS NOT NULL')
|
|
->where_in('event_id', $event_ids)
|
|
->where("TIMESTAMPDIFF(MINUTE, NOW(), start_date_time) =", 1726) //1440
|
|
->get()
|
|
->result();
|
|
}
|
|
}
|
|
|