Cambios en mi cuenta v1-actualizacion

parent 0b556c19
......@@ -43,7 +43,11 @@ front_listas_no_contratadas:
front_mi_cuenta:
path: mi/cuenta
controller: App\FrontendBundle\Controller\IndexController::miCuenta
methods: GET
methods: GET
front_datos_usuario:
path: mi/cuenta/datos/actualizar
controller: App\FrontendBundle\Controller\IndexController::actualizarDatos
methods: POST
front_prueba:
path: app/musica/fake
controller: App\FrontendBundle\Controller\IndexController::fake
......
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="plu_accesos_usuario_movil", indexes={@ORM\Index(name="idx_fk_umo_msisdn_actividad", columns={"umo_id"})})
* @ORM\Entity(repositoryClass="App\Repository\PluAccesosUsuarioMovilRepository")
*/
class PluAccesosUsuarioMovil
{
/**
* @ORM\Column(name="aum_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
**/
private $aumId;
/**
* @ORM\Column(name="aum_ua", type="string", length=500, nullable=true)
*/
private $aumUa;
/**
* @ORM\Column(name="aum_ip", type="string", length=255, nullable=true)
*/
private $aumIp;
/**
* @ORM\Column(name="aum_host_ingresado", type="string", length=500, nullable=true)
*/
private $aumHostIngresado;
/**
* @ORM\Column(name="created_at", type="datetime", nullable=true)
*/
private $createdAt;
/**
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @ORM\Column(name="aum_id", type="integer")
*/
/**
* @var \PluUsuarioMovil
*
* @ORM\ManyToOne(targetEntity="PluUsuarioMovil")
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="umo_id", referencedColumnName="umo_id")
* })
*/
private $umo;
public function getAumId(): ?int
{
return $this->aumId;
}
public function setAumId(int $aumId): self
{
$this->aumId = $aumId;
return $this;
}
public function getAumUa(): ?string
{
return $this->aumUa;
}
public function setAumUa(?string $aumUa): self
{
$this->aumUa = $aumUa;
return $this;
}
public function getAumIp(): ?string
{
return $this->aumIp;
}
public function setAumIp(?string $aumIp): self
{
$this->aumIp = $aumIp;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(?\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
public function getUmo(): ?PluUsuarioMovil
{
return $this->umo;
}
public function setUmo(?PluUsuarioMovil $umo): self
{
$this->umo = $umo;
return $this;
}
public function getAumHostIngresado(): ?string
{
return $this->aumHostIngresado;
}
public function setAumHostIngresado(?string $aumHostIngresado): self
{
$this->aumHostIngresado = $aumHostIngresado;
return $this;
}
}
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="plu_usuario_movil")
* @ORM\Entity(repositoryClass="App\Repository\PluUsuarioMovilRepository")
*/
class PluUsuarioMovil
{
/**
* @ORM\Column(name="umo_id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
**/
private $umoId;
/**
* @ORM\Column(name="umo_msisdn", type="string", length=45, nullable=false)
*/
private $umoMsisdn;
/**
* @ORM\Column(name="umo_nombre", type="string", length=500, nullable=true)
*/
private $umoNombre;
/**
* @ORM\Column(name="umo_rut", type="string", length=45, nullable=true)
*/
private $umoRut;
/**
* @ORM\Column(name="umo_mail", type="string", length=250, nullable=true)
*/
private $umoMail;
/**
* @ORM\Column(name="umo_eliminado", type="integer", nullable=true)
*/
private $umoEliminado;
/**
* @ORM\Column(name="created_at", type="datetime", nullable=true)
*/
private $createdAt;
/**
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;
public function getUmoId(): ?int
{
return $this->umoId;
}
public function setUmoId(int $umoId): self
{
$this->umoId = $umoId;
return $this;
}
public function getUmoMsisdn(): ?string
{
return $this->umoMsisdn;
}
public function setUmoMsisdn(?string $umoMsisdn): self
{
$this->umoMsisdn = $umoMsisdn;
return $this;
}
public function getUmoNombre(): ?string
{
return $this->umoNombre;
}
public function setUmoNombre(?string $umoNombre): self
{
$this->umoNombre = $umoNombre;
return $this;
}
public function getUmoRut(): ?string
{
return $this->umoRut;
}
public function setUmoRut(?string $umoRut): self
{
$this->umoRut = $umoRut;
return $this;
}
public function getUmoMail(): ?string
{
return $this->umoMail;
}
public function setUmoMail(?string $umoMail): self
{
$this->umoMail = $umoMail;
return $this;
}
public function getUmoEliminado(): ?int
{
return $this->umoEliminado;
}
public function setUmoEliminado(?int $umoEliminado): self
{
$this->umoEliminado = $umoEliminado;
return $this;
}
public function getCreatedAt(): ?\DateTimeInterface
{
return $this->createdAt;
}
public function setCreatedAt(?\DateTimeInterface $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getUpdatedAt(): ?\DateTimeInterface
{
return $this->updatedAt;
}
public function setUpdatedAt(?\DateTimeInterface $updatedAt): self
{
$this->updatedAt = $updatedAt;
return $this;
}
}
......@@ -14,6 +14,8 @@ use App\Entity\PluSuscripcion;
use App\Entity\PluCodigoPin;
use App\Utilities\Utiles;
use App\Entity\PluRelacionesListas;
use App\Entity\PluUsuarioMovil;
use App\Entity\PluAccesosUsuarioMovil;
class IndexController extends AbstractController {
......@@ -131,6 +133,40 @@ class IndexController extends AbstractController {
$cantidadListasContratadas = count($listasFiltradasContratadas);
$log->debug("Cantdad listas vigentes usuario $msisdn : $cantidadListas | Cantidad listas Contratadas usuario $msisdn : $cantidadListasContratadas");
/* Nueva Logica Registro Usuario */
//creando registro de msisdn en BD
$criteria = array("umoMsisdn" => $msisdn, "umoEliminado" => 0);
$nbUsers = $em->getRepository(PluUsuarioMovil::class)->countBy($criteria);
if ($nbUsers == 0) {
$log->debug("creando usuario para msisdn $msisdn...");
$usuario = new PluUsuarioMovil();
$usuario->setUmoMsisdn($msisdn);
$usuario->setUmoEliminado(0);
$usuario->setCreatedAt(new \DateTime());
$usuario->setUpdatedAt(new \DateTime());
$em->persist($usuario);
$em->flush();
} else {
$usuario = $em->getRepository(PluUsuarioMovil::class)->findBy($criteria)[0];
}
$log->debug("creando registro acceso usuario para msisdn $msisdn...");
$usuarioAcceso = new PluAccesosUsuarioMovil();
$usuarioAcceso->setUmo($usuario);
$usuarioAcceso->setAumUa($ua);
$usuarioAcceso->setAumIp($ip);
$usuarioAcceso->setAumHostIngresado($host);
$usuarioAcceso->setCreatedAt(new \DateTime());
$usuarioAcceso->setUpdatedAt(new \DateTime());
$em->persist($usuarioAcceso);
$em->flush();
/* Fin Nueva Logica Registro Usuario */
$log->debug("OPCIONES FRONT | MSISDN SALIENTE : $msisdn | modal? : $modal | isChrome : ".Utiles::isWindowsChrome($ua));
return $this->render('frontend/index.html.twig', [
......@@ -146,7 +182,7 @@ class IndexController extends AbstractController {
"isChrome" => Utiles::isWindowsChrome($ua)
]);
}
public function miCuenta(Request $request): response{
public function miCuenta(Request $request): response {
$log = Utiles::setLog('App\FrontendBundle\Controller::IndexController::miCuenta', 'app/frontend/micuenta');
$em = $this->getDoctrine()->getManager('default');
$ua = $request->headers->get('User-Agent');
......@@ -156,9 +192,9 @@ class IndexController extends AbstractController {
$msisdnSesion = $session->get('msisdn');
$msisdnEntrante = $request->get("msisdn");
$log->debug("entrando...HOST : $host |IP : $ip |MSISDN ENTRANTE: $msisdnEntrante| MSISDN SESION : $msisdnSesion");
if($msisdnEntrante != $msisdnSesion || !Utiles::isMsisdn($msisdnEntrante)){
if ($msisdnEntrante != $msisdnSesion || !Utiles::isMsisdn($msisdnEntrante)) {
$log->debug("el msisdn entrante no cumple con el formato o es distinto al obtenido de la sesion...");
$url = $this->generateUrl('front_index', array('msisdn' => $msisdnSesion, 'm' => 0));
$statusCode = 302;
......@@ -166,13 +202,55 @@ class IndexController extends AbstractController {
}
$log->debug("obteniendo el historial de suscripciones para el usuario $msisdnEntrante");
$suscripciones = $em->getRepository(PluSuscripcion::class)->findBy(array("susMsisdn" => $msisdnEntrante, "susVigente" => 1));
$log->debug("obteniendo el usuario asociado al msisdn $msisdnEntrante");
$usuario = $em->getRepository(PluUsuarioMovil::class)->findOneBy(array("umoMsisdn" => $msisdnEntrante));
return $this->render('frontend/paginas/mi_cuenta.html.twig', [
"suscripciones" => $suscripciones,
"usuario" => $usuario
]);
}
public function actualizarDatos(Request $request) : Response{
$log = Utiles::setLog('App\FrontendBundle\Controller::IndexController::actualizarDatos', 'app/frontend/datosUsuario');
$msisdn = $request->get("msisdn");
$email = $request->get("email");
$ua = $request->headers->get('User-Agent');
$ip = $request->getClientIp();
$em = $this->getDoctrine()->getManager('default');
$json = new JsonResponse();
$log->debug("$ua | $msisdn | $ip...");
//CHEQUEAR EMAIL
if (Utiles::validarCorreo($email) == 0) {
$log->debug("Mail Invalido $email...");
$json->setStatusCode(JsonResponse::HTTP_BAD_REQUEST, 'Correo ingresado inválido.');
$json->setData(array('errors' => 'El correo ingresado no es válido.'));
return $json;
}
if ($em->getRepository(PluUsuarioMovil::class)->countBy(array("umoMail" => $email)) > 0) {
$log->debug("Mail $email ya registrado...");
$json->setStatusCode(JsonResponse::HTTP_BAD_REQUEST, 'El email ingresado ya se encuenrra registrado en nuestros sistemas.');
$json->setData(array('errors' => 'El correo ingresado ya se encuentra registrado.'));
return $json;
}
$usuario = $em->getRepository(PluUsuarioMovil::class)->findOneBy(array("umoMsisdn" => $msisdn));
$log->debug("actualizando datos de usuario...");
$usuario->setUmoMail($email);
$em->persist($usuario);
$em->flush();
$log->debug("datos actualizados correctamente para usuario ".$usuario->getUmoId());
$log->debug("retornando...");
$json->setStatusCode(JsonResponse::HTTP_OK, 'OK');
$json->setData(array("mail" => $usuario->getUmoMail()));
return $json;
}
public function validarMsisdn(Request $request): Response {
......
<?php
namespace App\Repository;
use App\Entity\PluAccesosUsuarioMovil;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
/**
* @method PluAccesosUsuarioMovil|null find($id, $lockMode = null, $lockVersion = null)
* @method PluAccesosUsuarioMovil|null findOneBy(array $criteria, array $orderBy = null)
* @method PluAccesosUsuarioMovil[] findAll()
* @method PluAccesosUsuarioMovil[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class PluAccesosUsuarioMovilRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, PluAccesosUsuarioMovil::class);
}
// /**
// * @return PluAccesosUsuarioMovil[] Returns an array of PluAccesosUsuarioMovil objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->orderBy('p.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?PluAccesosUsuarioMovil
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}
<?php
namespace App\Repository;
use App\Entity\PluUsuarioMovil;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Symfony\Bridge\Doctrine\RegistryInterface;
/**
* @method PluUsuarioMovil|null find($id, $lockMode = null, $lockVersion = null)
* @method PluUsuarioMovil|null findOneBy(array $criteria, array $orderBy = null)
* @method PluUsuarioMovil[] findAll()
* @method PluUsuarioMovil[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class PluUsuarioMovilRepository extends ServiceEntityRepository
{
public function __construct(RegistryInterface $registry)
{
parent::__construct($registry, PluUsuarioMovil::class);
}
public function countBy(array $criteria)
{
$persister = $this->_em->getUnitOfWork()->getEntityPersister($this->_entityName);
return $persister->count($criteria);
}
// /**
// * @return PluUsuarioMovil[] Returns an array of PluUsuarioMovil objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->orderBy('p.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?PluUsuarioMovil
{
return $this->createQueryBuilder('p')
->andWhere('p.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}
This diff is collapsed.
<!-- Modal -->
<div class="modal fade" id="modalDatosUsuario" role="dialog">
<div class="modal-dialog">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header">
<h4 id="modalTitleDatosUsuario" class="modal-title modalTitleCustom">Datos Personales</h4>
<button type="button" class="close modalCloseCustom" data-dismiss="modal">&times;</button>
</div>
<div id="modalBodyDatosUsuario" class="modal-body">
<div id="message-container-datos-usuario"></div>
<div id="modalBodyDatosUsuarioContent">
<form class="form-horizontal" action="/" method="post">
<div class="form-group">
<div class="col-md-12">
<input class="form-control focused" id="mailUsuario" name="mailUsuario" value="{{usuario.getUmoMail()}}" type="text" placeholder="Ej:correo@mail.com">
</div>
</div>
</form>
</div>
</div>
<div class="modal-footer">
<button id="btnActualizarDatos" type="button" onclick="actualizarDatos(event)" class="btn btn-success">Actualizar</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
\ No newline at end of file
<div class="container" id="listasContratadas">
<div class="row align-items-center">
<h2>Listas Contratadas</h2>
</div>
{% if cantidadListasContratadas > 0 %}
{%for lista in listasContratadas%}
<section id="hookContratadas_{{lista.lisId}}}}">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 order-lg-2">
<div class="p-5">
<img id="imgListaContratada_{{lista.lisId}}" class="img-fluid rounded-circle" style ="width:224px; height:224px;" onclick="showListSongsContratadas(event,{{lista.lisId}} , '{{lista.lisNombre}}', {{lista.lisPrecio}}, 2, this.src)" src="http://newbackendcontenidos.gearlabs.cl/{{(lista.getPathImagen)}}" alt="Ver Canciones de la Lista.">
</div>
</div>
<div class="col-lg-6 order-lg-1">
<div class="p-5">
<h2 class="display-4">{{lista.lisNombre}}</h2>
<p>{{lista.lisDescripcion}}</p>
</div>
</div>
</div>
</div>
</section>
{% endfor %}
{% else %}
<section id="hook">
<div class="container">
<div class="row align-items-center">
<span class="no_list">No existen listas suscritas...</span>
</div>
</section>
{% endif %}
</div>
\ No newline at end of file
{% if cantidadListasContratadas > 0 %}
<div class="container" id="listasContratadas">
<div class="row align-items-center">
<h2>Listas Contratadas</h2>
</div>
{%for lista in listasContratadas%}
<section id="hookContratadas_{{lista.lisId}}}}">
<div class="container">
<div class="row align-items-center">
<div class="col-lg-6 order-lg-2">
<div class="p-5">
<img id="imgListaContratada_{{lista.lisId}}" class="img-fluid rounded-circle" style ="width:224px; height:224px;" onclick="showListSongsContratadas(event,{{lista.lisId}} , '{{lista.lisNombre}}', {{lista.lisPrecio}}, 2, this.src)" src="http://newbackendcontenidos.gearlabs.cl/{{(lista.getPathImagen)}}" alt="Ver Canciones de la Lista.">
</div>
</div>
<div class="col-lg-6 order-lg-1">
<div class="p-5">
<h2 class="display-4">{{lista.lisNombre}}</h2>
<p>{{lista.lisDescripcion}}</p>
</div>
</div>
</div>
</div>
</section>
{% endfor %}
</div>
{% else %}
{#nada#}
{% endif %}
\ No newline at end of file
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