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 })); } }