db->query("SET @@group_concat_max_len =30000"); } public function getActiveEventsPayment($where = [], $joinEvent = true) { $this->load->helper('number'); $result = $joinEvent === true ? $this->db ->select("*") ->select('FORMAT(((ep.total_amount / ep.seats_reserved) * er.number_of_guest), 2) as g_total') ->from('event_payment as ep') ->join('event as e', 'e.event_id = ep.event_id') ->join('event_registration as er', 'er.registration_id = ep.registration_id AND er.status=1') ->join('event_file_attachment as efa', 'e.event_id = efa.event_id') ->where($where) ->where([ 'efa.status' => '1', 'efa.display' => '0', 'er.is_expired' => '1' ]) ->where("DATEDIFF(e.end_date_time, now())>=", 0) ->or_where('er.registration_type', 'soir-distance') ->or_where('er.workshop_session', 'DISTANCE') // Exclude deleted events ->where_not_in('e.back_office_status', [ BO_STAT['del'], ]) ->group_by('ep.id') ->get() : $this->db ->where($where) ->get('event_payment'); return $result->result(); } public function getPastEventsPayment($where = [], $joinEvent = true) { $this->load->helper('number'); $result = $joinEvent === true ? $this->db ->select("*") ->select('FORMAT(((ep.total_amount / ep.seats_reserved) * er.number_of_guest), 2) as g_total') ->from('event_payment as ep') ->join('event as e', 'e.event_id = ep.event_id') ->join('event_registration as er', 'er.registration_id = ep.registration_id AND er.status=1') ->join('event_file_attachment as efa', 'e.event_id = efa.event_id') ->where($where) ->where([ 'efa.status' => '1', 'efa.display' => '0', ]) //->where("DATEDIFF(e.end_date_time, now())<", 0) ->or_where('er.is_expired', 0) // Exclude deleted events ->where_not_in('e.back_office_status', [ BO_STAT['del'], ]) ->group_by('ep.id') ->get() : $this->db ->where($where) ->get('event_payment'); return $result->result(); } public function add($data) { if(sizeof($data) > 0){ $this->db->insert("event_payment", $data); $event_id = $this->db->insert_id(); if($event_id){ return $event_id; } } return false; } public function get_tax_rate() { $this->db->select("*"); $this->db->from("event_payment_tax_rate"); $this->db->where("status ", 1); $this->db->limit(1); return $this->db->get()->row(); } public function update($id, $data) { if(sizeof($data)){ $this->db->where("id", $id); $update = $this->db->update("event_payment", $data); if($update){ return true; } } return false; } public function delete($id) { return $this->db->delete('event_payment', ['id' => $id]); } public function hasUserAlreadyPaidEvent($userId, $eventId) { $result = $this->db->where([ 'user_id' => $userId, 'event_id' => $eventId, ])->get('event_payment'); return $result->num_rows() > 0; } public function update_payment($user_id, $event_id, $date, $registration_id) { // $this->db->set('registration_id', $registration_id); // AND TIMESTAMPDIFF(YEAR, e.date, ?)=0 // AND TIMESTAMPDIFF(MONTH, e.date, ?)=0 // AND TIMESTAMPDIFF(DAY, e.date, ?)=0 // AND TIMESTAMPDIFF(MINUTE, e.date, ?)= 0 // AND TIMESTAMPDIFF(SECOND, e.date, ?)>=-1 // AND TIMESTAMPDIFF(SECOND, e.date, ?)<=2 $query = $this->db->query(" SELECT e.id, e.date FROM event_payment e WHERE e.user_id = ? AND e.event_id = ? ", array($user_id, $event_id)); $payments = $query->result(); $results = array(); if($payments) { foreach($payments as $row) { $dt1 = new DateTime(date('Y-m-d H:i:s',strtotime($row->date))); $dt2 = new DateTime(date('Y-m-d H:i:s',strtotime($date))); $dt = $dt1->diff($dt2); if($dt->y == 0 && $dt->m == 0 && $dt->d == 0 && ($dt->i >= -1 && $dt->i <= 1) && ($dt->s >= -1 && $dt->s <= 4)) { array_push($results, ['id'=> $row->id,'second' =>$dt->s]); $this->db->set('registration_id', $registration_id); $this->db->set('date', $date); $this->db->where('id', $row->id); $this->db->update('event_payment'); } } return $results; } return false; } public function add_payment_created_at($user_id, $event_id, $registration_id, $created_at) { $query = $this->db->query(" SELECT e.id, e.date FROM event_payment e WHERE e.user_id = ? AND e.event_id = ? AND e.registration_id = ? ", array($user_id, $event_id, $registration_id)); $payments = $query->result(); $results = array(); if($payments) { foreach($payments as $row) { array_push($results, (array) $row); $this->db->set('date', $created_at); $this->db->where('id', $row->id); $this->db->update('event_payment'); } return $results; } return false; } }