<?php
use Franky\Core\validaciones;
use Ecommerce\model\pedidos;
use Ecommerce\entity\pedidos as PedidosEntity;
use Ecommerce\model\producto_pedidoModel;
use Ecommerce\entity\producto_pedido as producto_pedidoEntity;
use Base\model\USERS;
use Ecommerce\model\EcommercelogstatusModel;
use Ecommerce\entity\EcommercelogstatusEntity;

//include(PROJECT_DIR."/modulos/ecommerce/loads/init.php");

if($MySession->getVar('nivel') != NIVEL_USERDEVELOPER)
{
    echo shellFontColor($MyMessageAlert->Message("sin_privilegios"),"rojo")."\n";
    exit;
}


$ibd  = new Franky\Database\IBD(new \Franky\Database\configure,'conexion_bd',new \Franky\Database\Debug);



$help = helpShell([]);


$validaciones =  new validaciones();
$valid = $validaciones->validRules();
if(!$valid)
{
    echo shellFontColor($validaciones->getMsg(),"rojo")."\n\n".$help;
    exit;
}


$USERS = new USERS();
$pedidosModel = new pedidos();
$PedidosEntity = new PedidosEntity();
$producto_pedidoModel = new producto_pedidoModel();
$producto_pedidoEntity = new producto_pedidoEntity();
$EcommercelogstatusModel    = new EcommercelogstatusModel();
$EcommercelogstatusEntity   = new EcommercelogstatusEntity();


$pedidosModel->setPage(1);
$pedidosModel->setTampag(100000);
$pedidosModel->setOrdensql("ecommerce_pedidos.fecha ASC");
$result	 		= $pedidosModel->getData('', '','','pending','','paypal');

$pedidos = array();

if($pedidosModel->getTotal() > 0)
{
    while($registro = $pedidosModel->getRows())
    {
      $pedidos[] = $registro;
    }
}

foreach($pedidos as $pedido)
{
  $producto_pedidoEntity->setId_pedido($pedido['id']);
  $producto_pedidoModel->getData($producto_pedidoEntity->getArrayCopy());
  $gran_total = 0;
  while($registro = $producto_pedidoModel->getRows())
  {
      $precio = $registro["precio"] * $registro["qty"];

      $gran_total += $precio;

      $PedidosEntity->setId($pedido['id']);
      $paymentID = json_decode($pedido['referencia'],true);
      $paypalCheck = paypalCheck($paymentID['paymentID']);
     //   echo print_r($paypalCheck);

      $status_pago = normalizeStatusTransaccion($paypalCheck->state);
      $total = $paypalCheck->transactions[0]->amount->total;
      $currency = $paypalCheck->transactions[0]->amount->currency;
      $subtotal = $paypalCheck->transactions[0]->amount->details->subtotal;
      $recipient_name = $paypalCheck->transactions[0]->item_list->shipping_address->recipient_name;

      if($status_pago == "paid")
      {
          $status_pago = ($gran_total > $total ? "pago_incompleto" : $status_pago);
      }
      if($status_pago != $pedido['status'])
      {
        $PedidosEntity->setStatus($status_pago);
        $PedidosEntity->setMonto_pagado($total);
        $PedidosEntity->setMonto_compra($gran_total);
        if($pedidosModel->save($PedidosEntity->getarrayCopy()) == REGISTRO_SUCCESS)
        {
          $EcommercelogstatusEntity->status($status_pago);
          $EcommercelogstatusEntity->auto(1);
          $EcommercelogstatusEntity->id_user(0);
          $EcommercelogstatusEntity->fecha(date('Y-m-d H:i:s'));
          $EcommercelogstatusEntity->id_pedido($PedidosEntity->getId());
          $EcommercelogstatusModel->save($EcommercelogstatusEntity->getArrayCopy());

          $detalle_pedido = getPedido($PedidosEntity->getId());

          if($USERS->getData($detalle_pedido['uid'])==REGISTRO_SUCCESS)
          {


            $dataUser = $USERS->getRows();

            $productos_html = render(PROJECT_DIR.'/modulos/ecommerce/diseno/email/productos.phtml',['items' =>$detalle_pedido['productos']]);


            $campos = array("orden" => $PedidosEntity->getId(),
            "nombre" =>$detalle_pedido['nombre'],
            'productos' =>$productos_html,
            "email" => $dataUser['email'],
            'gran_total' => getFormatoPrecio($detalle_pedido['monto_compra'],true,DATA_STORE_CONFIG['simbolo'],DATA_STORE_CONFIG['abreviatura']),
            'monto_envio' =>getFormatoPrecio($detalle_pedido['monto_envio'],true,DATA_STORE_CONFIG['simbolo'],DATA_STORE_CONFIG['abreviatura']),
            'descuento' =>getFormatoPrecio($detalle_pedido['descuento'],true,DATA_STORE_CONFIG['simbolo'],DATA_STORE_CONFIG['abreviatura']),
            'metodo_pago' =>$detalle_pedido['metodo_pago'],
            "status" => getStatusTransaccion($status_pago));

            $TemplateemailModel    = new \Base\model\TemplateemailModel;
            $TemplateemailEntity    = new \Base\entity\TemplateemailEntity;
            $TemplateemailEntity->id(getCoreConfig('ecommerce/ventas/email-template-cambiostatus'));
            $TemplateemailModel->getData($TemplateemailEntity->getArrayCopy());
            $registro  = $TemplateemailModel->getRows();
            sendEmail($campos,$registro);

          }

            echo shellFontColor('['+$pedido['id'].']'.$status_pago,"verde")."\n\n";
        }
      }
  }
}
?>
