// 4. Seleccionar una cuenta y mostrar su contenido. protected void btnSeleccionCuenta_Click(object sender, EventArgs e) { string accountNumber = ddlCuentaDeBanco.Text.Substring(0, 19); openAccount.CheckSavingsAccountRelease(); openAccount.CheckDepositAccountRelease(accountNumber); bankAccount = bankAccount.GetBankAccount(accountNumber); txtResumenNombre.Text = bankAccount.Name; txtResumenNumero.Text = bankAccount.Number; txtResumenSaldoTotal.Text = $"$ {bankAccount.Balance:0.00}"; txtResumenFechaApertura.Text = bankAccount.OpeningDate.ToString(); foreach (var account in openAccount.GetOpenAccountsList(accountNumber)) { string accountStatus = account.Status == 1 ? "Activa" : "Inactiva"; // 0. Cuenta Corriente. if (account.AccountType == 0) { txtResumenEstadoCC.Text = accountStatus; txtEstadoCC.Text = accountStatus; txtResumenOperacionesCC.Text = account.Movements.ToString(); txtResumenTotalCC.Text = $"$ {account.Balance:0.00}"; if (account.Status == 1) { txtResumenEstadoCC.ForeColor = Color.MediumSeaGreen; txtEstadoCC.ForeColor = Color.MediumSeaGreen; } else { txtResumenEstadoCC.ForeColor = Color.Crimson; txtEstadoCC.ForeColor = Color.Crimson; } // Habilitando reactivación para cuenta corriente. if (account.Status == 2) { lblAvisoActivacionCC.Text = "AVISO: Esta cuenta dispone una " + "solicitud de reactivación."; btnActivarCC.Enabled = true; } else { lblAvisoActivacionCC.Text = ""; btnActivarCC.Enabled = false; } } // 1. Cuenta de Ahorro. if (account.AccountType == 1) { txtEstadoCA.Text = accountStatus; txtResumenEstadoCA.Text = accountStatus; txtResumenInteresCA.Text = $"{account.InterestRate * 100:0.00} %"; txtResumenOperacionesCA.Text = account.Movements.ToString(); txtResumenTotalCA.Text = $"$ {account.Balance:0.00}"; txtInteresCA.Text = $"{account.InterestRate * 100:0.00} %"; if (account.Status == 1) { txtResumenEstadoCA.ForeColor = Color.MediumSeaGreen; txtEstadoCA.ForeColor = Color.MediumSeaGreen; } else { txtResumenEstadoCA.ForeColor = Color.Crimson; txtEstadoCA.ForeColor = Color.Crimson; } // Habilitando reactivación para cuenta de ahorro. if (account.Status == 2) { lblAvisoActivacionCA.Text = "AVISO: Esta cuenta dispone una " + "solicitud de reactivación."; btnActivarCA.Enabled = true; } else { lblAvisoActivacionCA.Text = ""; btnActivarCA.Enabled = false; } } // 2. Cuenta de depósitos. if (account.AccountType == 2) { txtEstadoDP.Text = accountStatus; txtResumenDepositosActivosDP.Text = account.ActiveDeposits.ToString(); txtResumenEstadoDP.Text = accountStatus; txtResumenOperacionesDP.Text = account.Movements.ToString(); txtResumenTotalDP.Text = $"$ {account.Balance:0.00}"; if (account.Status == 1) { txtResumenEstadoDP.ForeColor = Color.MediumSeaGreen; txtEstadoDP.ForeColor = Color.MediumSeaGreen; } else { txtResumenEstadoDP.ForeColor = Color.Crimson; txtEstadoDP.ForeColor = Color.Crimson; } } } ShowTransactions(accountNumber); lblAvisoRegistrarCuenta.Text = ""; }
// 6. Cuenta Corriente - Retirar. protected void btnRetirarCC_Click(object sender, EventArgs e) { string accountNumber = txtResumenNumero.Text; // INICIO - - - Validaciones - - - // 1. Decimales o enteros positivos únicamente. if (!(Regex.Match(txtMontoCC.Text.ToString(), @"^(0*[1-9][0-9]*(\.[0-9]*)?|0*\.[0-9]*[1-9][0-9]*)$").Success)) { ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); lblAvisoTransaccionCC.Text = "Ingrese un monto válido."; return; } // 2. Límite máximo de 400 USD por retiro. if (Convert.ToDouble(txtMontoCC.Text) > 400) { ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); lblAvisoTransaccionCC.Text = "Esta operación excede el límite de retiro por transacción (400 USD)."; return; } // * Obtener balance actual. double currentBalance = 0; foreach (var account in openAccount.GetOpenAccountsList(accountNumber)) { if (account.AccountType == 0) { currentBalance = account.Balance; } } // 3. El valor de retiro no puede ser mayor al saldo actual. if (Convert.ToDouble(txtMontoCC.Text) > currentBalance) { ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); lblAvisoTransaccionCC.Text = "El monto a retirar excede el saldo disponible."; return; } // 4. Límite máximo de 1000 USD en retiro por día. double totalThisDay = 0; foreach (var t in transaction.GetAccountTransactions(accountNumber, 0)) { if (t.SubmitDate.Date == DateTime.Today && t.TransactionType == "Retiro") { totalThisDay += t.Amount; } } if ((totalThisDay + Convert.ToDouble(txtMontoCC.Text)) > 1000) { ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); lblAvisoTransaccionCC.Text = "Esta operación excede el límite de retiro por día (1000 USD)"; return; } // 5. Saldo pendiente es inferior a 1 USD - Consultar si desea proceder y desactivar cuenta. if ((currentBalance - Convert.ToDouble(txtMontoCC.Text)) < 1) { ClientScript.RegisterStartupScript(typeof(Page), "Confirm", "<script type='text/javascript'>callConfirmCC();</script>"); ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); return; } // FIN - - - Validaciones - - - double amount = Convert.ToDouble(txtMontoCC.Text); transaction.RegisterTransactionCC(accountNumber, "Retiro", amount); ShowBankAccountData(accountNumber); CheckAcountStatus(accountNumber); txtMontoCC.Text = ""; }