Se agrega url de terminos y condiciones por BD

Se agrega parametro de dias a correo
parent 0c70264b
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="x-apple-disable-message-reformatting" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel="stylesheet">
<title></title>
<style type="text/css">
/* /\/\/\/\/\/\/\/\/ CLIENT-SPECIFIC STYLES /\/\/\/\/\/\/\/\/ */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap');
/* /\/\/\/\/\/\/\/\/ CLIENT-SPECIFIC STYLES /\/\/\/\/\/\/\/\/ */
#outlook a{padding:0;}
.ReadMsgBody{width:100%;} .ExternalClass{width:100%;}
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
body, table, td, p, a, li, blockquote{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;}
table, td{mso-table-lspace:0pt; mso-table-rspace:0pt;}
img{-ms-interpolation-mode:bicubic;}
/* /\/\/\/\/\/\/\/\/ RESET STYLES /\/\/\/\/\/\/\/\/ */
body{margin:0; padding:0;}
img{border:0; height:auto; line-height:100%; outline:none; text-decoration:none;}
table{border-collapse:collapse !important;}
body, #bodyTable, #bodyCell{height:100% !important; margin:0; padding:0; width:100% !important;}
/* /\/\/\/\/\/\/\/\/ TEMPLATE STYLES /\/\/\/\/\/\/\/\/ */
/* ========== Page Styles ========== */
#bodyCell{padding:20px;}
#templateContainer{width:600px;}
body, #bodyTable{
background-color:#f1f1f1;
}
/* /\/\/\/\/\/\/\/\/ MOBILE STYLES /\/\/\/\/\/\/\/\/ */
@media only screen and (max-width: 480px){
/* /\/\/\/\/\/\/ CLIENT-SPECIFIC MOBILE STYLES /\/\/\/\/\/\/ */
body, table, td, p, a, li, blockquote{-webkit-text-size-adjust:none !important;}
body{width:100% !important; min-width:100% !important;}
/* /\/\/\/\/\/\/ MOBILE RESET STYLES /\/\/\/\/\/\/ */
#bodyCell{padding:10px !important;}
/* /\/\/\/\/\/\/ MOBILE TEMPLATE STYLES /\/\/\/\/\/\/ */
/* ======== Page Styles ======== */
#templateContainer{
max-width:480px !important;
width:100% !important;
}
/* ======== Header Styles ======== */
.flexibleImages{
height:auto !important;
max-width:600px !important;
width:100% !important;
}
.btn{font-size: 18px !important;}
.footerLogo{max-width: 150px !important;height: auto !important;}
}
</style>
</head>
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0">
<center>
<table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable">
<tr>
<td align="center" valign="top" id="bodyCell">
<!-- BEGIN TEMPLATE // -->
<table align="center" border="0" cellpadding="0" cellspacing="0" id="templateContainer" width="600" bgcolor="#FFFFFF" style="background-color: #FFFFFF;">
<!-- BEGIN -->
<tr>
<td align="center" valign="top" style="padding-left: 40px;padding-right: 40px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;padding-bottom: 4px;padding-top: 25px;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/DESAFIO_TERMINADO.png" width="355" height="auto" style="max-width:355px;height:auto;" class="flexibleImages"/></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" style="padding-left: 40px;padding-right: 40px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/Click-Selfie-Test.png" width="370" height="auto" style="max-width:370px;height:auto;" class="flexibleImages"/></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" style="padding-left: 30px;padding-right: 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #737373;font-size: 18px;text-align: center;padding-top: 12px;">
Ya han pasado 30 días
</td>
</tr>
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #f5a801;font-size: 30px;text-align: center;font-weight: 700;">
<strong>¿Lista para ver el cambio?</strong>
</td>
</tr>
</table>
</td>
</tr>
<tr><td height="40" style="height: 40px;line-height: 40px;">&nbsp;</td></tr>
<tr>
<td align="center" valign="top" style="padding-left: 30px;padding-right: 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #737373;font-size: 18px;text-align: center;padding-bottom: 4px;">
Pincha aquí
</td>
</tr>
<tr>
<td align="center" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="236">
<tr>
<td align="center" style="border-radius: 26px; background-color: #f2b521;">
<a href="{{url_sitio}}{{seccion}}?idp={{id_usuario}}" target="_blank" class="btn" style="font-size: 22px; font-family: 'Montserrat', Verdana, Helvetica, sans-serif; letter-spacing: 1px; color: #ffffff; text-decoration: none; border-radius: 26px; background-color: #f2b521; padding-top: 4px;padding-right: 10px;padding-bottom: 4px;padding-left: 10px; border-top: 1px solid #f2b521;border-right: 1px solid #f2b521;border-bottom: 1px solid #f2b521;border-left: 1px solid #f2b521; display: block;"><strong>SELFIE DÍA 30</strong></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;">
<img src="{{url_sitio}}nutrapharm/img/email/upper_footer.png" width="600" height="auto" style="max-width:600px;height:auto;display: block;" class="flexibleImages"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" bgcolor="#f5a801" style="background-color: #f5a801;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;padding-bottom: 30px;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/Inovage.png" class="footerLogo" width="200" height="auto" style="width: 200px;height: auto;"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- // END TEMPLATE -->
</td>
</tr>
</table>
</center>
</body>
</html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<meta name="x-apple-disable-message-reformatting" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<link href="https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap" rel="stylesheet">
<title></title>
<style type="text/css">
/* /\/\/\/\/\/\/\/\/ CLIENT-SPECIFIC STYLES /\/\/\/\/\/\/\/\/ */
@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@400;700&display=swap');
/* /\/\/\/\/\/\/\/\/ CLIENT-SPECIFIC STYLES /\/\/\/\/\/\/\/\/ */
#outlook a{padding:0;}
.ReadMsgBody{width:100%;} .ExternalClass{width:100%;}
.ExternalClass, .ExternalClass p, .ExternalClass span, .ExternalClass font, .ExternalClass td, .ExternalClass div {line-height: 100%;}
body, table, td, p, a, li, blockquote{-webkit-text-size-adjust:100%; -ms-text-size-adjust:100%;}
table, td{mso-table-lspace:0pt; mso-table-rspace:0pt;}
img{-ms-interpolation-mode:bicubic;}
/* /\/\/\/\/\/\/\/\/ RESET STYLES /\/\/\/\/\/\/\/\/ */
body{margin:0; padding:0;}
img{border:0; height:auto; line-height:100%; outline:none; text-decoration:none;}
table{border-collapse:collapse !important;}
body, #bodyTable, #bodyCell{height:100% !important; margin:0; padding:0; width:100% !important;}
/* /\/\/\/\/\/\/\/\/ TEMPLATE STYLES /\/\/\/\/\/\/\/\/ */
/* ========== Page Styles ========== */
#bodyCell{padding:20px;}
#templateContainer{width:600px;}
body, #bodyTable{
background-color:#f1f1f1;
}
/* /\/\/\/\/\/\/\/\/ MOBILE STYLES /\/\/\/\/\/\/\/\/ */
@media only screen and (max-width: 480px){
/* /\/\/\/\/\/\/ CLIENT-SPECIFIC MOBILE STYLES /\/\/\/\/\/\/ */
body, table, td, p, a, li, blockquote{-webkit-text-size-adjust:none !important;}
body{width:100% !important; min-width:100% !important;}
/* /\/\/\/\/\/\/ MOBILE RESET STYLES /\/\/\/\/\/\/ */
#bodyCell{padding:10px !important;}
/* /\/\/\/\/\/\/ MOBILE TEMPLATE STYLES /\/\/\/\/\/\/ */
/* ======== Page Styles ======== */
#templateContainer{
max-width:480px !important;
width:100% !important;
}
/* ======== Header Styles ======== */
.flexibleImages{
height:auto !important;
max-width:600px !important;
width:100% !important;
}
.btn{font-size: 18px !important;}
.footerLogo{max-width: 150px !important;height: auto !important;}
}
</style>
</head>
<body leftmargin="0" marginwidth="0" topmargin="0" marginheight="0" offset="0">
<center>
<table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable">
<tr>
<td align="center" valign="top" id="bodyCell">
<!-- BEGIN TEMPLATE // -->
<table align="center" border="0" cellpadding="0" cellspacing="0" id="templateContainer" width="600" bgcolor="#FFFFFF" style="background-color: #FFFFFF;">
<!-- BEGIN -->
<tr>
<td align="center" valign="top" style="padding-left: 40px;padding-right: 40px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;padding-bottom: 4px;padding-top: 25px;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/DESAFIO_TERMINADO.png" width="355" height="auto" style="max-width:355px;height:auto;" class="flexibleImages"/></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" style="padding-left: 40px;padding-right: 40px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/Click-Selfie-Test.png" width="370" height="auto" style="max-width:370px;height:auto;" class="flexibleImages"/></a>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" style="padding-left: 30px;padding-right: 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #737373;font-size: 18px;text-align: center;padding-top: 12px;">
Ya han pasado {{dias}} días
</td>
</tr>
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #f5a801;font-size: 30px;text-align: center;font-weight: 700;">
<strong>¿Lista para ver el cambio?</strong>
</td>
</tr>
</table>
</td>
</tr>
<tr><td height="40" style="height: 40px;line-height: 40px;">&nbsp;</td></tr>
<tr>
<td align="center" valign="top" style="padding-left: 30px;padding-right: 30px;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="font-family: 'Montserrat', Verdana, Helvetica, sans-serif;color: #737373;font-size: 18px;text-align: center;padding-bottom: 4px;">
Pincha aquí
</td>
</tr>
<tr>
<td align="center" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td align="center" valign="top">
<table align="center" border="0" cellpadding="0" cellspacing="0" width="236">
<tr>
<td align="center" style="border-radius: 26px; background-color: #f2b521;">
<a href="{{url_sitio}}{{seccion}}?idp={{id_usuario}}" target="_blank" class="btn" style="font-size: 22px; font-family: 'Montserrat', Verdana, Helvetica, sans-serif; letter-spacing: 1px; color: #ffffff; text-decoration: none; border-radius: 26px; background-color: #f2b521; padding-top: 4px;padding-right: 10px;padding-bottom: 4px;padding-left: 10px; border-top: 1px solid #f2b521;border-right: 1px solid #f2b521;border-bottom: 1px solid #f2b521;border-left: 1px solid #f2b521; display: block;"><strong>SELFIE DÍA 30</strong></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;">
<img src="{{url_sitio}}nutrapharm/img/email/upper_footer.png" width="600" height="auto" style="max-width:600px;height:auto;display: block;" class="flexibleImages"/>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center" valign="top" bgcolor="#f5a801" style="background-color: #f5a801;">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top" style="text-align: center;padding-bottom: 30px;">
<a href="#" target="_blank"><img src="{{url_sitio}}nutrapharm/img/email/Inovage.png" class="footerLogo" width="200" height="auto" style="width: 200px;height: auto;"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
<!-- // END TEMPLATE -->
</td>
</tr>
</table>
</center>
</body>
</html>
{% extends 'producto_final/base_final.html.twig' %}
{% block stylesheets %}
<link rel="stylesheet" href="{{asset('manuel/css/camera.css')}}">
{% endblock %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionInicio}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm" />
<meta property="og:description" content="Producto Nutrapharm - Sacate una foto y compara en {{dias}} días!" />
<meta property="og:image:type" content="image/png"/>
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}imagenes/template/logo.png"/>
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="header-top">
<img class="img-responsive" src="{{asset('manuel/images/header-i.jpg')}}" alt="INOVAGE Selfie Nutrapharm" />
</div>
{% endblock %}
{% block body %}
<div class="app-container">
<img class="img-responsive logo-app" src="{{asset('manuel/images/atrevete-desafio.png')}}" alt="Atrévete al desafío" />
{#CODIGO OCULTO#}
{{ include('producto_final/camera_logic.html.twig') }}
{#CODIGO OCULTO#}
<div class="botonera-fotos">
<div>
<button id="tomarFoto" name="tomarFoto" class="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button>
<label class=" control-label">Toma una foto con tu cámara aquí</label>
</div>
<div>
<button id="subirFoto" name="subirFoto" class="subirFoto" onclick="mostrarSubirFoto(event)">Subir Foto
</button>
<label class=" control-label">Sube una foto desde tu galería </br>o desde tu PC</label>
</div>
</div>
<div id="containerFormulario" class="container-form" style="display:none">
<div>
<p class="control-label b txt-center">Comenta tu foto al <strong>Inicio del tratamiento</strong></p>
<!-- <input id="comentarioFotoUsuario" class="barra-comentario" type="textarea" placeholder="Comentario..." /> -->
<textarea id="comentarioFotoUsuario" class="barra-comentario" name="mytextarea" placeholder="Escribe tu Comentario"></textarea>
</div>
<div class="grilla-datos">
<div>
<input id="nombreUsuario" class="nombre-e" type="text" placeholder="Ingresa tu nombre" />
</div>
<div>
<input id="mailUsuario" class="mail-e" type="text" placeholder="Ingresa tu email" />
</div>
</div>
{#MENSAJES EXITO ERROR#}
{{ include('producto_final/mensaje-exito-error.html.twig') }}
{#MENSAJES EXITO ERROR#}
<button id="btnGuardar" class="btn-guardar">Finalizar</button>
</div>
<div class="terminos-condiciones">
<a href="#">Términos y Condiciones de <strong>NUTRAPHARM</strong></a>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script src="{{asset('frontend/js/capture-2.js')}}"></script>
<script>
var imagenSubida = false;
var imagenTomada = false;
var usuarioNutraPharm = "none";
var tipoUsuarioFormulario = 1;
var upload;
var preUpload;
</script>
<script>
var fileUpload = $("#imgInp");
function mostrarTomarFoto(event) {
event.preventDefault();
//var fotoActual = $("#tomarFotoContainer");
//fotoActual.css("background-image", "url('')");
$("#imagen_carga").attr('src', "");
console.log("mostrando tomar foto...");
$("#tomarFotoContainer").show();
$("#cameraContainer").show();
$("#startbutton").show();
$("#subirFotoContainer").hide();
$("#output_img_inovage").hide();
$("#imagenUsuario").attr('src', "");
$("#imagenUsuario").hide();
$("#imagen_carga").hide();
imagenTomada = true;
imagenSubida = false;
}
function mostrarSubirFoto(event) {
event.preventDefault();
openSeleccionadorArchivos(event);
console.log("mostrando subir foto...");
$("#imagen_carga").show();
$("#tomarFotoContainer").hide();
$("#cameraContainer").hide();
$("#startbutton").hide();
$('#imagen_carga').attr('src', {%if isMobile == 1 %} "{{asset('manuel/images/selfie-alto-630px.jpg')}}" {% else %} "{{asset('manuel/images/selfie-ancho-630px.jpg')}}" {% endif %});
//$("#subirFotoContainer").show();
$("#output_img_inovage").hide();
$("#tomarFoto").html("Toma una foto con tu cámara aquí");
imagenTomada = false;
imagenSubida = true;
}
function openSeleccionadorArchivos(event) {
event.preventDefault();
$("#imgInp").trigger("click");
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagenUsuario').attr('src', e.target.result);
$('#imagen_carga').attr('src', e.target.result);
//generateUrlBackground(e.target.result, "data");
//upload.doPreUpload();//por ahora asi
}
reader.readAsDataURL(input.files[0]); // convert to base64 string
//$('#imagenUsuario').show();
}
}
fileUpload.on('change', function () {
$("#containerFormulario").show();
$("#output_img_inovage").hide();
readURL(this);
});
var Upload = function (file) {
this.file = file;
};
Upload.prototype.getType = function () {
return this.file.type;
};
Upload.prototype.getSize = function () {
return this.file.size;
};
Upload.prototype.getName = function () {
if (this.file != null)
return this.file.name;
else
return "";
};
Upload.prototype.doUpload = function () {
var that = this;
var url = "{{ path('nutrapharm_upload') }}";
var formData = new FormData();
$("#btnGuardar").prop("disabled", true);
$("#btnGuardar").html("Procesando...");
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
formData.append("nombreUsuario", $("#nombreUsuario").val());
formData.append("mailUsuario", $("#mailUsuario").val());
formData.append("comentarioFotoUsuario", $("#comentarioFotoUsuario").val());
formData.append("tipoUsuarioFormulario", tipoUsuarioFormulario);
formData.append("usuarioNutraPharm", usuarioNutraPharm);
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
if (data.tipo === 2) {
tipoUsuarioFormulario = data.tipo;
usuarioNutraPharm = data.usuario;
}
writeMessage(data.msg, "success");
$("#btnGuardar").hide();
},
complete: function (data) {
$("#btnGuardar").prop("disabled", false);
$("#btnGuardar").html("Finalizar");
}
});
};
Upload.prototype.doPreUpload = function(){
var that = this;
var url = "{{ path('nutrapharm_pre_upload') }}";
var formData = new FormData();
var idTemp = Math.random()+Math.random();
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
formData.append("paso", "primer");
formData.append("id", idTemp);
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
}
},
success: function (data) {
$('#imagen_carga').attr('src', data.url);
console.log("imagen pre-actualizada");
},
complete: function (data) {
}
});
}
$("#btnGuardar").click(function (e) {
e.preventDefault();
if (imagenSubida == false && imagenTomada == false) {
writeMessage("Debe seleccionar o tomar una imagen!", "error");
return false;
}
if (typeof upload == "undefined") {
upload = new Upload(null);
}
upload.doUpload();
});
$("#imgInp").on("change", function (e) {
e.preventDefault();
if ($(this)[0].files.length != 0) {
var file = $(this)[0].files[0];
upload = new Upload(file);
console.log(upload)
imagenSubida = true;
} else
upload = new Upload(null);
});
function writeMessage(msg, type) {
if (type === "success") {
$("#error-content-nutrapharm").html("");
$("#error-nutrapharm").hide();
$("#exito-content-nutrapharm").html(msg);
$("#exito-nutrapharm").show();
} else {
$("#exito-content-nutrapharm").html("");
$("#exito-nutrapharm").hide();
$("#error-content-nutrapharm").html(msg);
$("#error-nutrapharm").show();
}
}
function generateUrlBackground(source, type) {
if (type == "url") {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.attr("src", img.src);
fotoActual.show();
} else {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.css("src", img.src.replace(/(\r\n|\n|\r)/gm, ""));
fotoActual.show();
}
}
window.onorientationchange = function () {
var orientation = window.orientation;
switch (orientation) {
case 0:
case 90:
case - 90:
console.log("modo horizontal");
//window.location.reload();
break;
}
};
</script>
{% extends 'producto_final/base_final.html.twig' %}
{% block stylesheets %}
<link rel="stylesheet" href="{{asset('manuel/css/camera.css')}}">
{% endblock %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionInicio}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm" />
<meta property="og:description" content="Producto Nutrapharm - Sacate una foto y compara en {{dias}} días!" />
<meta property="og:image:type" content="image/png"/>
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}imagenes/template/logo.png"/>
<script>
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id))
return;
js = d.createElement(s);
js.id = id;
js.src = "//connect.facebook.net/es_ES/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
<div class="header-top">
<img class="img-responsive" src="{{asset('manuel/images/header-i.jpg')}}" alt="INOVAGE Selfie Nutrapharm" />
</div>
{% endblock %}
{% block body %}
<div class="app-container">
<img class="img-responsive logo-app" src="{{asset('manuel/images/atrevete-desafio.png')}}" alt="Atrévete al desafío" />
{#CODIGO OCULTO#}
{{ include('producto_final/camera_logic.html.twig') }}
{#CODIGO OCULTO#}
<div class="botonera-fotos">
<div>
<button id="tomarFoto" name="tomarFoto" class="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button>
<label class=" control-label">Toma una foto con tu cámara aquí</label>
</div>
<div>
<button id="subirFoto" name="subirFoto" class="subirFoto" onclick="mostrarSubirFoto(event)">Subir Foto
</button>
<label class=" control-label">Sube una foto desde tu galería </br>o desde tu PC</label>
</div>
</div>
<div id="containerFormulario" class="container-form" style="display:none">
<div>
<p class="control-label b txt-center">Comenta tu foto al <strong>Inicio del tratamiento</strong></p>
<!-- <input id="comentarioFotoUsuario" class="barra-comentario" type="textarea" placeholder="Comentario..." /> -->
<textarea id="comentarioFotoUsuario" class="barra-comentario" name="mytextarea" placeholder="Escribe tu Comentario"></textarea>
</div>
<div class="grilla-datos">
<div>
<input id="nombreUsuario" class="nombre-e" type="text" placeholder="Ingresa tu nombre" />
</div>
<div>
<input id="mailUsuario" class="mail-e" type="text" placeholder="Ingresa tu email" />
</div>
</div>
{#MENSAJES EXITO ERROR#}
{{ include('producto_final/mensaje-exito-error.html.twig') }}
{#MENSAJES EXITO ERROR#}
<button id="btnGuardar" class="btn-guardar">Finalizar</button>
</div>
<div class="terminos-condiciones">
<a href="{{terminos_condiciones}}">Términos y Condiciones de <strong>NUTRAPHARM</strong></a>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script src="{{asset('frontend/js/capture-2.js')}}"></script>
<script>
var imagenSubida = false;
var imagenTomada = false;
var usuarioNutraPharm = "none";
var tipoUsuarioFormulario = 1;
var upload;
var preUpload;
</script>
<script>
var fileUpload = $("#imgInp");
function mostrarTomarFoto(event) {
event.preventDefault();
//var fotoActual = $("#tomarFotoContainer");
//fotoActual.css("background-image", "url('')");
$("#imagen_carga").attr('src', "");
console.log("mostrando tomar foto...");
$("#tomarFotoContainer").show();
$("#cameraContainer").show();
$("#startbutton").show();
$("#subirFotoContainer").hide();
$("#output_img_inovage").hide();
$("#imagenUsuario").attr('src', "");
$("#imagenUsuario").hide();
$("#imagen_carga").hide();
imagenTomada = true;
imagenSubida = false;
}
function mostrarSubirFoto(event) {
event.preventDefault();
openSeleccionadorArchivos(event);
console.log("mostrando subir foto...");
$("#imagen_carga").show();
$("#tomarFotoContainer").hide();
$("#cameraContainer").hide();
$("#startbutton").hide();
$('#imagen_carga').attr('src', {%if isMobile == 1 %} "{{asset('manuel/images/selfie-alto-630px.jpg')}}" {% else %} "{{asset('manuel/images/selfie-ancho-630px.jpg')}}" {% endif %});
//$("#subirFotoContainer").show();
$("#output_img_inovage").hide();
$("#tomarFoto").html("Toma una foto con tu cámara aquí");
imagenTomada = false;
imagenSubida = true;
}
function openSeleccionadorArchivos(event) {
event.preventDefault();
$("#imgInp").trigger("click");
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagenUsuario').attr('src', e.target.result);
$('#imagen_carga').attr('src', e.target.result);
//generateUrlBackground(e.target.result, "data");
//upload.doPreUpload();//por ahora asi
}
reader.readAsDataURL(input.files[0]); // convert to base64 string
//$('#imagenUsuario').show();
}
}
fileUpload.on('change', function () {
$("#containerFormulario").show();
$("#output_img_inovage").hide();
readURL(this);
});
var Upload = function (file) {
this.file = file;
};
Upload.prototype.getType = function () {
return this.file.type;
};
Upload.prototype.getSize = function () {
return this.file.size;
};
Upload.prototype.getName = function () {
if (this.file != null)
return this.file.name;
else
return "";
};
Upload.prototype.doUpload = function () {
var that = this;
var url = "{{ path('nutrapharm_upload') }}";
var formData = new FormData();
$("#btnGuardar").prop("disabled", true);
$("#btnGuardar").html("Procesando...");
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
formData.append("nombreUsuario", $("#nombreUsuario").val());
formData.append("mailUsuario", $("#mailUsuario").val());
formData.append("comentarioFotoUsuario", $("#comentarioFotoUsuario").val());
formData.append("tipoUsuarioFormulario", tipoUsuarioFormulario);
formData.append("usuarioNutraPharm", usuarioNutraPharm);
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
writeMessage(respuestaJson.msg, "error");
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
if (data.tipo === 2) {
tipoUsuarioFormulario = data.tipo;
usuarioNutraPharm = data.usuario;
}
writeMessage(data.msg, "success");
$("#btnGuardar").hide();
},
complete: function (data) {
$("#btnGuardar").prop("disabled", false);
$("#btnGuardar").html("Finalizar");
}
});
};
Upload.prototype.doPreUpload = function(){
var that = this;
var url = "{{ path('nutrapharm_pre_upload') }}";
var formData = new FormData();
var idTemp = Math.random()+Math.random();
if (imagenTomada == true && imagenSubida == false) {
formData.append("upload_file", 0);
formData.append("imagen", $("#photo").attr('src'));
} else if (imagenSubida == true && imagenTomada == false) {
formData.append("upload_file", 1);
}
formData.append("paso", "primer");
formData.append("id", idTemp);
console.log(this.file);
if (this.file != null) {
formData.append("imagen", this.file, this.getName());
}
$.ajax
({
type: "POST",
url: url,
data: formData,
async: true,
cache: false,
contentType: false,
processData: false,
timeout: 60000,
statusCode: {
400: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
}
},
success: function (data) {
$('#imagen_carga').attr('src', data.url);
console.log("imagen pre-actualizada");
},
complete: function (data) {
}
});
}
$("#btnGuardar").click(function (e) {
e.preventDefault();
if (imagenSubida == false && imagenTomada == false) {
writeMessage("Debe seleccionar o tomar una imagen!", "error");
return false;
}
if (typeof upload == "undefined") {
upload = new Upload(null);
}
upload.doUpload();
});
$("#imgInp").on("change", function (e) {
e.preventDefault();
if ($(this)[0].files.length != 0) {
var file = $(this)[0].files[0];
upload = new Upload(file);
console.log(upload)
imagenSubida = true;
} else
upload = new Upload(null);
});
function writeMessage(msg, type) {
if (type === "success") {
$("#error-content-nutrapharm").html("");
$("#error-nutrapharm").hide();
$("#exito-content-nutrapharm").html(msg);
$("#exito-nutrapharm").show();
} else {
$("#exito-content-nutrapharm").html("");
$("#exito-nutrapharm").hide();
$("#error-content-nutrapharm").html(msg);
$("#error-nutrapharm").show();
}
}
function generateUrlBackground(source, type) {
if (type == "url") {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.attr("src", img.src);
fotoActual.show();
} else {
var fotoActual = $("#imagen_carga");
var img = new Image();
img.src = source;
fotoActual.css("src", img.src.replace(/(\r\n|\n|\r)/gm, ""));
fotoActual.show();
}
}
window.onorientationchange = function () {
var orientation = window.orientation;
switch (orientation) {
case 0:
case 90:
case - 90:
console.log("modo horizontal");
//window.location.reload();
break;
}
};
</script>
{% endblock %}
\ No newline at end of file
<?php
namespace NutrapharmBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use AppBundle\Lib\Utiles;
use AppBundle\Lib\TiempoTranscurrido;
use AppBundle\Model\UsuarioNutrapharm;
use AppBundle\Model\UsuarioNutrapharmQuery;
use AppBundle\Model\EnvioCorreoUsuario;
use AppBundle\Model\EnvioCorreoUsuarioQuery;
class EnviarLinkCommand extends ContainerAwareCommand {
const ENVIO_NO_APLICA = 0;
const ENVIO_NUEVO = 1;
const ENVIO_ACTUALIZAR = 2;
protected function configure() {
$this
->setName('enviar-link')
->setDescription('command que envia correo a los usuarios en los cuales haya transcurrido 30 dias')
;
}
protected function execute(InputInterface $input, OutputInterface $output) {
$log = Utiles::setLog('EnviarLinkCommand:enviar-link', 'command/enviar-link');
$log->debug('**************************INICIO***************************************');
$tt = new TiempoTranscurrido();
$diasComparacion = Utiles::getParametroConfiguracion("dias_comparacion");
$fechaActual = new \DateTime();
$dataMail = [];
$log->debug("=======Fecha Actual : " . $fechaActual->format("Y-m-d H:i:s"));
$log->debug("=======Dias a considerar : " . $diasComparacion);
$email_soporte = Utiles::getParametroConfiguracion("mail_soporte");
$usuarios = UsuarioNutrapharmQuery::create()->filterByUnuEliminado(UsuarioNutrapharm::ELIMINADO_FALSE)->find();
foreach ($usuarios as $usuario):
$enviarCorreo = $this->chequearFechaEnviarCorreo($fechaActual, $usuario->getCreatedAt(), $usuario->getUnuId(), $diasComparacion);
$log->debug("respuesta enviar correo a usuario ".$usuario->getUnuId()." : $enviarCorreo");
if ($enviarCorreo == self::ENVIO_NUEVO):
$log->debug("enviando correo a ".$usuario->getUnuCorreo());
$correo = \Swift_Message::newInstance()
->setSubject(str_replace("#USUARIO", $usuario->getUnuNombre(), Utiles::getParametroConfiguracion("subject_mail_producto")))
->setFrom($email_soporte)
->setTo($usuario->getUnuCorreo());
$dataMail["id_usuario"] = $usuario->getUnuIdNutrapharm();
$dataMail["url_sitio"] = Utiles::getParametroConfiguracion("url_sitio");
$dataMail["seccion"] = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$correo->setBody(
$this->getContainer()->get('templating')->render(
'email/aviso-mail-comparacion.html.twig', $dataMail
), 'text/html');
if ($this->getContainer()->get('mailer')->send($correo)){
$log->info('mensaje enviado correctamente a :' . $usuario->getUnuCorreo());
$traza = new EnvioCorreoUsuario();
$traza->setUsuarioNutrapharm($usuario);
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_ENVIADO);
$traza->save();
$log->debug("se creo una traza de envio correo asociada a :". $usuario->getUnuId());
}else{
$log->info('no se pudo enviar mensaje a:' . $usuario->getUnuCorreo());
$traza = new EnvioCorreoUsuario();
$traza->setUsuarioNutrapharm($usuario);
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_PENDIENTE);
$traza->save();
}
endif;
if($enviarCorreo == self::ENVIO_ACTUALIZAR):
$log->debug("re-intentando envio correo a ".$usuario->getUnuCorreo());
$correo = \Swift_Message::newInstance()
->setSubject(str_replace("#USUARIO", $usuario->getUnuNombre(), Utiles::getParametroConfiguracion("subject_mail_producto")))
->setFrom($email_soporte)
->setTo($usuario->getUnuCorreo());
$dataMail["dias"] = $diasComparacion;
$dataMail["nombre_usuario"] = $usuario->getUnuNombre();
$dataMail["id_usuario"] = $usuario->getUnuIdNutrapharm();
$dataMail["url_sitio"] = Utiles::getParametroConfiguracion("url_sitio");
$dataMail["seccion"] = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$correo->setBody(
$this->getContainer()->get('templating')->render(
'email/aviso-mail-comparacion.html.twig', $dataMail
), 'text/html');
if ($this->getContainer()->get('mailer')->send($correo)){
$log->info('mensaje re-enviado correctamente a :' . $usuario->getUnuCorreo());
$traza = EnvioCorreoUsuarioQuery::obtenerTraza($usuario->getUnuId());
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_ENVIADO);
$traza->save();
$log->debug("se actualizao la traza de envio correo asociada a :". $usuario->getUnuId());
}else{
$log->info('no se pudo re-enviar mensaje a:' . $usuario->getUnuCorreo().", se mantiene en estado pendiente...");
}
endif;
endforeach;
$output->writeln('Command ejecutado.');
$log->debug(' ');
$log->debug('*****************Fin | TIEMPO: ' . $tt->getTiempoTranscurrido() . ' Seg. ******************');
}
private function chequearFechaEnviarCorreo($fechaActual, $fechaUsuario, $id, $dias) {
$diferencia = $fechaUsuario->diff($fechaActual);
if ($diferencia->d >= $dias) {
$poseeTraza = EnvioCorreoUsuarioQuery::poseeTrazaEnvio($id);
if ($poseeTraza >= 1) {
$traza = EnvioCorreoUsuarioQuery::obtenerTraza($id);
if ($traza->getEcuEstado() == EnvioCorreoUsuario::ESTADO_PENDIENTE) {
return self::ENVIO_ACTUALIZAR;
} else if ($traza->getEcuEstado() == EnvioCorreoUsuario::ESTADO_ENVIADO) {
return self::ENVIO_NO_APLICA;
}
} else {
return self::ENVIO_NUEVO;
}
}
return self::ENVIO_NO_APLICA;
}
}
<?php
namespace NutrapharmBundle\Command;
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
use AppBundle\Lib\Utiles;
use AppBundle\Lib\TiempoTranscurrido;
use AppBundle\Model\UsuarioNutrapharm;
use AppBundle\Model\UsuarioNutrapharmQuery;
use AppBundle\Model\EnvioCorreoUsuario;
use AppBundle\Model\EnvioCorreoUsuarioQuery;
class EnviarLinkCommand extends ContainerAwareCommand {
const ENVIO_NO_APLICA = 0;
const ENVIO_NUEVO = 1;
const ENVIO_ACTUALIZAR = 2;
protected function configure() {
$this
->setName('enviar-link')
->setDescription('command que envia correo a los usuarios en los cuales haya transcurrido 30 dias')
;
}
protected function execute(InputInterface $input, OutputInterface $output) {
$log = Utiles::setLog('EnviarLinkCommand:enviar-link', 'command/enviar-link');
$log->debug('**************************INICIO***************************************');
$tt = new TiempoTranscurrido();
$diasComparacion = Utiles::getParametroConfiguracion("dias_comparacion");
$fechaActual = new \DateTime();
$dataMail = [];
$log->debug("=======Fecha Actual : " . $fechaActual->format("Y-m-d H:i:s"));
$log->debug("=======Dias a considerar : " . $diasComparacion);
$email_soporte = Utiles::getParametroConfiguracion("mail_soporte");
$usuarios = UsuarioNutrapharmQuery::create()->filterByUnuEliminado(UsuarioNutrapharm::ELIMINADO_FALSE)->find();
foreach ($usuarios as $usuario):
$enviarCorreo = $this->chequearFechaEnviarCorreo($fechaActual, $usuario->getCreatedAt(), $usuario->getUnuId(), $diasComparacion);
$log->debug("respuesta enviar correo a usuario ".$usuario->getUnuId()." : $enviarCorreo");
if ($enviarCorreo == self::ENVIO_NUEVO):
$log->debug("enviando correo a ".$usuario->getUnuCorreo());
$correo = \Swift_Message::newInstance()
->setSubject(str_replace("#USUARIO", $usuario->getUnuNombre(), Utiles::getParametroConfiguracion("subject_mail_producto")))
->setFrom($email_soporte)
->setTo($usuario->getUnuCorreo());
$dataMail["id_usuario"] = $usuario->getUnuIdNutrapharm();
$dataMail["url_sitio"] = Utiles::getParametroConfiguracion("url_sitio");
$dataMail["seccion"] = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$dataMail["dias"] = Utiles::getParametroConfiguracion("dias_comparacion");
$correo->setBody(
$this->getContainer()->get('templating')->render(
'email/aviso-mail-comparacion.html.twig', $dataMail
), 'text/html');
if ($this->getContainer()->get('mailer')->send($correo)){
$log->info('mensaje enviado correctamente a :' . $usuario->getUnuCorreo());
$traza = new EnvioCorreoUsuario();
$traza->setUsuarioNutrapharm($usuario);
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_ENVIADO);
$traza->save();
$log->debug("se creo una traza de envio correo asociada a :". $usuario->getUnuId());
}else{
$log->info('no se pudo enviar mensaje a:' . $usuario->getUnuCorreo());
$traza = new EnvioCorreoUsuario();
$traza->setUsuarioNutrapharm($usuario);
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_PENDIENTE);
$traza->save();
}
endif;
if($enviarCorreo == self::ENVIO_ACTUALIZAR):
$log->debug("re-intentando envio correo a ".$usuario->getUnuCorreo());
$correo = \Swift_Message::newInstance()
->setSubject(str_replace("#USUARIO", $usuario->getUnuNombre(), Utiles::getParametroConfiguracion("subject_mail_producto")))
->setFrom($email_soporte)
->setTo($usuario->getUnuCorreo());
$dataMail["dias"] = $diasComparacion;
$dataMail["nombre_usuario"] = $usuario->getUnuNombre();
$dataMail["id_usuario"] = $usuario->getUnuIdNutrapharm();
$dataMail["url_sitio"] = Utiles::getParametroConfiguracion("url_sitio");
$dataMail["seccion"] = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$correo->setBody(
$this->getContainer()->get('templating')->render(
'email/aviso-mail-comparacion.html.twig', $dataMail
), 'text/html');
if ($this->getContainer()->get('mailer')->send($correo)){
$log->info('mensaje re-enviado correctamente a :' . $usuario->getUnuCorreo());
$traza = EnvioCorreoUsuarioQuery::obtenerTraza($usuario->getUnuId());
$traza->setEcuEstado(EnvioCorreoUsuario::ESTADO_ENVIADO);
$traza->save();
$log->debug("se actualizao la traza de envio correo asociada a :". $usuario->getUnuId());
}else{
$log->info('no se pudo re-enviar mensaje a:' . $usuario->getUnuCorreo().", se mantiene en estado pendiente...");
}
endif;
endforeach;
$output->writeln('Command ejecutado.');
$log->debug(' ');
$log->debug('*****************Fin | TIEMPO: ' . $tt->getTiempoTranscurrido() . ' Seg. ******************');
}
private function chequearFechaEnviarCorreo($fechaActual, $fechaUsuario, $id, $dias) {
$diferencia = $fechaUsuario->diff($fechaActual);
if ($diferencia->d >= $dias) {
$poseeTraza = EnvioCorreoUsuarioQuery::poseeTrazaEnvio($id);
if ($poseeTraza >= 1) {
$traza = EnvioCorreoUsuarioQuery::obtenerTraza($id);
if ($traza->getEcuEstado() == EnvioCorreoUsuario::ESTADO_PENDIENTE) {
return self::ENVIO_ACTUALIZAR;
} else if ($traza->getEcuEstado() == EnvioCorreoUsuario::ESTADO_ENVIADO) {
return self::ENVIO_NO_APLICA;
}
} else {
return self::ENVIO_NUEVO;
}
}
return self::ENVIO_NO_APLICA;
}
}
<?php
namespace NutrapharmBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Lib\Utiles;
use Treinetic\ImageArtist\lib\Overlays\Overlay;
use Treinetic\ImageArtist\lib\Text\Color;
use Treinetic\ImageArtist\lib\Shapes\PolygonShape;
use Treinetic\ImageArtist\lib\Commons\Node;
use Treinetic\ImageArtist\lib\Image;
use Treinetic\ImageArtist\lib\Shapes\Square;
use AppBundle\Model\UsuarioNutrapharm;
use AppBundle\Model\UsuarioNutrapharmQuery;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\StreamedResponse;
class DefaultController extends Controller {
public function inicioAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$dias = Utiles::getParametroConfiguracion("dias_comparacion");
$isMobile = Utiles::isMobile($request);
$log->debug("Es Movil : $isMobile");
return $this->render('producto_final/landing_producto.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "dias" => $dias, "isMobile" => $isMobile));
}
public function subirCambioAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:subirCambioAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$id = $request->get("idp", null);
$seccionGenerarCambios = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$seccionComparacion = Utiles::getParametroConfiguracion("seccion_landing_comparacion");
$log->debug("buscando usuario en base a id : $id");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($id);
if(!$usuario){
$log->err('el usuario no existe..');
$this->get('session')->getFlashBag()->add(
'error', 'Ha ocurrido un error. con su solicitud. Contactese con el soporte de la página.'
);
return $this->redirectToRoute('nutrapharm_error');
}
$ext = $usuario->getUnuExtInicial();
return $this->render('producto_final/landing_producto_generar_comparacion.html.twig', array("idp" => $id, "extInicial" => $ext,"seccionGenerarCambios" => $seccionGenerarCambios ,"seccionComparacion" => $seccionComparacion, "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId));
}
public function comparacionAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:comparacionAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$id = $request->get("idp", null);
$seccionComparacion = Utiles::getParametroConfiguracion("seccion_landing_comparacion");
$seccionInicial = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$log->debug("buscando usuario en base a id : $id");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($id);
$us = $request->get("us",1);
if(!$usuario){
$log->err('el usuario no existe..');
$this->get('session')->getFlashBag()->add(
'error', 'Ha ocurrido un error. con su solicitud. Contactese con el soporte de la página.'
);
return $this->redirectToRoute('nutrapharm_error');
}
$comentarioFinal = $usuario->getUnuComentarioFinal();
$ext = $usuario->getUnuExtComparacion();
return $this->render('producto_final/landing_comparacion_cambios.html.twig', array("idp" => $id, "extComparacion" => $ext ,"seccionComparacion" => $seccionComparacion, "seccionInicial" => $seccionInicial, "comentarioFinal" => $comentarioFinal , "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "us"=>$us));
}
public function errorAction(Request $request){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de error... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$seccionError = Utiles::getParametroConfiguracion("seccion_error");
return $this->render('producto/landing_error.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "seccionError" => $seccionError));
}
public function preUploadAction(Request $request){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:preUploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$uploadFile = $request->get("upload_file", 0);
$idNutrapharm = $request->get("id", null);
$paso = $request->get("paso",null);
$uploadDir = $this->getParameter('upload_dir');
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua| UPLOAD FILE : $uploadFile....");
if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen');
if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
} else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null);
}
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm ."temp_$paso". "." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
$filename = $idNutrapharm ."temp_$paso". "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
}
$log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename");
$url = Utiles::getParametroConfiguracion("ruta_archivos_url");
$log->debug("Retornando Respuesta a Usuario | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("id" => $idNutrapharm ,"url" => $url."".$filename), Response::HTTP_OK, ['content-type' => 'application/json']);
}
public function uploadAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$tipo = $request->get("tipoUsuarioFormulario", null);
if($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL || $tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA){
$nombre = $request->get("nombreUsuario", null);
$correo = strtolower($request->get("mailUsuario", null));
}else{
$nombre = "Dummy";
$correo = "no@mail.cl";
}
$comentario = $request->get("comentarioFotoUsuario", null);
$idUsuarioNutraPharm = $request->get("usuarioNutraPharm", null);
$uploadFile = $request->get("upload_file", 0);
$log->debug("Paràmetros de entrada Guardado o Actualizacion Subida Archivo : $uploadFile | Tipo Guardado : $tipo | Nombre : $nombre | Correo : $correo | Comentario = $comentario | Usuario : $idUsuarioNutraPharm....");
//VERIFICAR DATOS DE ENTRADA
/* Verificacion Mail */
if($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL){
if(UsuarioNutrapharmQuery::correoRegistrado($correo)){
$log->debug("El correo $correo ingresado ya se encuentra registrado en el sistema...");
return new JsonResponse(array("msg" => "El correo ingresado ya se ha registrado en el sistema!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
}else if($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA){
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne() ;
$correoActual = $usuario->getUnuCorreo();
if($correoActual != $correo && UsuarioNutrapharmQuery::correoRegistrado($correo)){
$log->debug("El correo $correo ingresado ya se encuentra registrado en el sistema...");
return new JsonResponse(array("msg" => "El correo ingresado ya se ha registrado en el sistema!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
}
if (!Utiles::validarCorreo($correo)) {
$log->debug("El correo no es válido o no posee un formato correcto...");
return new JsonResponse(array("msg" => "El correo ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
/* Vrificacion String Nombre */
if ($nombre == "" || $nombre == null) {
$log->debug("El nombre ingresado no es válido...");
return new JsonResponse(array("msg" => "Nombre ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
/* Verificacion String Comentarios */
if ($comentario == "" || $comentario == null) {
$log->debug("El comentario ingresado no es válido...");
return new JsonResponse(array("msg" => "El comentario ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen');
if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
} else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null);
}
$log->debug("Iniciando analisis de datos...");
if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL) { //Usuario Nuevo
$log->debug("Iniciando Creacion de Usuario Nuevo...");
$usuarioNutraPharm = new UsuarioNutrapharm();
$usuarioNutraPharm->setUnuNombre($nombre);
$usuarioNutraPharm->setUnuCorreo($correo);
$usuarioNutraPharm->setUnuComentarioInicial($comentario);
$usuarioNutraPharm->setUnuUa($ua);
$usuarioNutraPharm->setUnuIp($ip);
$usuarioNutraPharm->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_INICIAL);
$usuarioNutraPharm->setUnuEliminado(UsuarioNutrapharm::ELIMINADO_FALSE);
$usuarioNutraPharm->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuarioNutraPharm->getUnuCorreo())[0] . $usuarioNutraPharm->getUnuId();
$usuarioNutraPharm->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuarioNutraPharm->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension());
$usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
//$filename_temp = $idNutrapharm . "_temp." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename);
//$file->move($uploadDir, $filename_temp);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
$usuarioNutraPharm->setUnuExtInicial($data[1]);
$usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $data[1];
//$filename_temp = $idNutrapharm . "_temp." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
//$fpc_temp = file_put_contents("$uploadDir/$filename_temp", $data[0]);
}
$log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename");
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idNutrapharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito! \n En 30 días más recibiras un correo para poder comparar tus cambios. ", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) {
//Actualizar informacion ya existente
$log->debug("Iniciando Actualizacion de Usuario $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuNombre($nombre);
$usuario->setUnuCorreo($correo);
$usuario->setUnuComentarioInicial($comentario);
$usuario->setUnuUa($ua);
$usuario->setUnuIp($ip);
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA);
$usuario->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId();
$usuario->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuario->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
$usuario->setUnuExtInicial($file->getClientOriginalExtension());
$usuario->save();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
if ($data == -1) {
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtInicial($data[1]);
$usuario->save();
$filename = $idNutrapharm . "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
$log->debug("escalando imagen en actualizacion...");
$this->scaleAndCrop("$uploadDir/$filename");
}
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La información se ha actualizado!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} elseif ($tipo == UsuarioNutrapharm::ESTADO_FOTO_FINAL && $idUsuarioNutraPharm != null) {
$log->debug("Iniciando Actualizacion Final de Usuario $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuComentarioFinal($comentario);
$usuario->setUnuUa($ua);
$usuario->setUnuIp($ip);
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_FINAL);
$usuario->setUnuCompartidoFacebook(0);
$usuario->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId();
$usuario->setUnuPathFotoFinal($uploadDir . '/' . $idNutrapharm . "_final");
$log->debug("Iniciando generación de archivo final asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "_final." . $file->getClientOriginalExtension();
$usuario->setUnuExtFinal($file->getClientOriginalExtension());
$usuario->save();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
if ($data == -1) {
$log->debug("No se pudo procesar la imagen tomada por el usuario...");
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtFinal($data[1]);
$usuario->save();
$filename = $idNutrapharm . "_final." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
}
$log->debug("escalando imagen en actualizacion final...");
$this->scaleAndCrop("$uploadDir/$filename");
$log->debug("Iniciando union de fotos subidas por el usuario $idUsuarioNutraPharm...");
$this->merge($usuario->getUnuPathFotoInicial() . "." . $usuario->getUnuExtInicial(), $usuario->getUnuExtInicial(), $uploadDir . '/' . $filename, $usuario->getUnuExtFinal(), $uploadDir . '/' . $idNutrapharm . "_comparacion.png");
$usuario->setUnuFotoComparacion($uploadDir . '/' . $idNutrapharm . "_comparacion");
$usuario->setUnuExtComparacion("png");
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "Se ha generado la comparación, compartelo en las redes sociales!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
}
}
public function registrarEnFacebookAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:registrarEnFacebookAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando a registrar compartir facebook ... IP : $ip | UA : $ua....");
$idUsuarioNutraPharm = $request->get("idUsuarioNutrapharm", null);
$log->debug("Usuario NutraPharm entrante : $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($idUsuarioNutraPharm);
if (!$usuario) {
$log->debug("id de usuario $idUsuarioNutraPharm no ecnontrado");
return new JsonResponse(array("msg" => "Ha ocurrido un error, el usuario no se encontró", "usuario" => $idUsuarioNutraPharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$log->debug("se ha actualizado el estado de compartir en facebook para el usuario $idUsuarioNutraPharm...");
return new JsonResponse(array("msg" => "Se registro el compartir mensaje de facebook"), Response::HTTP_OK, ['content-type' => 'application/json']);
}
protected function scaleAndCrop($filename){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:scaleAndCrop', 'nutrapharm/index');
$rutaFotos = Utiles::getParametroConfiguracion('ruta_base_servidor_fotos');
$arrayDimension = $this->dimensionImage($filename);
$arrayOuput = array();
$arrayOuputCrop = array();
$stringSalida = "";
$stringSalidaCrop = "";
$argument = "";
$argumentCrop = "";
$esVertical = 0;
$esHorizontal = 0;
$parameterWidth = Utiles::getParametroConfiguracion("scale_width");
$parameterHeight = Utiles::getParametroConfiguracion("scale_height");
$coordenada = NULL;
$filename = $rutaFotos.str_replace('../',"", $filename);
$log->debug("Archivo Entrante : $filename");
$log->debug("Ancho Imagen ".$arrayDimension["width"]." | Largo Imagen ".$arrayDimension["height"]);
//Escalado
if($arrayDimension["width"] > $arrayDimension["height"]){
$log->debug("Foto Horizontal Ancho > Largo");
$argument = "-y -i $filename -vf scale=-1:$parameterHeight $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esHorizontal = 1;
}else if($arrayDimension["width"] < $arrayDimension["height"]){
$log->debug("Foto Vertical Largo > Ancho");
$argument = "-y -i $filename -vf scale=$parameterWidth:-1 $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esVertical = 1;
}else if($arrayDimension["width"] == $arrayDimension["height"]){
$log->debug("Foto Perfecta Ancho = Largo");
$argument = "-y -i $filename -vf scale=-1:$parameterHeight $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esHorizontal = 1;
}
//Variable a buscar de la nueva imagen escalada
$arrayDimensionScaled = $this->dimensionImage($filename);
$log->debug("Ancho Imagen Escalada ".$arrayDimensionScaled["width"]." | Largo Imagen Escalada ".$arrayDimensionScaled["height"]);
if($esHorizontal == 1 && $esVertical == 0){
$coordenada = ($arrayDimensionScaled["width"] - $parameterHeight) / 2;
$log->debug("Coordenada Calculada Horizontal : $coordenada");
}else if($esHorizontal == 0 && $esVertical == 1){
$coordenada = ($arrayDimensionScaled["height"] - $parameterWidth) / 2;
$log->debug("Coordenada Calculada Vertical : $coordenada");
}
//Cortado
if($esHorizontal == 1 && $esVertical == 0){
$log->debug("Cortando horizontalmente en coordenada : $coordenada,0");
$argumentCrop = "-y -i $filename -vf crop=$parameterWidth:$parameterHeight:$coordenada:0 $filename";
$log->debug("Comando a ejecutar : ffmpeg $argumentCrop ");
exec("ffmpeg $argumentCrop ", $arrayOuputCrop, $stringSalidaCrop);
$log->debug("Codigo Salida : $stringSalidaCrop");
}else if($esHorizontal == 0 && $esVertical == 1){
$log->debug("Cortando verticalmente en coordenada :0,$coordenada");
$argumentCrop = "-y -i $filename -vf crop=$parameterWidth:$parameterHeight:0:$coordenada $filename";
$log->debug("Comando a ejecutar : ffmpeg $argumentCrop ");
exec("ffmpeg $argumentCrop ", $arrayOuputCrop, $stringSalidaCrop);
$log->debug("Codigo Salida : $stringSalidaCrop");
}
$log->debug("Terminando proceso de escalado y cortado $filename...");
}
protected function dimensionImage($filename){
list($width, $height) = getimagesize($filename);
return array("width" => $width, "height" =>$height);
}
protected function merge($filename_x, $fileType_x, $filename_y, $fileType_y, $filename_result) {
if (file_exists($filename_result)) {
imagedestroy($filename_result);
}
// Get dimensions for specified images
list($width_x, $height_x) = getimagesize($filename_x);
list($width_y, $height_y) = getimagesize($filename_y);
// Create new image with desired dimensions
$image = imagecreatetruecolor($width_x + $width_y, $height_x);
// Load images and then copy to destination image
if ($fileType_x == "png" || $fileType_x == "PNG") {
$image_x = imagecreatefrompng($filename_x);
} elseif ($fileType_x == "jpeg" || $fileType_x == "JPEG") {
$image_x = imagecreatefromjpeg($filename_x);
}else{
$image_x = imagecreate($filename_x);
}
// Load images and then copy to destination image
if ($fileType_y == "png" || $fileType_y == "PNG") {
$image_y = imagecreatefrompng($filename_y);
} elseif ($fileType_y == "jpeg" || $fileType_y == "JPEG") {
$image_y = imagecreatefromjpeg($filename_y);
}
imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y);
// Save the resulting image to disk (as JPEG)
imagepng($image, $filename_result);
// Clean up
imagedestroy($image);
imagedestroy($image_x);
imagedestroy($image_y);
}
public function downloadAction(Request $request) {
$file_name = $request->get("file_name", null);
$base_path = $this->getParameter('upload_dir');
$full_path = $base_path . '/' . $file_name;
$fs = new Filesystem();
if (!$fs->exists($full_path)) {
throw $this->createNotFoundException();
}
$file_name = basename($full_path);
$mime_type = $this->getMimeType($full_path);
$file = readfile($full_path);
$headers = array(
'Content-Type' => $mime_type,
'Content-Disposition' => 'inline; filename="' . $file_name . '"');
return new Response($file, 200, $headers);
}
protected function getBase64Image($data) {
if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1);
$type = strtolower($type[1]); // jpg, png, gif
if (!in_array($type, ['jpg', 'jpeg', 'gif', 'png'])) {
//throw new \Exception('invalid image type');
return -1;
}
$data = base64_decode($data);
if ($data === false) {
//throw new \Exception('base64_decode failed');
return -1;
}
} else {
//throw new \Exception('did not match data URI with image data');
return -1;
}
//file_put_contents("img.{$type}", $data);
return array($data, $type);
}
protected function getMimeType($file) {
if ('jpg' === substr($file, -3)) {
$best_guess = 'jpeg';
} else {
$guesser = MimeTypeGuesser::getInstance();
$best_guess = $guesser->guess($file);
}
return $best_guess;
}
}
<?php
namespace NutrapharmBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Lib\Utiles;
use Treinetic\ImageArtist\lib\Overlays\Overlay;
use Treinetic\ImageArtist\lib\Text\Color;
use Treinetic\ImageArtist\lib\Shapes\PolygonShape;
use Treinetic\ImageArtist\lib\Commons\Node;
use Treinetic\ImageArtist\lib\Image;
use Treinetic\ImageArtist\lib\Shapes\Square;
use AppBundle\Model\UsuarioNutrapharm;
use AppBundle\Model\UsuarioNutrapharmQuery;
use Symfony\Component\Filesystem\Filesystem;
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesser;
use Symfony\Component\HttpFoundation\File\File;
use Symfony\Component\HttpFoundation\StreamedResponse;
class DefaultController extends Controller {
public function inicioAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$dias = Utiles::getParametroConfiguracion("dias_comparacion");
$terminosCondiciones = Utiles::getParametroConfiguracion("terminos_condiciones");
$isMobile = Utiles::isMobile($request);
$log->debug("Es Movil : $isMobile");
return $this->render('producto_final/landing_producto.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "dias" => $dias, "isMobile" => $isMobile, "terminos_condiciones" => $terminosCondiciones));
}
public function subirCambioAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:subirCambioAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$id = $request->get("idp", null);
$seccionGenerarCambios = Utiles::getParametroConfiguracion("seccion_formulario_comparacion");
$seccionComparacion = Utiles::getParametroConfiguracion("seccion_landing_comparacion");
$log->debug("buscando usuario en base a id : $id");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($id);
if(!$usuario){
$log->err('el usuario no existe..');
$this->get('session')->getFlashBag()->add(
'error', 'Ha ocurrido un error. con su solicitud. Contactese con el soporte de la página.'
);
return $this->redirectToRoute('nutrapharm_error');
}
$ext = $usuario->getUnuExtInicial();
return $this->render('producto_final/landing_producto_generar_comparacion.html.twig', array("idp" => $id, "extInicial" => $ext,"seccionGenerarCambios" => $seccionGenerarCambios ,"seccionComparacion" => $seccionComparacion, "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId));
}
public function comparacionAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:comparacionAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$id = $request->get("idp", null);
$seccionComparacion = Utiles::getParametroConfiguracion("seccion_landing_comparacion");
$seccionInicial = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$log->debug("buscando usuario en base a id : $id");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($id);
$us = $request->get("us",1);
if(!$usuario){
$log->err('el usuario no existe..');
$this->get('session')->getFlashBag()->add(
'error', 'Ha ocurrido un error. con su solicitud. Contactese con el soporte de la página.'
);
return $this->redirectToRoute('nutrapharm_error');
}
$comentarioFinal = $usuario->getUnuComentarioFinal();
$ext = $usuario->getUnuExtComparacion();
return $this->render('producto_final/landing_comparacion_cambios.html.twig', array("idp" => $id, "extComparacion" => $ext ,"seccionComparacion" => $seccionComparacion, "seccionInicial" => $seccionInicial, "comentarioFinal" => $comentarioFinal , "urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "us"=>$us));
}
public function errorAction(Request $request){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:indexAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de error... IP : $ip | UA : $ua....");
$facebookAppId = Utiles::getParametroConfiguracion("facebook_app_id");
$seccionInicio = Utiles::getParametroConfiguracion("seccion_formulario_inicial");
$seccionError = Utiles::getParametroConfiguracion("seccion_error");
return $this->render('producto/landing_error.html.twig', array("urlSitio" => Utiles::getParametroConfiguracion("url_sitio"), "facebookAppId" => $facebookAppId, "seccionInicio" => $seccionInicio, "seccionError" => $seccionError));
}
public function preUploadAction(Request $request){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:preUploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$uploadFile = $request->get("upload_file", 0);
$idNutrapharm = $request->get("id", null);
$paso = $request->get("paso",null);
$uploadDir = $this->getParameter('upload_dir');
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua| UPLOAD FILE : $uploadFile....");
if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen');
if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
} else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null);
}
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm ."temp_$paso". "." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
$filename = $idNutrapharm ."temp_$paso". "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
}
$log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename");
$url = Utiles::getParametroConfiguracion("ruta_archivos_url");
$log->debug("Retornando Respuesta a Usuario | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("id" => $idNutrapharm ,"url" => $url."".$filename), Response::HTTP_OK, ['content-type' => 'application/json']);
}
public function uploadAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:uploadAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando al landing de Nutrapharm... IP : $ip | UA : $ua....");
$tipo = $request->get("tipoUsuarioFormulario", null);
if($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL || $tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA){
$nombre = $request->get("nombreUsuario", null);
$correo = strtolower($request->get("mailUsuario", null));
}else{
$nombre = "Dummy";
$correo = "no@mail.cl";
}
$comentario = $request->get("comentarioFotoUsuario", null);
$idUsuarioNutraPharm = $request->get("usuarioNutraPharm", null);
$uploadFile = $request->get("upload_file", 0);
$log->debug("Paràmetros de entrada Guardado o Actualizacion Subida Archivo : $uploadFile | Tipo Guardado : $tipo | Nombre : $nombre | Correo : $correo | Comentario = $comentario | Usuario : $idUsuarioNutraPharm....");
//VERIFICAR DATOS DE ENTRADA
/* Verificacion Mail */
if($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL){
if(UsuarioNutrapharmQuery::correoRegistrado($correo)){
$log->debug("El correo $correo ingresado ya se encuentra registrado en el sistema...");
return new JsonResponse(array("msg" => "El correo ingresado ya se ha registrado en el sistema!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
}else if($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA){
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne() ;
$correoActual = $usuario->getUnuCorreo();
if($correoActual != $correo && UsuarioNutrapharmQuery::correoRegistrado($correo)){
$log->debug("El correo $correo ingresado ya se encuentra registrado en el sistema...");
return new JsonResponse(array("msg" => "El correo ingresado ya se ha registrado en el sistema!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
}
if (!Utiles::validarCorreo($correo)) {
$log->debug("El correo no es válido o no posee un formato correcto...");
return new JsonResponse(array("msg" => "El correo ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
/* Vrificacion String Nombre */
if ($nombre == "" || $nombre == null) {
$log->debug("El nombre ingresado no es válido...");
return new JsonResponse(array("msg" => "Nombre ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
/* Verificacion String Comentarios */
if ($comentario == "" || $comentario == null) {
$log->debug("El comentario ingresado no es válido...");
return new JsonResponse(array("msg" => "El comentario ingresado no es válido!"), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
if ($uploadFile == 1) {//foto subida
$log->debug("Creando variable de archivo...");
$file = $request->files->get('imagen');
if (empty($file)) {
$log->debug("No se subio un archivo de imagen válido...");
return new JsonResponse(array("msg" => "No se subio una imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_INICIAL), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
} else {//foto tomada
$log->debug("Creando variable de archivo en base a foto tomada por el usuario...");
$file = $request->get("imagen", null);
}
$log->debug("Iniciando analisis de datos...");
if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_INICIAL) { //Usuario Nuevo
$log->debug("Iniciando Creacion de Usuario Nuevo...");
$usuarioNutraPharm = new UsuarioNutrapharm();
$usuarioNutraPharm->setUnuNombre($nombre);
$usuarioNutraPharm->setUnuCorreo($correo);
$usuarioNutraPharm->setUnuComentarioInicial($comentario);
$usuarioNutraPharm->setUnuUa($ua);
$usuarioNutraPharm->setUnuIp($ip);
$usuarioNutraPharm->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_INICIAL);
$usuarioNutraPharm->setUnuEliminado(UsuarioNutrapharm::ELIMINADO_FALSE);
$usuarioNutraPharm->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuarioNutraPharm->getUnuCorreo())[0] . $usuarioNutraPharm->getUnuId();
$usuarioNutraPharm->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuarioNutraPharm->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado al nuevo usuario...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$usuarioNutraPharm->setUnuExtInicial($file->getClientOriginalExtension());
$usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
//$filename_temp = $idNutrapharm . "_temp." . $file->getClientOriginalExtension();
$file->move($uploadDir, $filename);
//$file->move($uploadDir, $filename_temp);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
$usuarioNutraPharm->setUnuExtInicial($data[1]);
$usuarioNutraPharm->save();
$filename = $idNutrapharm . "." . $data[1];
//$filename_temp = $idNutrapharm . "_temp." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
//$fpc_temp = file_put_contents("$uploadDir/$filename_temp", $data[0]);
}
$log->debug("escalando imagen en registro nuevo...");
$this->scaleAndCrop("$uploadDir/$filename");
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idNutrapharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La informacion ha sido ingresada con exito! \n En 30 días más recibiras un correo para poder comparar tus cambios. ", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} else if ($tipo == UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA && $idUsuarioNutraPharm != null) {
//Actualizar informacion ya existente
$log->debug("Iniciando Actualizacion de Usuario $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuNombre($nombre);
$usuario->setUnuCorreo($correo);
$usuario->setUnuComentarioInicial($comentario);
$usuario->setUnuUa($ua);
$usuario->setUnuIp($ip);
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA);
$usuario->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId();
$usuario->setUnuPathFotoInicial($uploadDir . '/' . $idNutrapharm);
$usuario->setUnuIdNutrapharm($idNutrapharm);
$log->debug("Iniciando generación de archivo asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "." . $file->getClientOriginalExtension();
$usuario->setUnuExtInicial($file->getClientOriginalExtension());
$usuario->save();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
if ($data == -1) {
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtInicial($data[1]);
$usuario->save();
$filename = $idNutrapharm . "." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
$log->debug("escalando imagen en actualizacion...");
$this->scaleAndCrop("$uploadDir/$filename");
}
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "La información se ha actualizado!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_ACTUALIZADA, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
} elseif ($tipo == UsuarioNutrapharm::ESTADO_FOTO_FINAL && $idUsuarioNutraPharm != null) {
$log->debug("Iniciando Actualizacion Final de Usuario $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::create()->filterByUnuIdNutrapharm($idUsuarioNutraPharm)->findOne();
$usuario->setUnuComentarioFinal($comentario);
$usuario->setUnuUa($ua);
$usuario->setUnuIp($ip);
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_FINAL);
$usuario->setUnuCompartidoFacebook(0);
$usuario->save();
$uploadDir = $this->getParameter('upload_dir');
$idNutrapharm = explode("@", $usuario->getUnuCorreo())[0] . $usuario->getUnuId();
$usuario->setUnuPathFotoFinal($uploadDir . '/' . $idNutrapharm . "_final");
$log->debug("Iniciando generación de archivo final asociado a la actualizacion del usuario $idUsuarioNutraPharm...");
if ($uploadFile == 1) {
$log->debug("Procesando archivo fisico subido...");
$filename = $idNutrapharm . "_final." . $file->getClientOriginalExtension();
$usuario->setUnuExtFinal($file->getClientOriginalExtension());
$usuario->save();
$file->move($uploadDir, $filename);
} else {
$log->debug("Procesando archivo tomado con dispositivo...");
$data = $this->getBase64Image($file);
if ($data == -1) {
$log->debug("No se pudo procesar la imagen tomada por el usuario...");
$usuario->setUnuEstado(UsuarioNutrapharm::ESTADO_NO_VALIDO);
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_BAD_REQUEST);
return new JsonResponse(array("msg" => "Ha ocurrido un error con el procesamiento de la imagen", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$usuario->setUnuExtFinal($data[1]);
$usuario->save();
$filename = $idNutrapharm . "_final." . $data[1];
$fpc = file_put_contents("$uploadDir/$filename", $data[0]);
}
$log->debug("escalando imagen en actualizacion final...");
$this->scaleAndCrop("$uploadDir/$filename");
$log->debug("Iniciando union de fotos subidas por el usuario $idUsuarioNutraPharm...");
$this->merge($usuario->getUnuPathFotoInicial() . "." . $usuario->getUnuExtInicial(), $usuario->getUnuExtInicial(), $uploadDir . '/' . $filename, $usuario->getUnuExtFinal(), $uploadDir . '/' . $idNutrapharm . "_comparacion.png");
$usuario->setUnuFotoComparacion($uploadDir . '/' . $idNutrapharm . "_comparacion");
$usuario->setUnuExtComparacion("png");
$usuario->save();
$log->debug("Retornando Respuesta a Usuario | Tipo : " . UsuarioNutrapharm::ESTADO_FOTO_FINAL . " | Usuario : $idUsuarioNutraPharm | Respuesta : " . Response::HTTP_OK);
return new JsonResponse(array("msg" => "Se ha generado la comparación, compartelo en las redes sociales!", "tipo" => UsuarioNutrapharm::ESTADO_FOTO_FINAL, "usuario" => $idNutrapharm), Response::HTTP_OK, ['content-type' => 'application/json']);
}
}
public function registrarEnFacebookAction(Request $request) {
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:registrarEnFacebookAction', 'nutrapharm/index');
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$log->debug("Ingresando a registrar compartir facebook ... IP : $ip | UA : $ua....");
$idUsuarioNutraPharm = $request->get("idUsuarioNutrapharm", null);
$log->debug("Usuario NutraPharm entrante : $idUsuarioNutraPharm...");
$usuario = UsuarioNutrapharmQuery::obtenerUsuarioNutraPharm($idUsuarioNutraPharm);
if (!$usuario) {
$log->debug("id de usuario $idUsuarioNutraPharm no ecnontrado");
return new JsonResponse(array("msg" => "Ha ocurrido un error, el usuario no se encontró", "usuario" => $idUsuarioNutraPharm), Response::HTTP_BAD_REQUEST, ['content-type' => 'application/json']);
}
$log->debug("se ha actualizado el estado de compartir en facebook para el usuario $idUsuarioNutraPharm...");
return new JsonResponse(array("msg" => "Se registro el compartir mensaje de facebook"), Response::HTTP_OK, ['content-type' => 'application/json']);
}
protected function scaleAndCrop($filename){
$log = Utiles::setLog('NutraPharmBundle\Controller\DefaultController:scaleAndCrop', 'nutrapharm/index');
$rutaFotos = Utiles::getParametroConfiguracion('ruta_base_servidor_fotos');
$arrayDimension = $this->dimensionImage($filename);
$arrayOuput = array();
$arrayOuputCrop = array();
$stringSalida = "";
$stringSalidaCrop = "";
$argument = "";
$argumentCrop = "";
$esVertical = 0;
$esHorizontal = 0;
$parameterWidth = Utiles::getParametroConfiguracion("scale_width");
$parameterHeight = Utiles::getParametroConfiguracion("scale_height");
$coordenada = NULL;
$filename = $rutaFotos.str_replace('../',"", $filename);
$log->debug("Archivo Entrante : $filename");
$log->debug("Ancho Imagen ".$arrayDimension["width"]." | Largo Imagen ".$arrayDimension["height"]);
//Escalado
if($arrayDimension["width"] > $arrayDimension["height"]){
$log->debug("Foto Horizontal Ancho > Largo");
$argument = "-y -i $filename -vf scale=-1:$parameterHeight $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esHorizontal = 1;
}else if($arrayDimension["width"] < $arrayDimension["height"]){
$log->debug("Foto Vertical Largo > Ancho");
$argument = "-y -i $filename -vf scale=$parameterWidth:-1 $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esVertical = 1;
}else if($arrayDimension["width"] == $arrayDimension["height"]){
$log->debug("Foto Perfecta Ancho = Largo");
$argument = "-y -i $filename -vf scale=-1:$parameterHeight $filename";
$log->debug("Comando a ejecutar : ffmpeg $argument ");
exec("ffmpeg $argument ", $arrayOuput, $stringSalida);
$log->debug("Codigo Salida : $stringSalida");
$esHorizontal = 1;
}
//Variable a buscar de la nueva imagen escalada
$arrayDimensionScaled = $this->dimensionImage($filename);
$log->debug("Ancho Imagen Escalada ".$arrayDimensionScaled["width"]." | Largo Imagen Escalada ".$arrayDimensionScaled["height"]);
if($esHorizontal == 1 && $esVertical == 0){
$coordenada = ($arrayDimensionScaled["width"] - $parameterHeight) / 2;
$log->debug("Coordenada Calculada Horizontal : $coordenada");
}else if($esHorizontal == 0 && $esVertical == 1){
$coordenada = ($arrayDimensionScaled["height"] - $parameterWidth) / 2;
$log->debug("Coordenada Calculada Vertical : $coordenada");
}
//Cortado
if($esHorizontal == 1 && $esVertical == 0){
$log->debug("Cortando horizontalmente en coordenada : $coordenada,0");
$argumentCrop = "-y -i $filename -vf crop=$parameterWidth:$parameterHeight:$coordenada:0 $filename";
$log->debug("Comando a ejecutar : ffmpeg $argumentCrop ");
exec("ffmpeg $argumentCrop ", $arrayOuputCrop, $stringSalidaCrop);
$log->debug("Codigo Salida : $stringSalidaCrop");
}else if($esHorizontal == 0 && $esVertical == 1){
$log->debug("Cortando verticalmente en coordenada :0,$coordenada");
$argumentCrop = "-y -i $filename -vf crop=$parameterWidth:$parameterHeight:0:$coordenada $filename";
$log->debug("Comando a ejecutar : ffmpeg $argumentCrop ");
exec("ffmpeg $argumentCrop ", $arrayOuputCrop, $stringSalidaCrop);
$log->debug("Codigo Salida : $stringSalidaCrop");
}
$log->debug("Terminando proceso de escalado y cortado $filename...");
}
protected function dimensionImage($filename){
list($width, $height) = getimagesize($filename);
return array("width" => $width, "height" =>$height);
}
protected function merge($filename_x, $fileType_x, $filename_y, $fileType_y, $filename_result) {
if (file_exists($filename_result)) {
imagedestroy($filename_result);
}
// Get dimensions for specified images
list($width_x, $height_x) = getimagesize($filename_x);
list($width_y, $height_y) = getimagesize($filename_y);
// Create new image with desired dimensions
$image = imagecreatetruecolor($width_x + $width_y, $height_x);
// Load images and then copy to destination image
if ($fileType_x == "png" || $fileType_x == "PNG") {
$image_x = imagecreatefrompng($filename_x);
} elseif ($fileType_x == "jpeg" || $fileType_x == "JPEG") {
$image_x = imagecreatefromjpeg($filename_x);
}else{
$image_x = imagecreate($filename_x);
}
// Load images and then copy to destination image
if ($fileType_y == "png" || $fileType_y == "PNG") {
$image_y = imagecreatefrompng($filename_y);
} elseif ($fileType_y == "jpeg" || $fileType_y == "JPEG") {
$image_y = imagecreatefromjpeg($filename_y);
}
imagecopy($image, $image_x, 0, 0, 0, 0, $width_x, $height_x);
imagecopy($image, $image_y, $width_x, 0, 0, 0, $width_y, $height_y);
// Save the resulting image to disk (as JPEG)
imagepng($image, $filename_result);
// Clean up
imagedestroy($image);
imagedestroy($image_x);
imagedestroy($image_y);
}
public function downloadAction(Request $request) {
$file_name = $request->get("file_name", null);
$base_path = $this->getParameter('upload_dir');
$full_path = $base_path . '/' . $file_name;
$fs = new Filesystem();
if (!$fs->exists($full_path)) {
throw $this->createNotFoundException();
}
$file_name = basename($full_path);
$mime_type = $this->getMimeType($full_path);
$file = readfile($full_path);
$headers = array(
'Content-Type' => $mime_type,
'Content-Disposition' => 'inline; filename="' . $file_name . '"');
return new Response($file, 200, $headers);
}
protected function getBase64Image($data) {
if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
$data = substr($data, strpos($data, ',') + 1);
$type = strtolower($type[1]); // jpg, png, gif
if (!in_array($type, ['jpg', 'jpeg', 'gif', 'png'])) {
//throw new \Exception('invalid image type');
return -1;
}
$data = base64_decode($data);
if ($data === false) {
//throw new \Exception('base64_decode failed');
return -1;
}
} else {
//throw new \Exception('did not match data URI with image data');
return -1;
}
//file_put_contents("img.{$type}", $data);
return array($data, $type);
}
protected function getMimeType($file) {
if ('jpg' === substr($file, -3)) {
$best_guess = 'jpeg';
} else {
$guesser = MimeTypeGuesser::getInstance();
$best_guess = $guesser->guess($file);
}
return $best_guess;
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment