public ActionResult Create([Bind(Include = "matricula,marcaVehiculo,modeloVehiculo,fechaInicio,fechaFin,precio,observaciones,condicionadoPolizaId")] GestionPoliza gestionPoliza, string clienteId)
        {
            if (ModelState.IsValid == false || gestionPolizaBLL.FieldsFormatCreate(gestionPoliza, clienteId) == false)
            {
                TempData["mensaje"] = ItemMensaje.ErrorDatosNoValidosCrear(Poliza.GetNombreModelo());
                return(RedirectToAction("Index"));
            }
            Cliente cliente = unitOfWork.Cliente.Get(int.Parse(clienteId));

            if (gestionPolizaBLL.ValidarFormatoMatricula(gestionPoliza.matricula) == false)
            {
                TempData["mensaje"] = ItemMensaje.ErrorValidarFormatoMatricula(Poliza.GetNombreModelo());
                return(RedirectToAction("Create", new { clienteDni = cliente.dniCliente }));
            }
            if (gestionPolizaBLL.ExistMatriculaInPolizasActivas(gestionPoliza.matricula) == true)
            {
                TempData["mensaje"] = ItemMensaje.ErrorValidarMatriculaDuplicada(Poliza.GetNombreModelo(), gestionPoliza.matricula);
                return(RedirectToAction("Index"));
            }
            // Validaciones de rangos de fecha.
            DateTime today = DateTime.Today;

            if (gestionPoliza.fechaInicio < today)
            {
                TempData["mensaje"] = ItemMensaje.ErrorFechaInicioMenorHoy(Poliza.GetNombreModelo());
                return(RedirectToAction("Create", new { clienteDni = cliente.dniCliente }));
            }
            if (gestionPoliza.fechaFin > gestionPoliza.fechaInicio.AddYears(1))
            {
                TempData["mensaje"] = ItemMensaje.ErrorFechasMaxRangoInicioFin(Poliza.GetNombreModelo(), 365);
                return(RedirectToAction("Create", new { clienteDni = cliente.dniCliente }));
            }
            if (gestionPoliza.fechaFin > today.AddYears(1).AddMonths(6))
            {
                TempData["mensaje"] = ItemMensaje.ErrorFechasMaxRangoHoyFin(Poliza.GetNombreModelo(), 547);
                return(RedirectToAction("Create", new { clienteDni = cliente.dniCliente }));
            }
            try
            {
                var    usuario      = GetUsuarioLogado();
                Poliza polizaCreada = gestionPolizaBLL.CreatePolizaAndFirstGestionPoliza(gestionPoliza, usuario, cliente);
                TempData["mensaje"] = ItemMensaje.SuccessCrear(Poliza.GetNombreModelo(), polizaCreada.polizaId.ToString(CultureInfo.GetCultureInfo("es-ES")));
                return(RedirectToAction("Index"));
            }
            catch (Exception ex)
            {
                gestionPolizaBLL.UnCreatePoliza(cliente);
                TempData["mensaje"] = ItemMensaje.ErrorExcepcionCrear(Poliza.GetNombreModelo(), ex.GetType().ToString());
                return(RedirectToAction("Create", new { clienteDni = cliente.dniCliente }));
            }
        }