Exemple #1
0
        public bool RegistrarUsuario(USUARIO usuario)
        {
            using (bancoEntities ctx = new bancoEntities())
            {
                try
                {
                    // Validar que el correo electrónico no exista
                    StringBuilder sql = new StringBuilder();
                    sql.Append("select count(email) as total from USUARIO ");
                    sql.Append("where email = '" + usuario.email + "'");

                    int existeEmail = ctx.Database.SqlQuery <int>(sql.ToString()).FirstOrDefault();

                    if (existeEmail > 0)
                    {
                        throw new Exception("El email esta siendo usado por otro usuario.");
                    }


                    // Validar que el documento no este siendo usado
                    sql = new StringBuilder();
                    sql.Append("select count(identificacion) as total from USUARIO ");
                    sql.Append("where identificacion = '" + usuario.identificacion + "'");

                    int existeIdentificacion = ctx.Database.SqlQuery <int>(sql.ToString()).FirstOrDefault();

                    if (existeIdentificacion > 0)
                    {
                        throw new Exception("La identificación está siendo usada por otro usuario.");
                    }


                    ctx.Entry(usuario).State = EntityState.Added;
                    ctx.SaveChanges();
                    var LastIdInsert = usuario.id_usuario;

                    var random        = new Random();
                    int randomAccount = random.Next();

                    sql = new StringBuilder();
                    sql.Append("insert into CUENTA ");
                    sql.Append("(id_usuario, numero_cuenta, saldo) ");
                    sql.Append("VALUES ('" + LastIdInsert + "', '" + randomAccount + "', " + 1000000 + ")");

                    var result = ctx.Database.ExecuteSqlCommand(sql.ToString());

                    return(true);
                }
                catch (Exception)
                {
                    throw;
                }
            }
        }
Exemple #2
0
        public bool Transferencia(Transferencia transfer)
        {
            using (bancoEntities ctx = new bancoEntities())
            {
                try
                {
                    // Se debe iniciar una transacción, para garantizar que la operación se lleve a cabo exitosamente
                    // En caso de ur error, realizar un rollback
                    using (TransactionScope scope = new TransactionScope())
                    {
                        StringBuilder sql = new StringBuilder();

                        // Validar que la cuenta de origen posea en su saldo la cantidad a transferir.

                        sql.Append("select saldo from CUENTA ");
                        sql.Append("where numero_cuenta = '" + transfer.CuentaOrigen + "'");

                        int saldoDisponible = ctx.Database.SqlQuery <int>(sql.ToString()).FirstOrDefault();
                        if (saldoDisponible >= transfer.Cantidad)
                        {
                            // Restamos la cantidad a transferir de la cuenta de origen
                            sql = new StringBuilder();
                            sql.Append("update CUENTA ");
                            sql.Append("set saldo = (saldo - " + transfer.Cantidad + ") ");
                            sql.Append("where numero_cuenta = " + transfer.CuentaOrigen);

                            int updateSaldoOrigen = ctx.Database.ExecuteSqlCommand(sql.ToString());

                            if (updateSaldoOrigen == 1)
                            {
                                // Incrementamos el saldo de la cuemnta de destino
                                sql = new StringBuilder();
                                sql.Append("update CUENTA ");
                                sql.Append("set saldo = (saldo + " + transfer.Cantidad + ") ");
                                sql.Append("where numero_cuenta = " + transfer.CuentaDestino);

                                int updateSaldoDestino = ctx.Database.ExecuteSqlCommand(sql.ToString());
                            }
                        }
                        else
                        {
                            throw new Exception();
                        }
                        scope.Complete();
                    }
                    return(true);
                }
                catch (Exception e)
                {
                    throw;
                }
            }
        }
Exemple #3
0
        public USUARIO ValidarLogin(USUARIO usuario)
        {
            using (bancoEntities ctx = new bancoEntities())
            {
                try
                {
                    StringBuilder sql = new StringBuilder();

                    sql.Append("select * from USUARIO ");
                    sql.Append("where email = '" + usuario.email + "' and clave = '" + usuario.clave + "'");

                    var result = ctx.Database.SqlQuery <USUARIO>(sql.ToString()).FirstOrDefault();
                    return(result);
                }
                catch (Exception e)
                {
                    throw;
                }
            }
        }