<?php namespace App\Models\Admin;

use App\Models\Project\DatatableModel;

class NewsModel extends AdminModel{
	private $table; 
	
    public function __construct(){
		parent::__construct();
		$this->table = "news";
    }

	public function get_datatable(){
		$dtObj = new DatatableModel($this->db);
		$dtObj->set_table($this->table." AS n");
		// Set Datatable columns 
		$dtObj->set_column('n.news_id', 'desc|sort|search', 'RecordID');
		$dtObj->set_column('n.news_url', '');
		$dtObj->set_column('n.news_category_id', '');
		$dtObj->set_column('n.breaking_news', '');
		$dtObj->set_column('n.publish_date', '');
		$dtObj->set_column('n.publisher_name', '');
		$dtObj->set_column('n.status', 'sort|search');
		$dtObj->set_column('nl.title', 'sort|search');
		$builder = $dtObj->get_builder();
		$builder->join($this->table."_ln AS nl","n.news_id=nl.news_id AND nl.language_code='".$this->project->default_lang_code."'",'left');
		$builder->where('n.is_deleted','No');
		return $dtObj->get_data($builder);
	} 
	
	public function get($language_list,$news_id){
		$builder = $this->db->table($this->table." AS mt");
		$columns = ["mt.*"];
		$ln_columns = ['news_ln_id',
			'title',
			'short_description',
			'description',
			'meta_title',
			'meta_keywords',
			'meta_description',
			'language_code'];
		if($language_list){
			foreach($language_list as $language){
				foreach($ln_columns as $col_name){
					array_push($columns,$language['code'].".".$col_name." AS ".$col_name."_".$language['code']);
				}
				$builder->join($this->table."_ln AS ".$language['code'],"mt.news_id=".$language['code'].".news_id AND ".$language['code'].".language_code='".$language['code']."'",'left');
			}
		}
		$builder->select(implode(", ",$columns));
		$builder->where('mt.news_id',$news_id);
		$query = $builder->get();
		//echo $builder->getCompiledSelect();
		$rec = $query->getRowArray();
		if($rec){
			$rec['start_date'] = date('d-m-Y',strtotime($rec['start_date_time']));
			$rec['publish_date'] = date('d-m-Y',strtotime($rec['publish_date']));
			$rec['publish_time'] = date('h:i A',strtotime($rec['publish_time']));
			$rec['end_date'] = date('d-m-Y',strtotime($rec['end_date_time']));
			$rec['start_time'] = date('h:i A',strtotime($rec['start_date_time']));
			$rec['end_time'] = date('h:i A',strtotime($rec['end_date_time']));
		}
		return $rec;
	}
	
	public function insert($data){
		$this->add_insert_log($data);
		$builder = $this->db->table($this->table);
		$builder->insert($data);
		return $this->db->insertID();
	}
	
	public function update($data, $news_id){
		$this->add_update_log($data);
		$builder = $this->db->table($this->table);
		$builder->where('news_id',$news_id);
		$builder->update($data);
	}
	
	public function delete($news_id){
		$data['is_deleted'] = "Yes";
		$this->add_update_log($data);
		$builder = $this->db->table($this->table);
		$builder->where('news_id',$news_id)
				->update($data);
	}
	
	public function is_unique_news_url($url,$news_id){
		$builder = $this->db->table($this->table);
		$builder->where('is_deleted','No')
			->where('news_url',$url);
		if($news_id!=""){
			$builder->where('news_id!=',$news_id);
		}
		$query = $builder->get();
		if($query->getRowArray()){
			$response = "FALSE|The news url already exist!";
		}else{
			$response = "TRUE|";
		}
		return $response;
	}
	
	public function update_language_data($data,$news_ln_id){
		$builder = $this->db->table($this->table.'_ln');
		$builder->where('news_ln_id',$news_ln_id)
		->update($data);
	}
	
	public function insert_language_data($data){
		$builder = $this->db->table($this->table.'_ln');
		$builder->insert($data);
	}
}