<?php
class Event_model extends CI_Model {
public function _consruct(){
parent::_construct();
}
public function getEventData($event_id='',$view='',$provider_id=''){
$cond = (!empty($view))?" EVT.status IN ($view) ":" EVT.status != '2' ";
$cond .= (!empty($event_id))?" AND EVT.event_id='$event_id' ":"";
$cond .= (!empty($provider_id))?" AND EVT.provider_id='$provider_id' ":"";
$sql = "SELECT EVT.*,EVT.status AS event_status,VEN.*,REG.name AS region_name,CAT.*,PRV.*,HST.*
FROM events AS EVT
INNER JOIN venue AS VEN ON (EVT.venue_id=VEN.id)
INNER JOIN region AS REG ON (REG.id=VEN.region_id)
LEFT JOIN provider AS PRV ON (PRV.provider_id=EVT.provider_id)
INNER JOIN event_category AS CAT ON (CAT.cat_id=EVT.category_id)
INNER JOIN host_categories AS HST ON (HST.host_cat_id=VEN.host_cat_id)
WHERE $cond";
$eventData = $this->db->query($sql);
if(empty($eventData)){
return 0;
}
if(empty($event_id)){
$eventData = $eventData->result();
foreach ($eventData AS $index => $event) {
$respData = $this->getEventDetails($event->event_id);
$eventData[$index]->eventTags = $respData['eventTags'];
$eventData[$index]->eventMedia = $respData['eventMedia'];
$eventData[$index]->eventSchedule = $respData['eventSchedule'];
}
} else {
$eventData = $eventData->row();
$respData = $this->getEventDetails($eventData->event_id);
$eventData->eventTags = $respData['eventTags'];
$eventData->eventMedia = $respData['eventMedia'];
$eventData->eventSchedule = $respData['eventSchedule'];
}
return $eventData;
}
function getEventDetails($event_id = ''){
if(empty($event_id)){
return 0;
}
$respArr = array('eventMedia'=>'','eventSchedule'=>'','eventTags'=>'');
$sql = "SELECT DISTINCT `date` FROM event_date_time WHERE event_id='$event_id' AND status='1'";
$scheduleData = $this->db->query($sql);
if(!empty($scheduleData)){
$evtDate = array();
foreach ($scheduleData->result() AS $date) {
$evtDate[] = $date->date;
}
$respArr['eventSchedule']['date'] = $evtDate;
}
$sql = "SELECT DISTINCT `tag_id` FROM event_tags WHERE event_id='$event_id' AND status='1'";
$tagData = $this->db->query($sql);
if(!empty($tagData)){
$evtTags = array();
foreach ($tagData->result() AS $tag) {
$evtTags[] = $tag->tag_id;
}
$respArr['eventTags'] = $evtTags;
}
$sql = "SELECT DISTINCT `time` FROM event_date_time WHERE event_id='$event_id' AND status='1'";
$scheduleData = $this->db->query($sql);
if(!empty($scheduleData)){
$evtTime = array();
foreach ($scheduleData->result() AS $time) {
$evtTime[] = $time->time;
}
$respArr['eventSchedule']['time'] = $evtTime;
}
$sql = "SELECT id,media_type,media_url
FROM event_gallery
WHERE event_id='$event_id' AND status='1'";
$evtMediaData = $this->db->query($sql);
if(!empty($evtMediaData)){
$mediaData = array();
foreach ($evtMediaData->result() AS $media) {
$tempMedia = array('id'=>$media->id,
'media_url'=>$media->media_url,
'media_type'=>$media->media_type);
$mediaData[$media->media_type][] = $tempMedia;
}
$respArr['eventMedia'] = $mediaData;
}
return $respArr;
}
public function createEvent($eventData = array()){
if(empty($eventData)){
return 0;
}
if($this->session->userdata('user_type') != '1'){
$eventData['status'] = '3';
}
$status = $this->db->insert('events',$eventData);
if($status){
return $this->db->insert_id();
}
return 0;
}
public function updateEvent($event_id = '',$eventData = array()){
if(empty($event_id) || empty($eventData)){
return 0;
}
$status = $this->db->update('events',$eventData,array('event_id'=>$event_id));
return ($status)?1:0;
}
public function createTags($eventData = array()){
if(empty($eventData)){
return 0;
}
$status = $this->db->insert_batch('event_tags',$eventData);
return $status;
}
public function updateTags($event_id = '', $eventData = array()){
if(empty($event_id) || empty($eventData)){
return 0;
}
$this->db->delete('event_tags',array('event_id'=>$event_id));
$status = $this->db->insert_batch('event_tags',$eventData);
return $status;
}
public function createEventDateTime($eventData = array()){
if(empty($eventData)){
return 0;
}
$status = $this->db->insert_batch('event_date_time',$eventData);
return $status;
}
public function updateEventDateTime($event_id = '', $eventData = array()){
if(empty($event_id) || empty($eventData)){
return 0;
}
$this->db->delete('event_date_time',array('event_id'=>$event_id));
$status = $this->db->insert_batch('event_date_time',$eventData);
return $status;
}
public function createEventMedia($eventData = array()){
if(empty($eventData)){
return 0;
}
$status = $this->db->insert_batch('event_gallery',$eventData);
return $status;
}
public function updateEventMedia($event_id = '', $eventData = array(), $existingImages = array()){
if(empty($event_id)){
return 0;
}
if(!empty($existingImages)){
$this->db->query("DELETE FROM event_gallery
WHERE id NOT IN (".implode(",",$existingImages).") AND event_id=$event_id");
} else {
$this->db->query("DELETE FROM event_gallery WHERE event_id='$event_id'");
}
if(!empty($eventData)){
$status = $this->db->insert_batch('event_gallery',$eventData);
}
$primaryImg = $this->db->get_where('event_gallery',array('event_id'=>$event_id,'media_type'=>'0'));
if(empty($primaryImg) || ($primaryImg->num_rows() <= 0)){
$this->db->query("UPDATE `event_gallery`
SET `media_type`=0
WHERE `event_id`='".$event_id."' ORDER BY id LIMIT 1");
}
return $status;
}
public function updateEvents($event_id = '', $eventData = array()){
if(empty($event_id) || empty($eventData)){
return 0;
}
$status = $this->db->update('events',$eventData,array('id'=>$event_id));
return $status;
}
public function changeStatus($event_id = '', $status = '0'){
if(empty($event_id)){
return 0;
}
$status = $this->db->update('events',array('status'=>$status),array('event_id'=>$event_id));
return $status;
}
}
?>