public void setearCliente(Cliente nuevoCliente)
        {
            this.cliente = nuevoCliente;
            tNombreChabon.Text = this.cliente.nombre + " " + this.cliente.apellido;

            CuentaRepository repo = new CuentaRepository();
            cCuenta.DataSource = new BindingSource(new BindingList<Cuenta>(repo.getCuentasByClienteId(cliente.ID)), null);
        }
        private void realizar_Click(object sender, EventArgs e)
        {
            List<string> listaDeErrores = new List<string>();
            if(cuenta.Text == "")
            {
                listaDeErrores.Add("No se seleccionó cuenta para realizar el retiro");
            }

            bool errorMonto=false;
            Decimal montoParseado;
            try
            {
                montoParseado = Decimal.Parse(monto.Text);
                if(cuenta.Text != "")
                {
                    Cuenta cuentaOrigen = new CuentaRepository().getCuentaById(Convert.ToInt64(cuenta.Text));
                    if( montoParseado > cuentaOrigen.Saldo)
                    {
                        listaDeErrores.Add("El monto supera el saldo disponible en su cuenta");
                    }
                    if(montoParseado < 0 )
                    {
                        listaDeErrores.Add("El monto es menor que cero");
                    }

                    if (montoParseado == 0)
                    {
                        listaDeErrores.Add("El monto no puede ser cero");
                    }
                }

            }
            catch (Exception)
            {
                errorMonto = !errorMonto;
            }
              if(errorMonto)
            {
                 listaDeErrores.Add("Error en el formato del monto");
            }

              if (listaDeErrores.Count > 0)
              {
                  ErrorBoxHandler.showErrors(listaDeErrores, "Errores");
              }
              else
              {
                  montoParseado = Decimal.Parse(monto.Text);
                  Cuenta cuentaOrigen = new CuentaRepository().getCuentaById(Convert.ToInt64(cuenta.Text));

                  new OperacionesRepository().realizarRetiro(cuentaOrigen.ID, (moneda.SelectedItem as Moneda).ID,
                      (bancoSeleccionado.SelectedItem as Banco).ID, montoParseado);
                  MessageBox.Show("Se procesó correctamente el retiro por "+monto.Text+", del tipo " + moneda.Text + ", a la cuenta " + cuenta.Text);
                  this.Close();
              }
        }
 private void chequearCuentas()
 {
     List<Cuenta> listaCuentas = new CuentaRepository().getCuentasByUserId(cli.ID);
     foreach (Cuenta cuenta in listaCuentas)
     {
         string id = cuenta.ID.ToString();
         if (cantidadOperacionesImpagas(cuenta.ToString()) > 5)
         {
             if (new CuentaRepository().deshabilitarCuenta(cuenta))
             {
                 new CuentaRepository().registrarDeshabilitacion(cuenta.ID);
                 MessageBox.Show("Se superaron las 5 comisiones, se inhabilitará la cuenta: " + cuenta + ". Debe abonar las comisiones adeudadas para rehabilitarla", "Demasiadas comisiones impagas", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
     }
 }
        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 double getSaldo(long numeroCuenta)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getSaldo(numeroCuenta);
 }
 public IEnumerable<Cuenta> GetAll()
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.GetAll();
 }
        private void realizar_Click(object sender, EventArgs e)
        {
            List<string> listaDeErrores = new List<string>();
            if(origen.Text == "")
            {
                listaDeErrores.Add("No se seleccionó cuenta de origen");
            }
             if(destino.Text == "")
            {
                 listaDeErrores.Add("No se seleccionó cuenta de destino");
            }
             if (destino.Text == origen.Text && destino.Text != "")
             {
                 listaDeErrores.Add("No se pueden realizar transferencias a la misma cuenta!");
             }
            bool errorMonto=false;
            Decimal montoParseado;
            try
            {
                montoParseado = Decimal.Parse(monto.Text);
                if(origen.Text != "")
                {
                    Cuenta cuentaOrigen = new CuentaRepository().getCuentaById(Convert.ToInt64(origen.Text));
                    if( montoParseado > cuentaOrigen.Saldo)
                    {
                        listaDeErrores.Add("El monto supera el saldo disponible en su cuenta");
                    }
                    if(montoParseado < 0 )
                    {
                        listaDeErrores.Add("El monto es menor que cero");
                    }

                    if (montoParseado == 0)
                    {
                        listaDeErrores.Add("El monto no puede ser cero");
                    }
                }

            }
            catch (Exception)
            {
                errorMonto = !errorMonto;
            }
              if(errorMonto)
            {
                 listaDeErrores.Add("Error en el formato del monto");
            }

              if (listaDeErrores.Count > 0)
              {
                  ErrorBoxHandler.showErrors(listaDeErrores, "Errores");
              }
              else
              {
                  Decimal costoOperacion = 0;
                  montoParseado = Decimal.Parse(monto.Text);
                  Cuenta cuentaOrigen = new CuentaRepository().getCuentaById(Convert.ToInt64(origen.Text));
                  Cuenta cuentaDestino = new CuentaRepository().getCuentaById(Convert.ToInt64(destino.Text));
                  if(cuentaDestino.Cliente.ID != cuentaOrigen.Cliente.ID)
                  {
                      costoOperacion = cuentaOrigen.TipoCuenta.CostoTransferencia;
                  }
                  new OperacionesRepository().realizarTransferencia(Convert.ToInt64(origen.Text), Convert.ToInt64(destino.Text),(moneda.SelectedItem as Moneda).ID,
                      montoParseado,costoOperacion);
                  MessageBox.Show("Se transfirieron exitosamente "+monto.Text+" del tipo " + moneda.Text + " a la cuenta " + destino.Text);
                  this.Close();
              }
        }
 public int ModificaCuenta(long numCuenta, int tipoCuenta, DateTime fecha)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.ModificaCuenta(numCuenta, tipoCuenta, fecha);
 }
 public void inhabilitarCuenta(long cuenta, DateTime fecha)
 {
     CuentaRepository repository = new CuentaRepository();
     repository.inhabilitarCuenta(cuenta, fecha);
 }
 public int InsertaCuenta(int codPais, int tipoMoneda, int tipoCuenta, long tipoDocCliente, long nroDocCliente, DateTime fecha)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.InsertaCuenta(codPais, tipoMoneda, tipoCuenta, tipoDocCliente, nroDocCliente, fecha);
 }
 public double getSaldoByCliente(long numeroCuenta, long cliente)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getSaldoByCliente(numeroCuenta, cliente);
 }
 public IEnumerable<TipoCuenta> GetTiposCuenta()
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getTiposCuenta();
 }
 public int getMonedaTipo(long numeroCuenta)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getMonedaTipo(numeroCuenta);
 }
 public int CerrarCuenta(long numCuenta, DateTime fecha)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.CerrarCuenta(numCuenta, fecha);
 }
 public long GetMaxNroCuenta()
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.GetMaxNroCuenta();
 }
 public int getEstado(long numeroCuenta)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getEstado(numeroCuenta);
 }
 public DataTable GetCuentas(long? pais, int? tipoEstado, int? moneda, int? tipoCuenta, long? nroDoc, long? tipoDoc)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.GetCuentas( pais, tipoEstado, moneda, tipoCuenta, nroDoc, tipoDoc);
 }
 public Cuenta GetCuentaByNumero(long nroCuenta)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.GetCuentaByNumero(nroCuenta);
 }
 public IEnumerable<Cuenta> getByCliente(long tipoDocCliente, long nroDocCliente)
 {
     CuentaRepository repository = new CuentaRepository();
     return repository.getByCliente(tipoDocCliente, nroDocCliente);
 }