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

<?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();
}
}