<?php
App::uses('AppModel', 'Model');
/**
 * Contato Model
 *
 * @property Cliente $Cliente
 * @property Cliente $Cliente
 * @property Cliente $Cliente
 * @property Telefone $Telefone
 */
class Contato extends AppModel {
/**
 * Use table
 *
 * @var mixed False or table name
 */
	public $useTable = 'contato';
/**
 * Display field
 *
 * @var string
 */
	public $displayField = 'nome';

/**
 * belongsTo associations
 *
 * @var array
 */
	public $belongsTo = array(
		'Cliente' => array(
			'className' => 'Cliente',
			'foreignKey' => 'cliente_id',
			'conditions' => '',
			'fields' => '',
			'order' => ''
		)
	);
	
	public $hasAndBelongsToMany = array(
			'Telefone' => array(
				'joinTable' => 'contato_telefone',
				'foreignKey' => 'contato_id',
				'associationForeignKey' => 'telefones_id',
				'conditions' => array(),
			),			
			'Registromailing' => array(
				'joinTable' => 'contato_registromailing',
				'foreignKey' => 'contato_id',
				'associationForeignKey' => 'registromailing_id',
				'conditions' => array(),
			),
	);
	
/**
 * Modelo do arquivo csv (Contatos)
 *
 * Ordem Campo                    Formato 
 * 0     Nome do Contato          Texto 
 * 1     Telefone                 NN NNNN NNNN 
 * 2     Segmento                 Texto
 * 3     Cidade                   Texto
 * 4     UF                       Sigla	
 */
	function import($filename) {
		
		$chave = md5(date('Y-m-d h:m:s'));		
		
		$Registromailing = ClassRegistry::init('Registromailing');
		$Registromailing->create();
		$Registromailing->set('chave', $chave);
		$Registromailing->set('dataimportacao', date('Y-m-d'));
		$Registromailing = $Registromailing->save();
		
		$filedata = WWW_ROOT . 'uploads' . DS . $filename;
		$handle = fopen($filedata, "r");		
	
		$linha = 0;
		while (($row = fgetcsv($handle, 1000, ";")) !== false) {
			$linha ++;
			$num = count($row);
			
			/* Validacoes*/
			if ($linha == 1) continue;			 
			if ($num != 5) continue;
			
			/**
			 * Tratando telefones para evitar duplicidades
			 */
			$Telefone = ClassRegistry::init('Telefone');
			$Telefone->create();
			$Telefone->recursive = 0;
			
			$tel = $Telefone->findByNumero($row[1]);
			if ($Telefone->exists($tel['Telefone']['id'])) {
				$Telefone = $Telefone->read(null, $tel['Telefone']['id']);
			}
			else {
				$Telefone->set('numero', $row[1]);
				$Telefone->set('local', false);
				$Telefone = $Telefone->save();
			}			
			
			/**
			 * TODO Tratar o contato para evitar duplicidades
			 */
			$data = array();	
			$data['Contato']['nome'] = $row[0];
			$data['Contato']['titular'] = $row[0];
			$data['Contato']['chaveimportacao'] = $chave;
			$data['Registromailing']['Registromailing'] = array($Registromailing['Registromailing']['id']);
			$data['Telefone']['Telefone'] = array($Telefone['Telefone']['id']);
			
			$this->create();
			$this->set($data);	
			$Contato = $this->saveAll($data, array('deep' => true));
		}
		
		fclose($handle);
		$file = new File($filedata);
		$file->delete();
	}
	
/**
 * Teste
 * @param unknown_type $filename
 */		
	function import2($filename) {
		
		$$chave = md5(date('Y-m-d h:m:s'));		
		
		$Registromailing = ClassRegistry::init('Registromailing');
		$Registromailing->create();
		$Registromailing->set('chave', $chave);
		$Registromailing->set('dataimportacao', date('Y-m-d'));
		$Registromailing = $Registromailing->save();
		
		$filedata = WWW_ROOT . 'uploads' . DS . $filename;
		$handle = fopen($filedata, "r");		
	
		$linha = 0;
		while (($row = fgetcsv($handle, 1000, ";")) !== false) {
			$linha ++;
			if ($linha == 1) continue;
			
			$data = array();
	
			$data['Contato']['nome'] = $row[0];
			$data['Contato']['titular'] = $row[0];
			$data['Contato']['chaveimportacao'] = $chave;
			$data['Contato']['registromailing_id'] = $Registromailing['Registromailing']['id'];
			
			$this->create();
			$this->set($data);	
			$Contato = $this->save($data);
		}
			
// 		/**
// 		 * Ajustando a tabela registromailing
// 		 */
// 		$sql  = " INSERT INTO contato_registromailing (contato_id, registromailing_id) ";
// 		$sql .= " SELECT contato.id, registromailing.id ";
// 		$sql .= " FROM contato ";
// 		$sql .= " JOIN registromailing ON (registromailing.chave = contato.chaveimportacao) ";
// 		$sql .= " WHERE registromailing.chave = '" .$chave. "'";		
//		$this->query($sql);
		
		fclose($handle);
		$file = new File($filedata);
		$file->delete();
	}

}
