public IList <Transaccion> TraerCuponesPorTarjetaAnioYMes(int tarjetaId, int anio, int mes)
        {
            var cupones = TransaccionRepository.GetAll().Where(x => x.Tarjeta.Id == tarjetaId &&
                                                               x.FechaCompra.Year == anio && x.FechaCompra.Month == mes);

            return(cupones.ToList());
        }
        public bool ExisteCupon(int tarjetaId, DateTime fechaCupon, int comercioId, int nroCupon)
        {
            var cupones = TransaccionRepository.GetAll().Where(x => x.Tarjeta.Id == tarjetaId &&
                                                               x.Comercio.Id == comercioId &&
                                                               x.NumeroCupon == nroCupon).ToList();

            return(cupones.Any(x => x.FechaCompra.AbsoluteStart() == fechaCupon.AbsoluteStart()));
        }
        public void EliminarCupon(int transaccionId)
        {
            var cupon = TransaccionRepository.GetById(transaccionId);

            if (cupon == null)
            {
                return;
            }
            EliminarCuotasDeCupon(cupon);
            TransaccionRepository.Remove(cupon);
        }
        public long Facturar(IList<ItemFactura> itemsAFacturar, Cliente cliente)
        {
            long nroFactura;
            FacturacionRepository repo = new FacturacionRepository();
            TransaccionRepository repoTrans = new TransaccionRepository();
            CuentaRepository repoCuenta = new CuentaRepository();
            using (var transaction = new TransactionScope())
            {
                Factura factura = new Factura
                {
                    clienteNumeroDoc = cliente.numeroDocumento,
                    clienteTipoDoc = cliente.tipoDocumento,
                    fecha = Session.Fecha
                };

                nroFactura = repo.GenerarFactura(factura);

                itemsAFacturar.ToList().ForEach(i => i.facturaNumero = nroFactura);
                var itemsTransferencia = itemsAFacturar.Where(i => (TiposTransaccionEnum)i.tipo == TiposTransaccionEnum.Transferencia).ToList();
                if (itemsTransferencia.Any())
                {
                    repo.AgregarItemsTransferencia(itemsTransferencia);
                }
                var itemsApertura = itemsAFacturar.Where(i => (TiposTransaccionEnum)i.tipo == TiposTransaccionEnum.AperturaCuenta).ToList();
                if (itemsApertura.Any())
                {
                    repo.AgregarItemsApertura(itemsApertura);
                    repoCuenta.HabilitarCuentas(itemsApertura);
                }
                var itemsModificacion = itemsAFacturar.Where(i => (TiposTransaccionEnum)i.tipo == TiposTransaccionEnum.ModifCuenta).ToList();
                if (itemsModificacion.Any())
                {
                    repo.AgregarItemsModificacion(itemsModificacion);
                    repoCuenta.ActualizarCuentasModif(itemsModificacion);
                }

                var cuentas = itemsAFacturar.Select(i => i.cuenta).Distinct().ToList();
                cuentas.ForEach(repoTrans.ValidarCantidadTransacciones);

                transaction.Complete();
                transaction.Dispose();
            }

            return nroFactura;
        }
 public IEnumerable<Transaccion> getTransferenciasSinFacturar(long tipoDoc, long numeroDoc)
 {
     TransaccionRepository repo = new TransaccionRepository();
     return repo.getTransferenciasSinFacturar(tipoDoc, numeroDoc);
 }
 public int GetCountTransaccionesByCuenta(long cuenta)
 {
     TransaccionRepository repo = new TransaccionRepository();
     return repo.GetCountTransaccionesByCuenta(cuenta);
 }
 public Transaccion TraerCuponPorId(int cuponId)
 {
     return(TransaccionRepository.GetById(cuponId));
 }
        public IList <Transaccion> TraerCuponesPorTarjeta(int tarjetaId)
        {
            var cupones = TransaccionRepository.GetAll().Where(x => x.Tarjeta.Id == tarjetaId);

            return(cupones.ToList());
        }