public async Task <Promocion> InsertPromocion(PromocionInsertDTO dto) { 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()))); } var overlapping = GetOverlappingDates(dto.FechaInicio, dto.FechaFin); if (overlapping.Count() > 0) { var result = overlapping. Where(x => (x.MedioPagoIds == null || JoinedLists(x.MedioPagoIds, dto.MedioPagoIds).Count() > 0) && (x.TipoMedioPagoIds == null || JoinedLists(x.TipoMedioPagoIds, dto.TipoMedioPagoIds).Count() > 0)).ToList(); if (result.Count() > 0) { throw new DuplicidadException(); } } Promocion promo = new Promocion() { Activo = true, EntidadFinancieraIds = dto.EntidadFinancieraIds, FechaFin = dto.FechaFin, FechaCreacion = _datetime.Now, FechaInicio = dto.FechaInicio, MaxCantidadDeCuotas = dto.MaxCantidadDeCuotas, MedioPagoIds = dto.MedioPagoIds, PorcentajeDecuento = dto.PorcentajeDecuento, ProductoCategoriaIds = dto.ProductoCategoriaIds, TipoMedioPagoIds = dto.TipoMedioPagoIds }; DateTime startDt = dto.FechaInicio; DateTime endDt = dto.FechaFin; _DbContext.Add(promo); await _DbContext.SaveChangesAsync(); return(promo); }
public async Task <IActionResult> CrearPromocion([FromBody] PromocionInsertDTO dto) { try { var promo = await _context.InsertPromocion(dto); return(Created("api/Promociones/" + promo.Id, promo)); } catch (InvalidCategoriaException e) { return(BadRequest(e.Message)); } catch (InvalidMedioPagoException ex) { return(BadRequest(ex.Message)); } catch (DuplicidadException exc) { return(BadRequest(exc.Message)); } }