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