<?php

class ModelListaPresenteListaPresente extends Model {

	function addLista($data) {
		if ($data) {
			$data['validade'] = implode( '-', array_reverse( explode( '/', $data['validade'] ) ) );
			$data['data'] = implode( '-', array_reverse( explode( '/', $data['data'] ) ) );
			$data['cadastro'] = implode( '-', array_reverse( explode( '/', $data['cadastro'] ) ) );

			if (!isset( $data['latitude'] )) $data['latitude'] = '';
			if (!isset( $data['longitude'] )) $data['longitude'] = ''; 
			
			$sql = 'INSERT INTO futura_listas SET `nome_lista`       = \'' . $data['nome'] . '\',
																						`data_valid_lista` = \'' . $data['validade'] . '\',
																						`data_cad_lista`   = \'' . $data['cadastro'] . '\',
																						`data_eve_lista`   = \'' . $data['data'] . '\',
																						`lista_id_cliente` =  ' . $this->customer->getId() . ( ',
																						`status_lista`     =  ' . $data['status'] . ',
																						`lista_frase`      = \'' . $data['frase'] . '\',
																						`cep`              = \'' . $data['postcode'] . '\',
																						`logradouro`       = \'' . $data['address_1'] . '\',
																						`numero`           = \'' . $data['numero'] . '\',
																						`bairro`           = \'' . $data['address_2'] . '\',
																						`cidade`           = \'' .$this->db->escape($data['cidade']) . '\',
																						`estado`           = \'' . $data['zone_id'] . '\',
																						`latitude`         = \'' . $data['latitude'] . '\',
																						`longitude`        = \'' . $data['longitude'] . '\',
																						`complemento`      = \'' . $data['complemento'] . '\',
																						`local_event`      = \'' . $data['apelido'] . '\',
																						`categoria_id_cat_lista` = ' . $data['categoria'] . ';' );
			$this->db->query($sql);
		}
	}

	function delete($lista_id = null) {
		if ($lista_id) {
			$compradores = $this->getCompLista( $lista_id );

			if (!$compradores) {
				$this->db->query( 'DELETE FROM futura_pedidos_itens_listas WHERE ped_lista_id = ' . (int)$lista_id );
				$this->db->query( 'DELETE FROM futura_opcoes_produto WHERE op_lista_id = ' . (int)$lista_id );
				$this->db->query( 'DELETE FROM futura_itens_lista WHERE listas_id_lista = ' . (int)$lista_id );
				$this->db->query( 'DELETE FROM futura_listas WHERE id_lista = ' . (int)$lista_id );
				return true;
			}

			return false;
		}

		return false;
	}

	function editLista($data, $lista_id) {
		if ($data) {
			if (isset( $data['validade'] )) {
				$data['validade'] = implode( '-', array_reverse( explode( '/', $data['validade'] ) ) );
				$campos = 'data_valid_lista = \'' . $data['validade'] . '\', ';
			} else {
				$campos = 'data_valid_lista = data_valid_lista, ';
			}


			if (isset( $data['data'] )) {
				$data['data'] = implode( '-', array_reverse( explode( '/', $data['data'] ) ) );
				$campos .= 'data_eve_lista = \'' . $data['data'] . '\', ';
			} else {
				$campos .= 'data_eve_lista = data_eve_lista, ';
			}


			if (isset( $data['nome'] )) {
				$campos .= 'nome_lista = \'' . $data['nome'] . '\', ';
			} else {
				$campos .= 'nome_lista = nome_lista, ';
			}


			if (isset( $data['categoria'] )) {
				$campos .= 'categoria_id_cat_lista = ' . $data['categoria'] . ', ';
			} else {
				$campos .= 'categoria_id_cat_lista = categoria_id_cat_lista, ';
			}


			if (isset( $data['status'] )) {
				$campos .= 'status_lista = ' . $data['status'] . ', ';
			} else {
				$campos .= 'status_lista = status_lista, ';
			}


			if (isset( $data['frase'] )) {
				$campos .= 'lista_frase = \'' . $data['frase'] . '\', ';
			} else {
				$campos .= 'lista_frase = lista_frase, ';
			}


			if (isset( $data['logradouro'] )) {
				$campos .= 'logradouro = \'' . $data['logradouro'] . '\', ';
			} else {
				$campos .= 'logradouro = logradouro, ';
			}


			if (isset( $data['numero'] )) {
				$campos .= 'numero = \'' . $data['numero'] . '\', ';
			} else {
				$campos .= 'numero = numero, ';
			}


			if (isset( $data['postcode'] )) {
				$campos .= 'cep = \'' . $data['postcode'] . '\', ';
			} else {
				$campos .= 'cep = cep, ';
			}


			if (isset( $data['bairro'] )) {
				$campos .= 'bairro = \'' . $data['bairro'] . '\', ';
			} else {
				$campos .= 'bairro = bairro, ';
			}


			if (isset( $data['cidade'] )) {
				$campos .= 'cidade = \'' . $this->db->escape($data['cidade']) . '\', ';
			} else {
				$campos .= 'cidade = cidade, ';
			}


			if (isset( $data['estado'] )) {
				$campos .= 'estado = \'' . $data['estado'] . '\', ';
			} else {
				$campos .= 'estado = estado, ';
			}


			if (isset( $data['latitude'] )) {
				$campos .= 'latitude = \'' . $data['latitude'] . '\', ';
			} else {
				$campos .= 'latitude = latitude, ';
			}


			if (isset( $data['longitude'] )) {
				$campos .= 'longitude = \'' . $data['longitude'] . '\', ';
			} else {
				$campos .= 'longitude = longitude, ';
			}

			if (isset( $data['complemento'] )) {
				$campos .= 'complemento = \'' . $data['complemento'] . '\', ';
			} else {
				$campos .= 'complemento = complemento, ';
			}

			if (isset( $data['apelido'] )) {
				$campos .= 'local_event = \'' . $data['apelido'] . '\' ';
			} else {
				$campos .= 'local_event = local_event ';
			}

			$sql = 'UPDATE futura_listas SET ' . $campos . ' WHERE id_lista = ' . $lista_id;
			$this->db->query( $sql );
		}

	}

	function getLista($lista_id) {
		$query = $this->db->query( 'SELECT * FROM futura_listas sl
                LEFT JOIN futura_categorias_listas scl ON scl.id_cat_lista = sl.categoria_id_cat_lista
                JOIN ' . DB_PREFIX . 'customer ON customer_id = lista_id_cliente
                LEFT JOIN ' . DB_PREFIX . 'zone z ON z.`zone_id` = sl.`estado`
                WHERE id_lista = ' . (int)$lista_id );

		$lista = array( );

		if ($query->row) {
			$lista = array(
				'id' 					 => $query->row['id_lista'],
				'nome' 				 => $query->row['nome_lista'],
				'validade' 		 => $query->row['data_valid_lista'],
				'cadastro' 		 => $query->row['data_cad_lista'],
				'evento' 			 => $query->row['data_eve_lista'],
				'cliente' 		 => $query->row['firstname'].' '.$query->row['lastname'],
				'cliente_id' 	 => $query->row['lista_id_cliente'],
				'categoria' 	 => $query->row['desc_cat_lista'],
				'categoria_id' => $query->row['categoria_id_cat_lista'],
				'parceiro' 		 => $query->row['id_cliente_parc_lista'],
				'status' 			 => $query->row['status_lista'],
				'frase' 			 => $query->row['lista_frase'],
				'logradouro' 	 => $query->row['logradouro'],
				'numero' 			 => $query->row['numero'],
				'bairro' 			 => $query->row['bairro'],
				'cep' 				 => $query->row['cep'],
				'cidade' 			 => $query->row['cidade'],
				'estado' 			 => $query->row['estado'],
				'estado_nome'  => $query->row['name'],
				'latitude' 		 => $query->row['latitude'],
				'longitude' 	 => $query->row['longitude'],
				'complemento'	 => $query->row['complemento'],
				'apelido'      => $query->row['local_event'],
				'produtos' 		 => $this->GetProdLista($query->row['id_lista'])
			);
		}

		return $lista;
	}

	function getProdListListaId($client_id){
		  $produtos = array ();
			$sql = 'SELECT fil.item_id_produto as item_id_produto, fil.qtde_item_lista as qtde_item_lista FROM futura_listas fl
							INNER JOIN futura_itens_lista fil ON (fl.id_lista = fil.listas_id_lista)
							WHERE fl.lista_id_cliente = '.$client_id;

		  $query =	$this->db->query($sql);

			if ($query->rows) {
				foreach($query->rows as $key => $value){
						$produtos[$value['item_id_produto']] =  $value['qtde_item_lista'];
				}
			}

			return $produtos;
	}

	function getProdCompListaId($client_id){
		  $produtos = array ();
			$sql = 'select
								itLis.item_id_produto as product_id,
								itLis.qtde_item_lista as qtde_desejada,
								(select
									sum(it.quantity)
									from oc_order_product it
									inner join futura_pedidos_itens_listas pedLis on (pedLis.id_pedido = it.order_id and pedLis.ped_item_id_produto = it.product_id)
									where it.product_id = itLis.item_id_produto
								)qtde_comprada
								from futura_listas lis
								inner join futura_itens_lista itLis on (itLis.listas_id_lista = lis.id_lista)
								where lis.lista_id_cliente = '.$client_id;
		  $query =	$this->db->query($sql);
			if ($query->rows) {
				foreach($query->rows as $key => $value){
						$produtos[$value['product_id']] =  array (
							'qtde_comprada' => $value['qtde_comprada'],
							'qtde_desejada' => $value['qtde_desejada']
						);
				}
			}

			return $produtos;
	}

	function GetProdLista($lista_id, $options = array(  )) {

		if ($this->customer->isLogged()) {
			$customer_group_id = $this->customer->getCustomerGroupId();
		} else {
			$customer_group_id = $this->config->get('config_customer_group_id');
		}

		if ($lista_id) {
			$filters = '';

			if ($options) {
				foreach ($options as $k => $v) {
					$filters .= 'AND ' . $k . ' = \'' . $v . '\'';
				}
			}

			$data_language = $this->config->get('config_data_language');
      if (!isset($data_language) || $data_language == Type_DataLanguage::Tp_Portugues_Brasil) {
        unset($data_language);
      }

			if($this->config->get('futuragrade_status')){
    			$sql = 'SELECT
                            spl.id_item_lista as item_id,
                            spl.qtde_item_lista as qtde,';
          $sql .= isset($data_language) ? 'coalesce(pt.descricao_ecommerce, pd.name) as nome,' : 'pd.name as nome,';
			    $sql .=      			'(SELECT price FROM ' . DB_PREFIX . 'product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = "' . (int)$customer_group_id . '" AND pd2.quantity = "1" AND ((pd2.date_start = "0000-00-00" OR pd2.date_start < NOW()) AND (pd2.date_end = "0000-00-00" OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount,
 													  (select coalesce(perc_discount, 0) perc_discount from ' . DB_PREFIX . 'order_discount  where (product_id = p.product_id) and (tipo_promocao = ' . Type_Promocao::Tp_PercDesconto . ') and (status = ' . Type_PromocaoStatus::Tp_Ativo  . ') and ((date_start = "0000-00-00") or (date_start <= CURDATE())) and ((date_end = "0000-00-00") or (date_end >= CURDATE())) ORDER BY perc_discount DESC LIMIT 1) as order_perc_discount,
                            p.price as valor,
                            p.image as imagem,
                            p.data_atualizacao_replicacao,
                            spl.item_id_produto,
														(pc.description)  color_description,
														(ps.description)  size_description,
														(psp.description) specification_description,

														CASE
														WHEN (ISNULL(pkit.product_kit_id)) THEN
                              (SELECT SUM(op.quantity) FROM futura_pedidos_itens_listas spil inner join '. DB_PREFIX .'order_product op on (spil.id_pedido = op.order_id and spil.ped_item_id_produto = op.product_id)
                                WHERE spil.ped_lista_id = '.$lista_id.'
                                AND spil.ped_item_id_produto = spl.item_id_produto
                                AND spil.ped_id_item_lista = spl.id_item_lista
                                AND spil.status_pedido = '.(int)$this->config->get('futuralistapresente_order_status_sale').'
                              )
                            ELSE
                              (SELECT COUNT(*) FROM futura_pedidos_itens_listas spil
                                WHERE spil.ped_lista_id = '.$lista_id.'
                                AND spil.ped_item_id_produto = spl.item_id_produto
                                AND spil.ped_id_item_lista = spl.id_item_lista
                                AND spil.status_pedido = '.(int)$this->config->get('futuralistapresente_order_status_sale').'
                              )
                            END
                            AS qtdeComp,

                            (SELECT COUNT(ped_item_id_produto) FROM futura_pedidos_itens_listas spil WHERE spil.ped_lista_id = '.$lista_id.' AND spil.ped_item_id_produto = spl.item_id_produto AND spil.ped_id_item_lista = spl.id_item_lista AND spil.status_pedido != 0 ) AS totalItensPedidos,
							pkit.product_kit_id AS product_kit_id
                       FROM
                            futura_itens_lista spl
                       LEFT JOIN '.DB_PREFIX.'product p ON p.product_id = spl.item_id_produto
                       LEFT JOIN '.DB_PREFIX.'product_description   pd  ON (p.product_id = pd.product_id)';
          $sql .= isset($data_language) ? ' LEFT JOIN '.DB_PREFIX.'product_translate pt ON (p.product_id = pt.product_id and pt.linguagem = "' . $data_language . '")' : '';
          $sql .=     'LEFT JOIN '.DB_PREFIX.'product_color         pc  ON (pc.productcolor_id = p.product_color_id)
                       LEFT JOIN '.DB_PREFIX.'product_size          ps  ON (ps.productsize_id = p.product_size_id)
					   LEFT JOIN '.DB_PREFIX.'product_specification psp ON (psp.productspecification_id = p.product_specification_id)
					   LEFT JOIN oc_product_kit pkit on pkit.product_id = p.product_id and pkit.site_utiliza="S"
                       WHERE spl.listas_id_lista = '.$lista_id.' '.$filters.'';
			}else{
				$sql =  'SELECT ';
				$sql .= 'spl.id_item_lista as item_id,
									spl.qtde_item_lista as qtde,';
        $sql .= isset($data_language) ? 'coalesce(pt.descricao_ecommerce, pd.name) as nome,' : 'pd.name as nome,';
				$sql .= ' (SELECT price FROM ' . DB_PREFIX . 'product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = "' . (int)$customer_group_id . '" AND pd2.quantity = "1" AND ((pd2.date_start = "0000-00-00" OR pd2.date_start < NOW()) AND (pd2.date_end = "0000-00-00" OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount,
									(select coalesce(perc_discount, 0) perc_discount from ' . DB_PREFIX . 'order_discount  where (product_id = p.product_id) and (tipo_promocao = ' . Type_Promocao::Tp_PercDesconto . ') and (status = ' . Type_PromocaoStatus::Tp_Ativo  . ') and ((date_start = "0000-00-00") or (date_start <= CURDATE())) and ((date_end = "0000-00-00") or (date_end >= CURDATE())) ORDER BY perc_discount DESC LIMIT 1) as order_perc_discount,
									p.price as valor,
									p.image as imagem,
									p.data_atualizacao_replicacao,
									spl.item_id_produto,

									CASE
									WHEN (ISNULL(pkit.product_kit_id)) THEN
										(SELECT SUM(op.quantity) FROM futura_pedidos_itens_listas spil inner join '. DB_PREFIX .'order_product op on (spil.id_pedido = op.order_id and spil.ped_item_id_produto = op.product_id)
											WHERE spil.ped_lista_id = '.$lista_id.'
											AND spil.ped_item_id_produto = spl.item_id_produto
											AND spil.ped_id_item_lista = spl.id_item_lista
											AND spil.status_pedido = '.(int)$this->config->get('futuralistapresente_order_status_sale').'
										)
									ELSE
										(SELECT COUNT(*) FROM futura_pedidos_itens_listas spil
											WHERE spil.ped_lista_id = '.$lista_id.'
											AND spil.ped_item_id_produto = spl.item_id_produto
											AND spil.ped_id_item_lista = spl.id_item_lista
											AND spil.status_pedido = '.(int)$this->config->get('futuralistapresente_order_status_sale').'
										)
									END
									AS qtdeComp,

									(SELECT COUNT(ped_item_id_produto) FROM futura_pedidos_itens_listas spil WHERE spil.ped_lista_id = ' . $lista_id . ' AND spil.ped_item_id_produto = spl.item_id_produto AND spil.ped_id_item_lista = spl.`id_item_lista` AND spil.status_pedido != 0 ) AS totalItensPedidos,
									pkit.product_kit_id AS product_kit_id
								FROM futura_itens_lista spl
								LEFT JOIN '.DB_PREFIX.'product p ON p.product_id = spl.item_id_produto
				LEFT JOIN '.DB_PREFIX.'product_description   pd  ON (p.product_id = pd.product_id)
				LEFT JOIN oc_product_kit pkit on pkit.product_id = p.product_id and pkit.site_utiliza="S"';
				$sql .= isset($data_language) ? ' LEFT JOIN '.DB_PREFIX.'product_translate pt ON (p.product_id = pt.product_id and pt.linguagem = "' . $data_language . '")' : '';
				$sql .= ' WHERE spl.listas_id_lista = ' . $lista_id . ' ' . $filters . ' ' ;
			}

      $query = $this->db->query($sql);
			$produtos = array();



			foreach ($query->rows as $item) {

				$price = ($item['discount'] ? $item['discount'] : $item['valor']);

				$produtos[] = array(
					'item_id' => $item['item_id'],
					'imagem' => $item['imagem'],
					'data_atualizacao_replicacao' => $item['data_atualizacao_replicacao'],
					'qtde' => $item['qtde'],
					'nome' => $item['nome'],
					'valor' => $item['valor'],
					'special' => ($item['order_perc_discount']) ? ($price - (($item['order_perc_discount'] * 0.01) * $price)) : 0,
					'qtdeComp' => ($item['qtdeComp']) ? $item['qtdeComp'] : 0,
					'totalItensPedidos' => $item['totalItensPedidos'],
					'id' => $item['item_id_produto'],
					'color_description' => ($this->config->get('futuragrade_status')) ? $item['color_description'] : '',
					'size_description' => ($this->config->get('futuragrade_status')) ? $item['size_description'] : '',
					'specification_description' => ($this->config->get('futuragrade_status')) ? $item['specification_description'] : '',
					'opcoes' => $this->getOpcoesProduto($item['item_id']),
					'product_kit_id' => $item['product_kit_id']
				 );
			}
			return $produtos;
		}

	}

	function getQtdProdSalledList($idLista, $prodId){

		$sql = 'select '
							.'sum(op.quantity) as quantity'
							.'from'
							.'futura_pedidos_itens_listas fpil'
							.'inner join oc_order o on(fpil.id_pedido = o.order_id)'
							.'inner join oc_order_product op on (o.order_id = op.order_id)'
							.'where fpil.ped_lista_id = '.$idLista.' and op.product_id = '.$prodId.' and fpil.status_pedido = '.(int)$this->config->get( 'futuralistapresente_order_status_sale' ) ;

    $query = $this->db->query($sql);

		return $query->row['quantity'];

	}

	function getOpcoesProduto($id_item) {
		$query = $this->db->query( 'SELECT
                              `nome_opcao`,
                              `valor_opcao`,
                              `op_id_opcao`,
                              `op_id_item_lista`,
                              `op_lista_id`,
                              `op_item_id_produto`,
                              `op_parent_opcao`,
                              `op_array`
                            FROM `futura_opcoes_produto` WHERE op_id_item_lista = ' . $id_item );
		return $query->rows;
	}

	function getListas($options = array(  )) {
		$filters = '';

		if ($options) {
			foreach ($options as $k => $v) {
				$filters .= 'AND ' . $k . ' = \'' . $v . '\' ';
			}
		}
		$query = $this->db->query( 'SELECT *,(SELECT SUM(qtde_item_lista) FROM futura_itens_lista WHERE listas_id_lista = id_lista )  AS qtde FROM `futura_listas` JOIN futura_categorias_listas ON categoria_id_cat_lista = id_cat_lista JOIN ' . DB_PREFIX . 'customer ON customer_id = lista_id_cliente WHERE lista_id_cliente = ' . $this->customer->getId(  ) . ( ' ' . $filters . ' ' ) );
		return $query->rows;
	}

	function getListasFront($options = array(  )) {
		$filters = '';

		if ($options) {
			foreach ($options as $k => $v ) {
				$filters .= ' AND ' . $k . ' = \'' . $v . '\' ';
			}
		}

		$sql = $query = $this->db->query( 'SELECT *,(SELECT SUM(qtde_item_lista) FROM futura_itens_lista WHERE listas_id_lista = id_lista )  AS qtde FROM `futura_listas` JOIN futura_categorias_listas ON categoria_id_cat_lista = id_cat_lista JOIN ' . DB_PREFIX . ( 'customer ON customer_id = lista_id_cliente WHERE status_lista = 1 ' . $filters . ' ' ) );
		return $query->rows;
	}

	function getListasAutoComplete($filter, $options = array(  )) {
		$order_by = '';
		$order = '';
		$page = '0';
		$limit = $this->config->get( 'config_catalog_limit' );


		if ($options) {
			if (isset( $options['sort'] )) {
				$order_by = 'ORDER BY ' . $options['sort'];
			}

			if (isset( $options['order'] )) {
				$order = $options['order'];
			}


			if (isset( $options['page'] )) {
				$page = $options['page'];
			}

			if (isset( $options['limit'] )) {
				$limit = $options['limit'];
			}
		}

		$sql = 'SELECT *,(SELECT SUM(qtde_item_lista) FROM futura_itens_lista WHERE listas_id_lista = id_lista )  AS qtde FROM `futura_listas` JOIN futura_categorias_listas ON categoria_id_cat_lista = id_cat_lista JOIN ' . DB_PREFIX . ( 'customer ON customer_id = lista_id_cliente WHERE CURDATE() <= data_valid_lista AND  status_lista = 1 AND CONCAT_WS(\' \',firstname,lastname) LIKE \'%' . $filter . '%\'' );
		$sql .= ' UNION ';
		$sql .= 'SELECT *,(SELECT SUM(qtde_item_lista) FROM futura_itens_lista WHERE listas_id_lista = id_lista )  AS qtde FROM `futura_listas` JOIN futura_categorias_listas ON categoria_id_cat_lista = id_cat_lista JOIN ' . DB_PREFIX . ( 'customer ON customer_id = lista_id_cliente WHERE CURDATE() <= data_valid_lista AND status_lista = 1 AND nome_lista LIKE \'%' . $filter . '%\' ' );
		$sql .= '' . $order_by . ' ' . $order . '  LIMIT ' . $page . ',' . $limit . ' ';

		$query = $this->db->query( $sql );
		return $query->rows;
	}

	function getCategorias($filter_ids = false) {
    $sql = 'SELECT * FROM futura_categorias_listas';
    if ($filter_ids) {
      $sql .= ' WHERE id_cat_lista in ('.$filter_ids.')';
    }
    $query = $this->db->query($sql);
		return $query->rows;
  }

	function addProdLista($qtde, $produto_id, $lista_id) {
		$this->db->query( 'INSERT INTO futura_itens_lista SET qtde_item_lista = \'' . $qtde . '\', listas_id_lista = \'' . $lista_id . '\', item_id_produto = \'' . $produto_id . '\';' );
		return $this->db->query( 'SELECT LAST_INSERT_ID() as id;' )->row;
	}

	function addOpcaoProduto($v = array(  )) {
		$this->db->query( 'INSERT INTO futura_opcoes_produto SET `nome_opcao` = \'' . $v['nome'] . '\',`valor_opcao`= \'' . $v['valor'] . '\',`op_lista_id` = ' . $v['lista_id'] . ',`op_item_id_produto` = ' . $v['produto_id'] . ',`op_id_opcao` = ' . $v['opcao_id'] . ', op_id_item_lista = ' . $v['item_id'] . ', op_parent_opcao = ' . $v['op_parent_opcao'] . ', op_array = ' . $v['op_array'] . '  ' );
		return true;
	}

	function removeproduto($produto_id, $lista_id, $item_id) {
		$this->db->query( 'DELETE FROM futura_pedidos_itens_listas WHERE ped_lista_id = ' . (int)$lista_id . ' AND ped_item_id_produto = ' . (int)$produto_id );
		$this->db->query( 'DELETE FROM futura_opcoes_produto WHERE op_lista_id = ' . $lista_id . ' AND op_item_id_produto = ' . $produto_id . ' AND op_id_item_lista = ' . $item_id );
		$this->db->query( 'DELETE FROM futura_itens_lista WHERE listas_id_lista = ' . $lista_id . ' AND item_id_produto = ' . $produto_id . ' AND id_item_lista = ' . $item_id );
		return true;
	}

	function updateprodlista($item_id, $lista_id, $qtde) {
		$this->db->query( 'UPDATE `futura_itens_lista` SET `qtde_item_lista` = \'' . $qtde . '\' WHERE `id_item_lista` = \'' . $item_id . '\' AND `listas_id_lista` = \'' . $lista_id . '\';' );
		return true;
	}

	function getCompLista($lista_id) {
		$sql = 'SELECT DISTINCT
                      `firstname` as nome,
                      `lastname` as sobrenome,
                      `email`,
                      `telephone` as fone
                    FROM
                      `' . DB_PREFIX . ( 'order` o
                      RIGHT JOIN futura_pedidos_itens_listas spil
                        ON o.`order_id` = spil.`id_pedido`
                     WHERE spil.`ped_lista_id` = ' . $lista_id . ' AND status_pedido > 0' );

		$query = $this->db->query( $sql );
		return $query->rows;
	}

	function getCompProd($lista_id, $item_id, $order_status) {
		$query = $this->db->query('SELECT DISTINCT
                      `firstname` as nome,
                      `lastname` as sobrenome,
                      `email`,
                      `telephone` as fone
                    FROM
                      `' . DB_PREFIX . ( 'order` o
                      RIGHT JOIN futura_pedidos_itens_listas spil
                      ON o.`order_id` = spil.`id_pedido`
                      WHERE spil.`ped_lista_id` = ' . $lista_id . ' AND spil.`ped_id_item_lista` = ' . $item_id  . ' AND status_pedido = ' . $order_status . ' AND status_pedido > 0' ) );
		return $query->rows;
	}

	function getTotalListas($options = array(  )) {
		$where = '';

		if ($options) {
			foreach ($options as $k => $v) {
				$where .= 'AND ' . $k . ' = \'' . $v . '\' ';
			}
		}

		$sql = 'SELECT count(id_lista) as total FROM futura_listas WHERE 1 = 1 ' . $where . ' ';
		$query = $this->db->query( $sql );
		return $query->row['total'];
	}

	function addPedItensLista($values = array(  ), $pedido_id = null, $status_pedido = 0) {

		if ($values) {
			foreach ($values as $k => $v) {
				foreach ($v as $k2 => $v2) {
					/*retirado para não duplicar pedidos quando a quantidade do item for maior que 1
                                         * if ($v2['qtde']>1) {
						$i = 1;

						while ($i <= $v2['qtde']) {
							$sql = 'INSERT INTO futura_pedidos_itens_listas SET
                                    `id_pedido` = ' . $pedido_id . ' ,
                                    `ped_id_item_lista` = ' . $k2 . ',
                                    `ped_lista_id` = ' . $k . ',
                                    `ped_item_id_produto` = ' . $v2['produto'] . ',
                                    `status_pedido` = ' . $status_pedido;
							$query = $this->db->query( $sql );
							++$i;
						}

						continue;
					}*/

					$sql = 'INSERT INTO futura_pedidos_itens_listas SET
                                    `id_pedido` = ' . $pedido_id . ' ,
                                    `ped_id_item_lista` = ' . $k2 . ',
                                    `ped_lista_id` = ' . $k . ',
                                    `ped_item_id_produto` = ' . $v2['produto'] . ',
                                    `status_pedido` = ' . $status_pedido;
					$query = $this->db->query( $sql );
				}
			}
		}
	}

	function GetItensPedido($pedido = null) {
		$itens = array(  );

		if ($pedido) {
			$sql = 'SELECT * FROM futura_pedidos_itens_listas WHERE id_pedido = ' . $pedido . '; ';
			$query = $this->db->query( $sql );

			if ($query->rows) {
				return $itens = $query->rows;
			}
		}

		return $itens;
	}

	function updateStatusItemPedido($itens = array(  ), $status = null) {
		if (( $itens && $status )) {
			foreach ($itens as $k => $v) {
				$this->db->query( 'UPDATE futura_pedidos_itens_listas SET status_pedido = ' . $status . ' WHERE id_pedido = ' . $v['id_pedido'] );
				//$this->db->query( 'UPDATE futura_itens_lista SET qtde_item_lista = (qtde_item_lista - 1) WHERE id_item_lista = ' . $v['ped_id_item_lista'] );
			}
		}

		return true;
	}

	function getListaAtivaByCliente($cliente_id) {
		$lista = array(  );
		$query = $this->db->query( 'SELECT * FROM futura_listas LEFT JOIN ' . DB_PREFIX . 'zone ON zone_id = estado WHERE lista_id_cliente = ' . (int)$cliente_id . ' AND status_lista = 1' );

		if ($query->rows) {
			$lista = array( 'id' => $query->row['id_lista'], 'nome' => $query->row['nome_lista'], 'validade' => $query->row['data_valid_lista'], 'cadastro' => $query->row['data_cad_lista'], 'evento' => $query->row['data_eve_lista'], 'cliente_id' => $query->row['lista_id_cliente'], 'categoria_id' => $query->row['categoria_id_cat_lista'], 'parceiro' => $query->row['id_cliente_parc_lista'], 'status' => $query->row['status_lista'], 'frase' => $query->row['lista_frase'], 'logradouro' => $query->row['logradouro'], 'numero' => $query->row['numero'], 'bairro' => $query->row['bairro'], 'cep' => $query->row['cep'], 'cidade' => $query->row['cidade'], 'estado' => $query->row['name'], 'estado_code' => $query->row['code'], 'estado_id' => $query->row['estado'], 'latitude' => $query->row['latitude'], 'longitude' => $query->row['longitude'] );
		}

		return $lista;
	}

	function getListaAtiva($cliente_id) {
		$this->load->type('tipocomum');

		$lista = array(  );
		$query = $this->db->query( 'SELECT id_lista, status_lista FROM futura_listas WHERE lista_id_cliente = ' . (int)$cliente_id . ' AND status_lista = '.Type_Status::Tp_Habilitado.' AND data_valid_lista >= "'.date('Y-m-d').'"' );
		if ($query->rows) {
                    return $lista = array('id' => $query->row['id_lista'], 'status' => $query->row['status_lista'] ) ;
		}
		return false;
	}

	function getTotalProdutos($id_lista) {

		$query = $this->db->query( 'SELECT count(fil.item_id_produto) as totalProdutos FROM futura_listas fl inner join futura_itens_lista fil on fl.id_lista = fil.listas_id_lista  WHERE fl.id_lista = '.$id_lista.'' );
		if ($query->rows) {
                    return $query->row['totalProdutos'] ;
		}
		return false;
	}

	function ValorTotalVendaConfirmadaByLista($lista_id) {
		$query = $this->db->query( 'SELECT
                                      SUM(total) as total
                                    FROM
                                      ' . DB_PREFIX . 'order_product
                                    WHERE order_id IN
                                      (SELECT DISTINCT
                                        id_pedido
                                      FROM
                                        futura_pedidos_itens_listas
		WHERE status_pedido = ' . (int)$this->config->get( 'config_complete_status_id' ) . '
		AND ped_lista_id = ' . (int)$lista_id . ')' );

		return $query->row['total'];
	}

	function ValorTotalItensDisponiveisByLista($lista_id) {
		$query = $this->db->query( 'SELECT
                                      SUM(p.`price` * qtde_item_lista) AS total
                                    FROM
                                      futura_itens_lista
                                      JOIN ' . DB_PREFIX . 'product p
                                        ON product_id = item_id_produto
                                        WHERE listas_id_lista =  ' . (int)$lista_id );
		return $query->row['total'];
	}

	function ValorTotalItensPedidoByLista($lista_id) {
		$query = $this->db->query( 'SELECT
                                      SUM(total) as total
                                    FROM
                                      ' . DB_PREFIX . 'order_product
                                    WHERE order_id IN
                                      (SELECT DISTINCT
                                        id_pedido
                                      FROM
                                        futura_pedidos_itens_listas
                                      WHERE status_pedido != 0
                                        AND ped_lista_id = ' . (int)$lista_id . ')' );

		return $query->row['total'];
	}
}