public ActionResult Crear(ExcepcionRubro excepcionRubro)
        {
            if (!ModelState.IsValid)
            {
                return PartialView(excepcionRubro);
            }

            if (ExistenPeriodosSolapados(excepcionRubro))
            {
                //Verificamos que nos se solapen los rangos ningun existente.
                ModelState.AddModelError("PeriodosSolapados", "El período ingresado coincide con uno o más cargados previamente");
                return PartialView(excepcionRubro);
            }

            excepcionRubro.Identifier = Guid.NewGuid();
            Uow.ExcepcionesRubros.Agregar(excepcionRubro);
            Uow.Commit();

            return Json(new {exito = true});
        }
 public ActionResult Crear()
 {
     var excepcionRubro = new ExcepcionRubro();
     excepcionRubro.RecargoPorcentaje = 0;
     return PartialView(excepcionRubro);
 }
        private bool ExistenPeriodosSolapados(ExcepcionRubro excepcionRubro)
        {
            //Validate solapamiento para el rubro y el kiosco
            var excepcionesRubro = Uow.ExcepcionesRubros.Listado()
                .Where(ex => ex.MaxiKioscoId == excepcionRubro.MaxiKioscoId &&
                             ex.RubroId == excepcionRubro.RubroId &&
                             ex.ExcepcionRubroId != excepcionRubro.ExcepcionRubroId).ToList();

            return excepcionesRubro.Any(ex => TimeSpanHelper
                                                  .TimePeriodOverlap(excepcionRubro.Desde, excepcionRubro.Hasta,
                                                                     ex.Desde, ex.Hasta));
        }