コード例 #1
0
        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);
        }
コード例 #2
0
        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));
            }
        }