Skip to content

Commit

Permalink
#92
Browse files Browse the repository at this point in the history
  • Loading branch information
matudelatower committed Apr 17, 2017
1 parent d05072b commit d525af6
Show file tree
Hide file tree
Showing 13 changed files with 283 additions and 15 deletions.
13 changes: 11 additions & 2 deletions src/CRMBundle/Controller/AjaxController.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ public function llamadasNoConcretadasAction( Request $request ) {
$llamadaNoConcretada->setVehiculo( $vehiculo );
$llamadaNoConcretada->setEncuesta( $encuesta );

$criteria = [
'vehiculo' => $vehiculo,
'encuesta' => $encuesta
];
$llamadaNoConcretadaHistorial = $em->getRepository( 'CRMBundle:LlamadaNoConcretada' )->findBy( $criteria );

$form = $this->createForm( new LlamadaNoConcretadaType(),
$llamadaNoConcretada );

Expand Down Expand Up @@ -83,7 +89,10 @@ public function llamadasNoConcretadasAction( Request $request ) {
array(
'form' => $form->createView(),
'id' => $id,
'encuesta' => $encuesta
'encuesta' => $encuesta,
'llamadaNoConcretadaHistorial' => $llamadaNoConcretadaHistorial,


) );

}
Expand All @@ -102,6 +111,6 @@ public function getCantidadLlamadasNoConcretadasAction( Request $request ) {
);
$cantidad = $em->getRepository( 'CRMBundle:LlamadaNoConcretada' )->findBy( $criteria );

return new JsonResponse(count($cantidad));
return new JsonResponse( count( $cantidad ) );
}
}
47 changes: 38 additions & 9 deletions src/CRMBundle/Controller/CRMDefaultController.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
use CRMBundle\Form\EncuestaOpcionRespuestaType;
use CRMBundle\Form\EncuestaParameterType;
use CRMBundle\Form\Filter\CRMFilterType;
use CRMBundle\Form\Filter\CRMReporteFilterType;
use CRMBundle\Form\Model\EncuestaParameter;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
Expand Down Expand Up @@ -130,6 +131,7 @@ public function encuestaAction( Request $request ) {
public function nuevaEncuestaAction( $id, $vehiculoId ) {
$em = $this->getDoctrine()->getManager();
$encuesta = $em->getRepository( 'CRMBundle:Encuesta' )->findOrdenado( $id );
$vehiculo = $em->getRepository( 'VehiculosBundle:Vehiculo' )->find( $vehiculoId );

$preguntas = $encuesta->getPreguntas();

Expand Down Expand Up @@ -157,7 +159,8 @@ public function nuevaEncuestaAction( $id, $vehiculoId ) {
return $this->render( 'CRMBundle:Encuesta:encuesta.html.twig',
array(
'form' => $form->createView(),
'encuesta' => $encuesta
'encuesta' => $encuesta,
'vehiculo' => $vehiculo,
) );
}

Expand Down Expand Up @@ -215,15 +218,40 @@ public function reporteEncuestasRealizadasAction( Request $request ) {
$slugEncuesta = $request->get( 'slug' );
$encuesta = $em->getRepository( 'CRMBundle:Encuesta' )->findOneBySlug( $slugEncuesta );


if ( ! $encuesta ) {
throw $this->createNotFoundException( 'No existe la encuesta ' . $slugEncuesta );
}

$encuestaResultadoCabecera = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuesta( $encuesta );
$encuestaResultadoCabeceraNoCanceladas = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuestaNoCancelada( $encuesta );
$cantidadEncuestas = count( $encuestaResultadoCabeceraNoCanceladas );
$preguntas = $em->getRepository( 'CRMBundle:EncuestaPregunta' )->findByEncuesta( $encuesta );
$aOpciones = array();
$form = $this->createForm( new CRMReporteFilterType() );

if ( $request->isMethod( "post" ) ) {
$form->handleRequest( $request );
if ( $form->isValid() ) {
$data = $form->getData();
if ( $data['rango'] ) {
$aFecha = explode( ' - ', $data['rango'] );

$fechaDesde = \DateTime::createFromFormat( 'd/m/Y', $aFecha[0] );
$fechaHasta = \DateTime::createFromFormat( 'd/m/Y', $aFecha[1] );

$data['fechaDesde'] = $fechaDesde->format( 'Y-m-d' ) . ' 00:00:00';
$data['fechaHasta'] = $fechaHasta->format( 'Y-m-d' ) . ' 23:59:59';
}
$encuestaResultadoCabecera = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuestaFiltrada( $encuesta,
$data );
$encuestaResultadoCabeceraNoCanceladas = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuestaNoCancelada( $encuesta,
$data );
}
} else {
$encuestaResultadoCabecera = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuesta( $encuesta );
$encuestaResultadoCabeceraNoCanceladas = $em->getRepository( 'CRMBundle:EncuestaResultadoCabecera' )->findByEncuestaNoCancelada( $encuesta );
}


$cantidadEncuestas = count( $encuestaResultadoCabeceraNoCanceladas );
$preguntas = $em->getRepository( 'CRMBundle:EncuestaPregunta' )->findByEncuesta( $encuesta );
$aOpciones = array();
foreach ( $preguntas as $pregunta ) {
foreach ( $pregunta->getOpcionesRespuestas() as $opcionesRespuesta ) {
$aOpciones[ $opcionesRespuesta->getId() ] = array(
Expand Down Expand Up @@ -270,7 +298,7 @@ public function reporteEncuestasRealizadasAction( Request $request ) {
} else {
$aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ]['neutros'] = 1;
}
} elseif ( $resultdoRespuesta->getEncuestaOpcionRespuesta()->getTextoOpcion() <= 7 ) {
} elseif ( $resultdoRespuesta->getEncuestaOpcionRespuesta()->getTextoOpcion() < 7 ) {
if ( isset( $aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ]['detractores'] ) ) {
$aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ]['detractores'] += 1;
} else {
Expand All @@ -293,7 +321,7 @@ public function reporteEncuestasRealizadasAction( Request $request ) {
$aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ][ $resultdoRespuesta->getEncuestaOpcionRespuesta()->getId() ] = 1;
}
}

krsort( $aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ] );

$aResultados[ $resultdoRespuesta->getEncuestaPregunta()->getPregunta() ]['objetivo'] = $resultdoRespuesta->getEncuestaPregunta()->getObjetivo();
Expand All @@ -315,7 +343,8 @@ public function reporteEncuestasRealizadasAction( Request $request ) {
'resultados' => $aResultados,
'cantidadEncuestas' => $cantidadEncuestas,
'opciones' => $aOpciones,
'aValoresIpc' => $aValoresIpc
'aValoresIpc' => $aValoresIpc,
'form' => $form->createView(),
) );
}
}
31 changes: 31 additions & 0 deletions src/CRMBundle/Entity/Encuesta.php
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,13 @@ class Encuesta extends BaseClass {
*/
private $preguntas;

/**
* @var string
*
* @ORM\Column(name="texto_encuesta", type="text", nullable=true)
*/
private $textoEncuesta;

public function __toString() {
return $this->slug;
}
Expand Down Expand Up @@ -221,4 +228,28 @@ public function getPreguntas() {
return $this->preguntas;
}


/**
* Set textoEncuesta
*
* @param string $textoEncuesta
*
* @return Encuesta
*/
public function setTextoEncuesta($textoEncuesta)
{
$this->textoEncuesta = $textoEncuesta;

return $this;
}

/**
* Get textoEncuesta
*
* @return string
*/
public function getTextoEncuesta()
{
return $this->textoEncuesta;
}
}
1 change: 1 addition & 0 deletions src/CRMBundle/Form/EncuestaType.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ public function buildForm( FormBuilderInterface $builder, array $options ) {
$builder
->add( 'nombre' )
->add( 'descripcion' )
->add( 'textoEncuesta' )
->add( 'activo' )
->add( 'preguntas',
$type,
Expand Down
58 changes: 58 additions & 0 deletions src/CRMBundle/Form/Filter/CRMReporteFilterType.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
<?php

namespace CRMBundle\Form\Filter;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use VehiculosBundle\Form\EventListener\AddAnioCodigoVersionFieldSubscriber;

class CRMReporteFilterType extends AbstractType {

private $em;

public function __construct( $em = null ) {
$this->em = $em;
}

/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm( FormBuilderInterface $builder, array $options ) {

$builder
->add( 'vendedor',
'jqueryautocomplete',
array(
'label' => 'Vendedor (Por Apellido)',
'class' => 'PersonasBundle:Empleado',
'search_method' => 'getEmpleadoByApellido',
'required' => false,
'route_name' => 'get_empleado_by_apellido'
) )
->add( 'rango',
'text',
array(
'required' => false,
'attr' => array( 'class' => 'daterange' )
) );
}

/**
* @param OptionsResolver $resolver
*/
public function configureOptions( OptionsResolver $resolver ) {
$resolver->setDefaults( array(
'csrf_protection' => false
) );
}

/**
* @return string
*/
public function getName() {
return 'crmbundle_reporte_filter';
}

}
32 changes: 31 additions & 1 deletion src/CRMBundle/Repository/EncuestaResultadoCabeceraRepository.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,37 @@
use Doctrine\ORM\EntityRepository;

class EncuestaResultadoCabeceraRepository extends EntityRepository {
public function findByEncuestaNoCancelada( $encuesta ) {

public function findByEncuestaFiltrada( $encuesta, $filtros = null ) {

$qb = $this->createQueryBuilder( 'erc' );

$qb->join( 'erc.encuesta', 'e' )
->where( "e = :encuesta" )
->setParameter( 'encuesta', $encuesta )
->andWhere( $qb->expr()->andx(
$qb->expr()->isNull( 'erc.cancelada' )
) );

if ( $filtros ) {
if ( $filtros['vendedor'] ) {
$qb->join( 'erc.vehiculo', 'v' )
->andWhere( 'v.vendedor = :vendedor' )
->setParameter( 'vendedor', $filtros['vendedor'] );
}
if ( $filtros['rango'] ) {
$qb
->andWhere( 'erc.fechaCreacion between :fecha_desde and :fecha_hasta' )
->setParameter( 'fecha_desde', $filtros['fechaDesde'] )
->setParameter( 'fecha_hasta', $filtros['fechaHasta'] );
}
}

return $qb->getQuery()->getResult();

}

public function findByEncuestaNoCancelada( $encuesta, $filtros = null ) {

$qb = $this->createQueryBuilder( 'erc' );

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
<div class="col-md-12">
<div class="row">
<div class="col-md-12">
<p>
{% for historial in llamadaNoConcretadaHistorial %}
{{ historial.fechaCreacion |date('d/m/Y') }} - {{ historial.motivo }} |
{% endfor %}
</p>
<div class="hidden">
{{ form_widget(form.encuesta) }}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,54 @@
</div>
</div>
<!-- FILTROS -->
<div class="row">
<div class="col-xs-12">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Filtros</h3>
<div class="box-tools pull-right">
<button title="" data-toggle="tooltip" data-widget="collapse" class="btn btn-box-tool"
data-original-title="Collapse"><i class="fa fa-minus"></i></button>
<button title="" data-toggle="tooltip" data-widget="remove" class="btn btn-box-tool"
data-original-title="Remove"><i class="fa fa-times"></i></button>
</div>

</div>
<!-- /.box-header -->
<div class="box-body">
<form class="form-vertical" id="form-reporte" name="form-reporte" role="form" method="post">

<div class="row">
<div class="col-md-6">
{{ form_row(form.vendedor) }}
</div>
<div class="col-md-6">
{{ form_row(form.rango) }}
</div>
</div>

<div class="form-group">
<div class="col-sm-offset-2 col-sm-4">
<button class="btn btn-primary btn-label-left" type="submit" id="btn-filtro-buscar">
<span>
<i class="fa fa-filter"></i>
</span>
Buscar
</button>
<button class="btn btn-default" type="reset">
<span>
<i></i>
</span>
Limpiar
</button>

</div>
</div>
</form>
</div>
</div>
</div>
</div>

<!-- FIN FILTROS -->

Expand Down
1 change: 1 addition & 0 deletions src/CRMBundle/Resources/views/Encuesta/edit.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

{{ form_row(edit_form.nombre) }}
{{ form_row(edit_form.descripcion) }}
{{ form_row(edit_form.textoEncuesta) }}
{{ form_row(edit_form.activo) }}

<div class="hisotrial-preguntas">
Expand Down
32 changes: 32 additions & 0 deletions src/CRMBundle/Resources/views/Encuesta/encuesta.html.twig
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,38 @@
{% endblock %}

{% block content -%}

<div class="row">
<div class="col-md-12">
<div class="box box-default">
<div class="box-header with-border">

</div>

<div class="box-body">
<div class="row">
<div class="col-md-6">
<label>Vendedor:</label> {{ vehiculo.vendedor }}<br>
<label>Cliente:</label> {{ vehiculo.cliente }}
</div>
<div class="col-md-6">
<label>Vehículo:</label> {{ vehiculo.modelo }}<br>
<label>VIN:</label> {{ vehiculo.vin }}
</div>
</div>
{#<div class="row">#}
<hr>
<p>
<label>Texto introductorio:</label> {{ encuesta.textoEncuesta }}
</p>
{#</div>#}
</div>

<div class="box-footer">
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="box box-primary">
Expand Down
Loading

0 comments on commit d525af6

Please sign in to comment.