Exemple #1
0
        public async Task <Promocion> UpdatePromocion(PromocionUpdateDTO dto)
        {
            var promo = await _DbContext.Promociones.Where(p => p.Id == dto.Id).SingleOrDefaultAsync();

            if (promo == null)
            {
                throw new EntityNotFoundException(nameof(Promocion), dto.Id.ToString());
            }

            if (!ValidarCategorias(dto.ProductoCategoriaIds))
            {
                throw new InvalidCategoriaException(String.Join(",", dto.ProductoCategoriaIds.Select(p => p.ToString())));
            }

            if (!ValidarMediosPago(dto.MedioPagoIds))
            {
                throw new InvalidMedioPagoException(String.Join(",", dto.MedioPagoIds.Select(p => p.ToString())));
            }



            //_mapper.Map<PromocionUpdateDTO,Promocion>(dto, promo);
            promo.MedioPagoIds         = dto.MedioPagoIds;
            promo.EntidadFinancieraIds = dto.EntidadFinancieraIds;
            promo.ProductoCategoriaIds = dto.ProductoCategoriaIds;
            promo.TipoMedioPagoIds     = dto.TipoMedioPagoIds;

            if (dto.MaxCantidadDeCuotas != null)
            {
                promo.MaxCantidadDeCuotas = dto.MaxCantidadDeCuotas;
            }
            if (dto.PorcentajeDecuento != null)
            {
                promo.PorcentajeDecuento = dto.PorcentajeDecuento;
            }

            promo.FechaModificacion = _datetime.Now;

            _DbContext.Update(promo);

            await _DbContext.SaveChangesAsync();

            return(promo);
        }
 public async Task <IActionResult> ModificarPromocion([FromBody] PromocionUpdateDTO dto)
 {
     try
     {
         return(Ok(await _context.UpdatePromocion(dto)));
     }
     catch (EntityNotFoundException)
     {
         return(NotFound("No se encontraron promociones con el Id: " + dto.Id));
     }
     catch (InvalidCategoriaException e)
     {
         return(BadRequest(e.Message));
     }
     catch (InvalidMedioPagoException ex)
     {
         return(BadRequest(ex.Message));
     }
 }
        public async void ModificarPromociones_ShouldReturnOk()
        {
            Mock <ProductosManager> mokPR = new Mock <ProductosManager>();

            mokPR.Setup(x => x.GetCategorias()).Returns(testDataCategorias);

            Mock <MedioPagoManager> mokMP = new Mock <MedioPagoManager>();

            mokMP.Setup(x => x.GetMedioPago(1)).Returns(testDataMediosPago[0]);
            mokMP.Setup(x => x.GetMedioPago(2)).Returns(testDataMediosPago[1]);
            mokMP.Setup(x => x.GetMedioPago(3)).Returns(testDataMediosPago[2]);
            mokMP.Setup(x => x.GetMedioPago(4)).Returns(testDataMediosPago[3]);
            mokMP.Setup(x => x.GetMedioPago(5)).Returns(testDataMediosPago[4]);

            Mock <IDateTime> mockDateTimeNow = new Mock <IDateTime>();

            mockDateTimeNow.Setup(x => x.Now).Returns(new DateTime(2018, 02, 01));


            var controller         = new PromocionesController(new PromocionesManager(context, mockDateTimeNow.Object, mokPR.Object, mokMP.Object));
            var registroModificado = new List <int> {
                1
            };
            var dataModificar = new PromocionUpdateDTO()
            {
                Id = 1,
                TipoMedioPagoIds     = null,
                EntidadFinancieraIds = null,
                MedioPagoIds         = registroModificado,
                ProductoCategoriaIds = new List <int> {
                    1, 2, 3, 4, 5, 6
                },
                MaxCantidadDeCuotas = 12,
                PorcentajeDecuento  = 15
            };

            var result = await controller.ModificarPromocion(dataModificar);

            var dataModificada = context.Promociones.SingleOrDefault(x => x.Id == dataModificar.Id);

            Assert.True(result is OkObjectResult);
            Assert.True(registroModificado[0].Equals(dataModificada.MedioPagoIds[0]));
        }