Actualizacion general

parent e3fdf377
<p>Estimado {{nombre_usuario}}, ya han pasado {{dias}} desde que inicio el cambio con el producto xxx de nutrapharm.</p>
<br>
<p>Tomese una nueva foto y comparta sus cambios haciendo click <a href="{{url_sitio}}{{seccion}}?idp={{id_usuario}}" target="_blank">aquí</a></p>
{% if app.session.flashbag.has('success') %}
<div class="alert alert-success">
<span class="close" data-dismiss="alert">×</span>
{% for flashMessage in app.session.flashbag.get('success') %}
{{ flashMessage }}<br>
{% endfor %}
</div>
{% endif %}
{% if app.session.flashbag.has('error') %}
<div class="alert alert-danger">
<span class="close" data-dismiss="alert">×</span>
{% for flashMessage in app.session.flashbag.get('error') %}
{{ flashMessage }}<br>
{% endfor %}
</div>
{% endif %}
{% if app.session.flashbag.has('info') %}
<div class="alert alert-info">
<span class="close" data-dismiss="alert">×</span>
{% for flashMessage in app.session.flashbag.get('info') %}
{{ flashMessage }}<br>
{% endfor %}
</div>
{% endif %}
{% if app.session.flashbag.has('warning') %}
<div class="alert alert-warning">
<span class="close" data-dismiss="alert">×</span>
{% for flashMessage in app.session.flashbag.get('warning') %}
{{ flashMessage }}<br>
{% endfor %}
</div>
{% endif %}
\ No newline at end of file
{% extends 'base.html.twig' %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionComparacion}}?idp={{idp}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm - Comparación Foto" />
<meta property="og:description" content="{{comentarioFinal}}" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}uploads/users/{{idp}}_comparacion.png"/>
{% endblock %}
{% block body %}
<div class="row">
<div class="col-lg-12">
<div class="panel-body">
<label>Foto Comparación</label>
<img src="{{urlSitio}}nutrapharm/get/photo?file_name={{idp}}_comparacion.{{extComparacion}}" />
<div class="form-group">
<span>{{comentarioFinal}}</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="panel-body">
<button class="btn" onclick="iniciarProceso(event)">Registra tu cambio</button>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script>
var urlSitio = "{{url_sitio}}";
var seccionInicial = "{{seccionInicial}}";
function iniciarProces(event) {
event.preventDefault();
window.location.assign(urlSitio + seccionInicial);
}
</script>
{% endblock %}
\ No newline at end of file
{% extends 'base.html.twig' %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionError}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm - Error" />
<meta property="og:description" content="Ha ocurrido un error en la solicitud" />
{% endblock %}
{% block body %}
<div class="row">
{{ include('producto/includes/alert.messages.html.twig') }}
</div>
{%endblock%}
{% block javascripts %}
{%endblock%}
{% extends 'base.html.twig' %}
{% block head %}
<meta property="fb:app_id" content="{{facebookAppId}}" />
<meta property="og:url" content="{{urlSitio}}{{seccionGenerarCambios}}?idp={{idp}}" />
<meta property="og:type" content="website" />
<meta property="og:title" content="NutraPharm - Comparación Foto" />
<meta property="og:description" content="Visualiza tus cambios!" />
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:image" content="{{urlSitio}}uploads/users/{{idp}}.{{extInicial}}"/>
<link href="{{asset('frontend/css/camara.css')}}" rel="stylesheet" />
<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>
{% endblock %}
{% block body %}
<div class="row">
{{ include('producto/includes/alert.messages.html.twig') }}
</div>
<div class="row">
<div class="col-lg-12">
<label>Foto Subida antes</label>
<img src="{{urlSitio}}nutrapharm/get/photo?file_name={{idp}}.{{extInicial}}" />
<div class="form-group">
<label class="col-md-3 control-label">Comentarios</label>
<div class="col-md-9">
<input id="comentarioFotoUsuario" type="textarea" placeholder="Comentarios..."/>
</div>
</div>
</div>
</div>
<div class="row">
<div class="panel-body">
<button id="tomarFoto" name="tomarFoto" onclick="mostrarTomarFoto(event)">Tomar Foto</button>
<button id="subirFoto" name="subirFoto" onclick="mostrarSubirFoto(event)">Subir Foto</button>
<div id="tomarFotoContainer" style="display:none">
<div class="form-group">
<div class="camera">
<video id="video" width="600" height="315">No se encuentra disponible una camara</video>
<button id="startbutton">Tomar Foto</button>
</div>
</div>
<div class="form-group">
<canvas id="canvas" width="600" height="315">
</canvas>
<div class="output">
<img id="photo" width="600" height="315" alt="Preview" src="">
</div>
</div>
</div>
<div id="subirFotoContainer" style="display:none">
<div class="form-group">
<input type='file' id="imgInp" accept="image/*" />
<img id="imagenUsuario" width="200" height="auto" style="display:none" src="#" alt="Imagen subida" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="panel-body">
<div class="form-group">
<button id="btnGuardar">Guardar</button>
</div>
</div>
</div>
<div class="row">
<div class="panel-body">
<div class="form-group">
<span>RELLENA TUS DATOS Y SUBE TU FOTO</span>
<div id="shareButtonContainer" style="display:none">
<div class="form-group">
<button id="buttonShare" class="btn">Compartir En Facebook</button>
</div>
</div>
</div>
</div>
</div>
{% endblock %}
{% block javascripts %}
<script src="{{asset('frontend/js/capture.js')}}"></script>
<script>
var imagenSubida = false;
var imagenTomada = false;
var usuarioNutraPharm = "{{idp}}";
var tipoUsuarioFormulario = 3;
var upload = null;
var url = '{{urlSitio}}{{seccionComparacion}}?idp={{idp}}';
</script>
<script>
window.fbAsyncInit = function () {
FB.init({
appId: '{{facebookAppId}}',
status: true,
xfbml: true,
cookie: true,
version: 'v7.0'
});
}
function countCompartirFacebook(idUsuario) {
var url = "{{ path('nutrapharm_compartir_facebook') }}";
var formData = new FormData();
$.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);
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
$("#mensaje-nutrapharm").removeClass("alert-danger");
$("#mensaje-nutrapharm").addClass("alert-success");
$("#mensaje-nutrapharm").html(data.msg);
$("#mensaje-nutrapharm").show();
}
});
}
$("#buttonShare").click(function () {
console.log("compartiendo en facebook...");
FB.ui({
xfbml: true,
method: 'share',
href: url
}, function (response) {
if (response && response.post_id) {
console.log('Comparación Compartido en Facebook.');
countCompartirFacebook(usuarioNutraPharm);
} else {
console.log('Comparación No Compartido en Facebook.');
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html("No se pudo compartir en Facebook.Intente nuevamente.");
$("#mensaje-nutrapharm").show();
}
});
})
function mostrarTomarFoto(event) {
event.preventDefault();
console.log("mostrando tomar foto...");
$("#tomarFotoContainer").show();
$("#subirFotoContainer").hide();
imagenTomada = false;
imagenTomada = true;
}
function mostrarSubirFoto(event) {
event.preventDefault();
console.log("mostrando subir foto...");
$("#tomarFotoContainer").hide();
$("#subirFotoContainer").show();
imagenTomada = false;
imagenSubida = true;
}
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
$('#imagenUsuario').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]); // convert to base64 string
$('#imagenUsuario').show();
}
}
$("#imgInp").change(function () {
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);
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("comentarioFotoUsuario", $("#comentarioFotoUsuario").val());
formData.append("usuarioNutraPharm", usuarioNutraPharm);
formData.append("tipoUsuarioFormulario", tipoUsuarioFormulario);
$.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);
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false);
},
500: function (respuesta) {
console.log(respuesta.responseText);
var respuestaJson = JSON.parse(respuesta.responseText);
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html(respuestaJson.msg);
$("#mensaje-nutrapharm").show();
$("#btnGuardar").prop("disabled", false);
}
},
success: function (data) {
$("#shareButtonContainer").show();
if (data.tipo === 2) {
tipoUsuarioFormulario = data.tipo;
usuarioNutraPharm = data.usuario;
}
$("#mensaje-nutrapharm").removeClass("alert-danger");
$("#mensaje-nutrapharm").addClass("alert-success");
$("#mensaje-nutrapharm").html(data.msg);
$("#mensaje-nutrapharm").show();
},
complete: function (data) {
$("#btnGuardar").prop("disabled", false);
}
});
};
$("#btnGuardar").click(function (e) {
e.preventDefault();
if (imagenSubida == false && imagenTomada == false) {
$("#mensaje-nutrapharm").removeClass("alert-success");
$("#mensaje-nutrapharm").addClass("alert-danger");
$("#mensaje-nutrapharm").html("Debe seleccionar o tomar una imagen!");
$("#mensaje-nutrapharm").show();
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);
});
</script>
{%endblock%}
<?php
namespace AppBundle\Lib;
/**
* Clase para calcular Tiempos transcurridos.
*
* @author Luis Arcos
*/
class TiempoTranscurrido {
private $inicio;
public function __construct() {
$this->inicio = microtime(true);
}
/**
*
* @return Tiempo en Segundos
*/
public function getTiempoTranscurrido() {
return round(microtime(true) - $this->inicio, 4);
}
}
<?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)->filterByUnuEstado(UsuarioNutrapharm::ESTADO_FOTO_FINAL)->find();
foreach ($usuarios as $index => $usuario):
$enviarCorreo = $this->chequearFechaEnviarCorreo($fechaActual, $usuario->getCreatedAt(), $usuario->getUnuId());
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["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 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 = EnvioCorreoUsuario::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) {
$diferencia = $fechaUsuario->diff($fechaActual);
if ($diferencia->m >= 1) {
$poseeTraza = EnvioCorreoUsuarioQuery::poseeTrazaEnvio($id);
if ($poseeTraza == 1) {
$traza = EnvioCorreoUsuario::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;
}
}
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