Exemple #1
0
        // 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 = "";
        }