<?php
header('Access-Control-Allow-Origin: *');
require_once("wp-load.php");
require_once("wp-includes/functions.php");

require "admin/process/conexionIpos.php";
require "admin/process/crud.php";

require_once 'wp-includes/PHPMailer/PHPMailer.php';
require_once 'wp-includes/PHPMailer/Exception.php';

class_alias( PHPMailer\PHPMailer\PHPMailer::class, 'PHPMailer' );
class_alias( PHPMailer\PHPMailer\Exception::class, 'phpmailerException' );
// require "admin/process/SED.php";

$postedContent = json_decode(file_get_contents("php://input"));

if (property_exists($postedContent, 'option'))
{
}
else if (isset($_POST["option"])) {
  $option = $_POST["option"];

  // if ($option == 'createSale') {
  //   $id = $_POST['id'];
  //   error_log('Entra a crear venta con id ' . $id);
  //   echo "Bien";
  // }
}
else {
    $option = $_GET["option"];

    if ($option == 'registerUser') {
      $user = $_GET["user"];
      $pass = $_GET["pass"];
      $name = $_GET["name"];
      $last_name = $_GET["last_name"];
      $email = $_GET["email"];
      $tel = $_GET["tel"];
      $cp = $_GET["cp"];
      $estado = $_GET["estado"];
      $municipio = $_GET["municipio"];
      $colonia = $_GET["colonia"];
      $calle = $_GET["calle"];
      $numExt = $_GET["numExt"];
      $numInt = $_GET["numInt"];
    }

    else if ($option == 'login') {
      $user = $_GET["user"];
      $pass = $_GET["pass"];
    }

    else if ($option == 'sendEmailQuote') {
      $userId = $_GET["userId"];
      $folio = $_GET["folio"];
      $mensaje = $_GET["mensaje"];
      $items = $_GET["items"];
      $total = $_GET["total"];
    }
}

switch ($option) {
  case 'registerUser':
    registerUser();
    break;
  case 'login':
    login();
    break;
  case 'sendEmailQuote':
    sendEmailQuote();
    break;
}

function sendEmailQuote() {
  global $userId;
  global $folio;
  global $mensaje;
  global $items;
  global $total;

  $user_cp = get_user_meta($userId, 'user_cp', true);
  $user_estado = get_user_meta($userId, 'user_estado', true);
  $user_ciudad = get_user_meta($userId, 'user_ciudad', true);
  $user_colonia = get_user_meta($userId, 'user_colonia', true);
  $user_calle = get_user_meta($userId, 'user_calle', true);
  $user_num = get_user_meta($userId, 'user_num', true);
  $user_numInt = get_user_meta($userId, 'user_numInt', true);
  $user_phone = get_user_meta($userId, 'user_phone', true);

  $direccion = $user_calle . ' #' . $user_num . ' '. $user_numInt . ', ' . $user_colonia;

  $style = 'style="margin: 0 -1px 24px 0;text-align: left;width: 1200px;border-collapse: separate;border-collapse: collapse;"';
  $styleH = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);"';
  $styleHC = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);text-align: center;"';
  $styleHP = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);;text-align: right;"';
  $styleB = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);"';
  $styleBC = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);text-align: center;"';
  $styleBP = 'style="text-transform: uppercase;font-weight: 700;padding: 9px 12px;line-height: 1.5em;border: 1px solid rgba(0,0,0,.1);text-align: right;"';

  $user_info = get_userdata($userId);

  $nombreUsuario = isset( $user_info->user_nicename ) ? (string) $user_info->user_nicename : '';
  $nombreCompleto = isset( $user_info->display_name ) ? (string) $user_info->display_name : '';
  $telefono = $user_phone;
  $correo = isset( $user_info->user_email ) ? (string) $user_info->user_email : '';

  error_log($nombreUsuario . ' <br> ' . $nombreCompleto . ' <br> ' . $correo);

  $lineasCliente = "
  <table>
  <tr><th>ID Cliente:</th><td>$userId</td></tr>
  <tr><th>Nombre de Usuario:</th><td>$nombreUsuario</td></tr>
  <tr><th>Nombre Completo:</th><td>$nombreCompleto</td></tr>
  <tr><th>Codigo postal:</th><td>$user_cp</td></tr>
  <tr><th>Estado:</th><td>$user_estado</td></tr>
  <tr><th>Municipio:</th><td>$user_ciudad</td></tr>
  <tr><th>Direccion:</th><td>$direccion</td></tr>
  <tr><th>Telefono:</th><td>$telefono</td></tr>
  <tr><th>Correo:</th><td>$correo</td></tr>
  </table>";

  $lineas = "
    <table $style>
    <thead>
    <tr>
      <th $styleHC>Imagen</th>
      <th $styleHC>Clave</th>
      <th $styleH>Descripcion</th>
      <th $styleHP>Precio $precioCliente</th>
      <th $styleHC>Cantidad</th>
      <th $styleHP>Importe</th>
    </tr>
  </thead>
  <tbody>";

  $items = stripslashes($items);

  $itemJson = json_decode($items, true);

  error_log(print_r($itemJson, true));

  foreach ($itemJson as $key => $item){
    $product_id = $item['product_id'];
    $quantity = $item['quantity'];
    $importe = $item['line_total'];
    // $total += floatval($importe);
    $image_id = '';
    $price = 0;
    $priceMayoreo = 0;
    $sku = $item['sku'];
    $name = $item['name'];
    $image = $item['image'];
    $price = $item['price'];

    $lineas .= '<tr>';
      $lineas .= '<td '.$styleBC.'><img style="width: 50px;" src="'.$image.'" alt="'.$name.'"></td>';
      $lineas .= '<td '.$styleBC.'>'.$sku .'</td>';
      $lineas .= '<td '.$styleB.'>'.$name .'</td>';
      $lineas .= '<td '.$styleBP.'>$'.number_format($price, 2, '.', ',') .'</td>';
      $lineas .= '<td '.$styleBC.'>'.$quantity .'</td>';
      $lineas .= '<td '.$styleBP.'>$'.number_format($importe, 2, '.', ',') .'</td>';
      $lineas .= '</tr>';
    }
    $lineas .= '
    <tr>
      <td colspan="4"></td>
      <td '.$styleB.'>Total</td>
      <td '.$styleBP.'>$'.number_format($total, 2, '.', ',').'</td>
    </tr>
  </tbody>
</table><h3>Mensaje: </h3><p> ' . $mensaje . ' </p>';
$lineasCondiciones = "
<p style=\"width: 750px;\">Los productos están sujetos a cambios de precio y existencia sin previo aviso,
  cualquier duda puede comunicarse enviando un correo a ventas@elcampeon.mx , también puede contactarnos
  por nuestro WhatsApp (899) 494-9554, estamos a sus ordenes. https://elcampeon.mx/</p>";

  $mailContent = $lineasCliente. "<h1>Lista de Cotizacion #" . $folio . " </h1>". $lineas . $lineasCondiciones;

  error_log($mailContent);

  $phpmailer = new PHPMailer(true);

  $phpmailer->isSMTP();
  $phpmailer->Host = 'smtp.example.com';
  $phpmailer->SMTPAuth = true;
  $phpmailer->Username = 'ventas@elcampeon.mx';
  $phpmailer->Password = 'x110262@';
  $phpmailer->SMTPSecure = 'tls';
  $phpmailer->Port = 587;
  $phpmailer->CharSet = 'UTF-8';
  $phpmailer->setFrom('ventas@elcampeon.mx', 'Cotización');

  // Add a recipient
  $phpmailer->addAddress($correo);

  // Add cc or bcc
  // $phpmailer->addCC('[email protected]');
  $phpmailer->addBCC('ventas@elcampeon.mx');

  // Set email format to HTML
  $phpmailer->isHTML(true);

  // Email subject
  $phpmailer->Subject = 'Nueva Cotizacion #' . $folio;

  // Email body content
  $mailContent = $lineasCliente. "<h1>Lista de Cotizacion #" . $folio . " </h1>". $lineas . $lineasCondiciones;
  $phpmailer->Body    = $mailContent;

  if(!$phpmailer->send()){
    // error_log('Message could not be sent.');
    // error_log('Mailer Error: ' . $phpmailer->ErrorInfo);
  }else{
    // error_log('Message has been sent');
  }
}

function registerUser() {
  global $user;
  global $pass;
  global $name;
  global $last_name;
  global $email;
  global $tel;
  global $cp;
  global $estado;
  global $municipio;
  global $colonia;
  global $calle;
  global $numExt;
  global $numInt;

  $metaUser = array(
    'user_phone' => $tel,
    'user_cp' => $cp,
    'user_estado' => $estado,
    'user_ciudad' => $municipio,
    'user_colonia' => $colonia,
    'user_calle' => $calle,
    'user_num' => $numExt,
    'user_numInt' => $numInt
  );

  $usuarioIdWP = new_user_with_metadata($user, $pass, $email, $metaUser);

  $passHash = md5($pass);

  $model = new Crud;
  // $model->insertInto = "wp_users";
  // $model->insertColumns = "user_login, user_pass, user_nicename, user_email, user_url, user_registered, user_activation_key, user_status, display_name";
  // $model->insertValues = "'$user', '$passHash', '$user', '$email', '', now(), '', 1, '$name $last_name'";
  // $model->CreateId();

  $nombreCli = $name . ' ' . $last_name;

  $status = "error";
  $message = "Ocurrio un error";
  $idUser = '';

  if ( ! is_wp_error( $usuarioIdWP ) ) {
    $model->insertInto = "clientes";
  	$model->insertColumns = "seudonimo,nombre,contacto, direccion, ciudad, rfc, cp, telefono1, telefono2, telefono3, estado, municipio, localidad, id_user, lim_credito, email, curp, credito, precio_venta, precio_credito, saldo_actual, saldo_vencido, credito_disp, dias_credito, idCustomerWP";
  	$model->insertValues = "'$user','$nombreCli','$nombreCli', '$calle $numExt $numInt', '$municipio', '', '$cp', '$tel', '', '', '$estado', '$municipio', '', '1', '0', '$email', '', 0, '1', '2', '0', '0', '0', '0','$usuarioIdWP'";
  	$model->CreateId();
    $status = "success";
    $message = "Registrado correctamente";
    $idUser = $model->message;
  }
  else {
    $message = $usuarioIdWP->get_error_message();
  }

  // $model->insertInto = "clientes";
	// $model->insertColumns = "seudonimo,nombre,contacto, direccion, ciudad, rfc, cp, telefono1, telefono2, telefono3, estado, municipio, localidad, id_user, lim_credito, email, curp, credito, precio_venta, precio_credito, saldo_actual, saldo_vencido, credito_disp, dias_credito, idCustomerWP";
	// $model->insertValues = "'$user','$nombreCli','$nombreCli', '$calle $numExt $numInt', '$municipio', '', '$cp', '$tel', '', '', '$estado', '$municipio', '', '1', '0', '$email', '', 0, '1', '2', '0', '0', '0', '0','$usuarioIdWP'";
	// $model->CreateId();
  // $idUser = $model->message;

  $mensajeJSON = array(
    'status' => $status,
    'message' => $message,
    'data' => $idUser,
    'dataWP' => $usuarioIdWP
  );

  $mensajeJSON = utf8_converter($mensajeJSON);
	echo json_encode($mensajeJSON);

}

function new_user_with_metadata( $username, $password, $email, $meta) {
  //this is just an example, in your function you can pass as many fields as you want
  // $meta = array(
  //   'job_title' => 'developer',
  //   'country' => 'United States',
  //   'viaphp' => true
  // );

  //let's create our user
  $user = wp_create_user( $username, $password, $email );

  //check if there are no errors
  if ( ! is_wp_error( $user ) ) {
    foreach( $meta as $key => $val ) {
      update_user_meta( $user, $key, $val );
    }
  }

  return $user;
}

function login(){
  global $user;
  global $pass;
  $arr = array();
  $creds = array();
  $creds['user_login'] = $user;
  $creds['user_password'] =  $pass;
  $creds['remember'] = true;
  $user = wp_signon( $creds, false );

  $status = 'success';
  $message = 'Obtenido correctamente';

  if ( is_wp_error($user) ) {
    $status = 'error';
    $message = $user->get_error_message();
  }
  else {
    $userId = $user->data->ID;
    $userLogin = $user->data->user_login;
    $userName = $user->data->user_nicename;
    $userEmail = $user->data->user_email;

    $userTel = get_user_meta($userId, "user_phone", true);
    $userCP = get_user_meta($userId, "user_cp", true);
    $userEstado = get_user_meta($userId, "user_estado", true);
    $userCiudad = get_user_meta($userId, "user_ciudad", true);
    $userColonia = get_user_meta($userId, "user_colonia", true);
    $userCalle = get_user_meta($userId, "user_calle", true);
    $userNum = get_user_meta($userId, "user_num", true);
    $userNumInt = get_user_meta($userId, "user_numInt", true);

    $model = new Crud;
  	$model->select = "id, precio_venta";
  	$model->from = "clientes";
  	$model->condition = "idCustomerWP = '$userId'";
  	$model->Read();
  	$filas = $model->rows;
    $idPOS = '0';
    $precio_venta = '1';
  	if (!empty($filas)) {
  		foreach ($filas as $fila) {
        $idPOS = $fila['id'];
        $precio_venta = $fila['precio_venta'];
  		}
  	}

    $arr[] = array(
      'id' => $userId,
      'idPOS' => $idPOS,
      'precio_venta' => $precio_venta,
      'user' => $userLogin,
      'name' => $userName,
      'email' => $userEmail,
      'tel' => $userTel,
      'cp' => $userCP,
      'estado' => $userEstado,
      'ciudad' => $userCiudad,
      'colonia' => $userColonia,
      'calle' => $userCalle,
      'num' => $userNum,
      'numInt' => $userNumInt
    );
  }

  $mensajeJSON = array(
    'status' => $status,
    'message' => $message,
    'data' => $arr
  );

  $mensajeJSON = utf8_converter($mensajeJSON);
	echo json_encode($mensajeJSON);
}

function utf8_converter($array)
{
    array_walk_recursive($array, function (&$item, $key) {
        if (!mb_detect_encoding($item, 'utf-8', true)) {
            $item = utf8_encode($item);
        }
    });
    return $array;
}

?>
