public IHttpActionResult DescuentoCreate(DescuentoModel descuentoModel)
        {
            try
            {
                if (UsuarioModel.Instance.rol != Rol.ADMINISTRADOR && UsuarioModel.Instance.rol != Rol.DEV)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "No esta autorizado para realizar esta operacion", Constants.NO_AUTH)));
                }

                if (descuentoModel.Descuento == null)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "Objecto no puede estar vacio", Constants.DESCUENTO_FAIL)));
                }

                var descuento = descuentoModel.Create(BuilderFactories.Descuento(descuentoModel.Descuento.TipoDescuento, descuentoModel.Descuento.Acomulable, descuentoModel.Descuento.FechaYHoraInicio, descuentoModel.Descuento.FechaYHoraTerminación, descuentoModel.Descuento.Descu));
                if (descuento == null)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "Descuento no pudo crearse", Constants.DESCUENTO_FAIL)));
                }
                return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.NO_ERROR, "Descuento Creado con exito", Constants.DESCUENTO_SUCCES)));
            }
            catch (Exception e)
            {
                return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, e.Message, Constants.DESCUENTO_FAIL)));
            }
        }
        public IHttpActionResult DescuentoEdit(DescuentoModel descuentoModel)
        {
            try
            {
                if (UsuarioModel.Instance.rol != Rol.ADMINISTRADOR && UsuarioModel.Instance.rol != Rol.DEV)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "No esta autorizado para realizar esta operacion", Constants.NO_AUTH)));
                }

                if (descuentoModel.Descuento == null)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "Objecto no puede estar vacio", Constants.DESCUENTO_FAIL)));
                }

                var descuento = descuentoModel.Find(descuentoModel.Descuento.Id);


                if (descuento == null)
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "No existe Descuento", Constants.DESCUENTO_FAIL)));
                }

                //si esta mal arroja una excepcion
                var factoryDescuento = BuilderFactories.Descuento(descuentoModel.Descuento.TipoDescuento, descuentoModel.Descuento.Acomulable, descuentoModel.Descuento.FechaYHoraInicio, descuentoModel.Descuento.FechaYHoraTerminación, descuentoModel.Descuento.Descu);

                descuento.Descu                 = factoryDescuento.Descu;
                descuento.TipoDescuento         = factoryDescuento.TipoDescuento;
                descuento.Acomulable            = factoryDescuento.Acomulable;
                descuento.FechaYHoraInicio      = factoryDescuento.FechaYHoraInicio;
                descuento.FechaYHoraTerminación = factoryDescuento.FechaYHoraTerminación;


                if (!descuentoModel.Update(descuento))
                {
                    return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, "Descuento no pudo Modificarse", Constants.DESCUENTO_FAIL)));
                }
                return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.NO_ERROR, "Descuento Modificado con exito", Constants.DESCUENTO_SUCCES)));
            }
            catch (Exception e)
            {
                return(Json(Mensaje <Domain.Entities.Producto.Descuento> .MensajeJson(Constants.IS_ERROR, e.Message, Constants.DESCUENTO_FAIL)));
            }
        }
        public void DescuentoFailsExceptionFechaTest()
        {
            var exc = Assert.Throws <Exception>(() => BuilderFactories.Descuento(Enum.TipoDescuento.FIJO, true, DateTime.Now, DateTime.Now, 0.5));

            Assert.That(exc.Message, Is.EqualTo("Solo se puede crear descuento para Fines de semanas"));
        }
 public void Initialize()
 {
     descuento = BuilderFactories.Descuento(Enum.TipoDescuento.FIJO, true, new DateTime(2019, 7, 20, 1, 1, 1), new DateTime(2019, 7, 21, 20, 1, 1), 0.5);
 }