コード例 #1
0
        protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            bool IsPhoneTaken(string phone)
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("SELECT COUNT(*) AS \"COUNTER\" FROM users WHERE phone='" + phone + "'");
                MySqlDataReader reader  = dbConnection.DoQuery();
                string          counter = "";

                while (reader.Read())
                {
                    counter = reader["COUNTER"].ToString();
                }
                dbConnection.Dispose();
                return(!counter.Equals("0"));
            }

            if (value != null)
            {
                if (IsPhoneTaken(value.ToString()))
                {
                    return(new ValidationResult(ErrorMessage = "Phone Taken"));
                }
            }
            return(ValidationResult.Success);
        }
コード例 #2
0
        public ListenerGetInfoModel GetListenerInfo(string Id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT username,email,phone FROM users WHERE id='" + Id + "'");
            ListenerGetInfoModel listenerGetInfoModel = null;
            MySqlDataReader      reader = dbConnection.DoQuery();

            while (reader.Read())
            {
                listenerGetInfoModel          = new ListenerGetInfoModel();
                listenerGetInfoModel.Username = reader["username"].ToString();
                listenerGetInfoModel.Email    = reader["email"].ToString();
                listenerGetInfoModel.Phone    = reader["phone"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("listeners");
            var builder    = Builders <BsonDocument> .Filter;
            var filter     = builder.Eq("ListenerId", Id);
            var result     = collection.Find(filter).FirstOrDefault();

            if (result != null)
            {
                ListenerGetInfoModel res = BsonSerializer.Deserialize <ListenerGetInfoModel>(result);
                listenerGetInfoModel.ListenerId      = res.ListenerId;
                listenerGetInfoModel.ProfileImageUrl = res.ProfileImageUrl;
                listenerGetInfoModel.FirstName       = res.FirstName;
                listenerGetInfoModel.LastName        = res.LastName;
                listenerGetInfoModel.Dob             = res.Dob;
                listenerGetInfoModel.Region          = res.Region;
                listenerGetInfoModel.IsSubscriber    = res.IsSubscriber;
            }
            return(listenerGetInfoModel);
        }
コード例 #3
0
        public LabelGetInfoModel GetLabelInfo(string Id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT username,email,phone FROM users WHERE id='" + Id + "'");
            LabelGetInfoModel labelGetInfoModel = null;
            MySqlDataReader   reader            = dbConnection.DoQuery();

            while (reader.Read())
            {
                labelGetInfoModel          = new LabelGetInfoModel();
                labelGetInfoModel.Username = reader["username"].ToString();
                labelGetInfoModel.Email    = reader["email"].ToString();
                labelGetInfoModel.Phone    = reader["phone"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("labels");
            var builder    = Builders <BsonDocument> .Filter;
            var filter     = builder.Eq("LabelId", Id);
            var result     = collection.Find(filter).FirstOrDefault();

            if (result != null)
            {
                LabelGetInfoModel res = BsonSerializer.Deserialize <LabelGetInfoModel>(result);
                labelGetInfoModel.LabelId      = res.LabelId;
                labelGetInfoModel.LabelIconUrl = res.LabelIconUrl;
                labelGetInfoModel.LabelName    = res.LabelName;
                labelGetInfoModel.EstDate      = res.EstDate;
                labelGetInfoModel.IsVerified   = res.IsVerified;
                labelGetInfoModel.Region       = res.Region;
            }
            return(labelGetInfoModel);
        }
コード例 #4
0
        public void QuotesNames()
        {
            var connectionProvider = new MysqlConnectionProvider();
            var schemaDataProvider = new MysqlSchemaDataProvider50(connectionProvider);
            var unquoted           = "unquoted";
            var quoted             = schemaDataProvider.QuoteObjectName(unquoted);

            Assert.AreEqual("`" + unquoted + "`", quoted);
        }
コード例 #5
0
 public void SelectsExpectedSchemaDataProvider()
 {
     var connectionProvider = new MysqlConnectionProvider();
     connectionProvider.SetConnectionString(ConnectionString);
     var expectedSchemaProvider = GetExpectedSchemaProvider(connectionProvider);
     var selectedSchemaProvider = connectionProvider.GetSchemaProvider();
     //Need to figure out something more elegant here, but so far the implementation of quoting
     //separates the to strategies quite ok.
     Assert.AreEqual(expectedSchemaProvider.QuoteObjectName("name"), selectedSchemaProvider.QuoteObjectName("name"));
 }
コード例 #6
0
        public void DoesNotQuoteNames()
        {
            var connectionprovider = new MysqlConnectionProvider();

            connectionprovider.SetConnectionString(ConnectionString);
            var schemaDataProvider = new MysqlSchemaDataProvider40(connectionprovider);
            var unquoted           = "Unquoted";
            var quoted             = schemaDataProvider.QuoteObjectName(unquoted);

            Assert.AreEqual(unquoted, quoted);
        }
コード例 #7
0
        public void SelectsExpectedSchemaDataProvider()
        {
            var connectionProvider = new MysqlConnectionProvider();

            connectionProvider.SetConnectionString(ConnectionString);
            var expectedSchemaProvider = GetExpectedSchemaProvider(connectionProvider);
            var selectedSchemaProvider = connectionProvider.GetSchemaProvider();

            //Need to figure out something more elegant here, but so far the implementation of quoting
            //separates the to strategies quite ok.
            Assert.AreEqual(expectedSchemaProvider.QuoteObjectName("name"), selectedSchemaProvider.QuoteObjectName("name"));
        }
コード例 #8
0
        public bool ResetChangePassword(string id, string pass)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("UPDATE users SET pass='******' WHERE id='" + id + "'");
            if ((dbConnection.DoNoQuery()) < 1)
            {
                dbConnection.Dispose();
                return(false);
            }
            dbConnection.Dispose();
            return(true);
        }
コード例 #9
0
        public bool VerifyEmail(string id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("UPDATE users SET isemailverified='true' WHERE id='" + id + "'");
            if ((dbConnection.DoNoQuery()) < 1)
            {
                dbConnection.Dispose();
                return(false);
            }
            dbConnection.Dispose();
            return(true);
        }
コード例 #10
0
        //RESET OR CHANGE PASSWORD
        public string SendOtpForPassReset(string otp, string email)
        {
            bool IsEmailTaken(string email)
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("SELECT COUNT(*) AS \"COUNTER\" FROM users WHERE email='" + email + "'");
                MySqlDataReader reader  = dbConnection.DoQuery();
                string          counter = "";

                while (reader.Read())
                {
                    counter = reader["COUNTER"].ToString();
                }
                dbConnection.Dispose();
                return(!counter.Equals("0"));
            }

            if (!IsEmailTaken(email))
            {
                return("Email Not Found");
            }
            SendgridEmailProvider sendgridEmailProvider = new SendgridEmailProvider();

            sendgridEmailProvider.Send("*****@*****.**", "Shanty", email, "User", "Shanty - OTP", "OTP for Password Reset", "<strong>OTP: " + otp + "</strong>");
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT id,isemailverified FROM users WHERE email='" + email + "'");
            UserLoginResponseModel userLoginResponseModel = null;
            string          isEmailVerified = "";
            MySqlDataReader reader          = dbConnection.DoQuery();

            while (reader.Read())
            {
                userLoginResponseModel    = new UserLoginResponseModel();
                userLoginResponseModel.Id = reader["id"].ToString();
                isEmailVerified           = reader["isemailverified"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            if (userLoginResponseModel != null)
            {
                if (isEmailVerified == "false")
                {
                    return("Email Not Verified");
                }
                return(new JwtAuthenticationProvider().GenerateJsonWebToken(userLoginResponseModel));
            }
            return("");
        }
コード例 #11
0
        //MATCH PASSWORD
        public bool MatchPassword(string id, string pass)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT pass FROM users WHERE id='" + id + "'");
            MySqlDataReader reader = dbConnection.DoQuery();
            string          dbPass = "";

            while (reader.Read())
            {
                dbPass = reader["pass"].ToString();
            }
            dbConnection.Dispose();
            return(BCrypt.Net.BCrypt.Verify(pass, dbPass));
        }
コード例 #12
0
        public bool IsLabelOrArtist(string id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT * FROM users WHERE id='" + id + "' AND type='label' OR type='artist'");
            MySqlDataReader reader = dbConnection.DoQuery();

            if (reader.Read())
            {
                return(true);
            }
            dbConnection.Dispose();
            dbConnection = null;
            return(false);
        }
コード例 #13
0
        public string GetUserType(string id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT type FROM users WHERE id='" + id + "'");
            MySqlDataReader reader = dbConnection.DoQuery();

            if (reader.Read())
            {
                return(reader["type"].ToString());
            }
            dbConnection.Dispose();
            dbConnection = null;
            return("");
        }
コード例 #14
0
        public void ColumnDataShouldBeCached()
        {
            var table = new Table("Users", null, TableType.Table);

            var realConnectionProvider = new MysqlConnectionProvider();

            realConnectionProvider.SetConnectionString(ConnectionString);
            var proxiedConnectionProvider = A.Fake <IConnectionProvider>((o) => o.Wrapping(realConnectionProvider));

            var schemaDataProvider = new MysqlSchemaDataProvider40(proxiedConnectionProvider);

            Enumerable.ToList(schemaDataProvider.GetColumnsFor(table));
            Enumerable.ToList(schemaDataProvider.GetColumnsFor(table));
            Enumerable.ToList(schemaDataProvider.GetColumnsFor(table));
            Enumerable.ToList(schemaDataProvider.GetColumnsFor(table));
            A.CallTo(() => proxiedConnectionProvider.CreateConnection()).MustHaveHappened(Repeated.Exactly.Once);
        }
コード例 #15
0
        //ARTIST REGISTRATION
        public bool RegisterArtist(ArtistGlobalModel artist)
        {
            bool InsertArtistMysql()
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("INSERT INTO users(id, username, email, phone, pass, type, isemailverified) VALUES ('" + artist.Id + "','" + artist.Username + "','" + artist.Email + "','" + artist.Phone + "','" + artist.Pass + "','" + artist.Type + "','" + artist.IsEmailVerified + "')");
                if ((dbConnection.DoNoQuery()) < 1)
                {
                    dbConnection.Dispose();
                    return(false);
                }
                dbConnection.Dispose();
                return(true);
            }

            bool InsertArtistMongo()
            {
                try
                {
                    var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("artists");
                    var document   = new BsonDocument
                    {
                        { "ArtistId", artist.Id },
                        { "ProfileImageUrl", artist.ProfileImageUrl },
                        { "FirstName", artist.FirstName },
                        { "LastName", artist.LastName },
                        { "Dob", artist.Dob },
                        { "Region", artist.Region },
                        { "LabelId", artist.LabelId },
                        { "IsVerified", artist.IsVerified }
                    };
                    collection.InsertOne(document);
                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(InsertArtistMysql() && InsertArtistMongo());
        }
コード例 #16
0
        //LISTENER REGISTRATION
        public bool RegisterListener(ListenerGlobalModel listener)
        {
            bool InsertListenerMysql()
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("INSERT INTO users(id, username, email, phone, pass, type, isemailverified) VALUES ('" + listener.Id + "','" + listener.Username + "','" + listener.Email + "','" + listener.Phone + "','" + listener.Pass + "','" + listener.Type + "','" + listener.IsEmailVerified + "')");
                if ((dbConnection.DoNoQuery()) < 1)
                {
                    dbConnection.Dispose();
                    return(false);
                }
                dbConnection.Dispose();
                return(true);
            }

            bool InsertListenerMongo()
            {
                try
                {
                    var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("listeners");
                    var document   = new BsonDocument
                    {
                        { "ListenerId", listener.Id },
                        { "ProfileImageUrl", listener.ProfileImageUrl },
                        { "FirstName", listener.FirstName },
                        { "LastName", listener.LastName },
                        { "Dob", listener.Dob },
                        { "Region", listener.Region },
                        { "IsSubscriber", listener.IsSubscriber }
                    };
                    collection.InsertOne(document);
                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(InsertListenerMysql() && InsertListenerMongo());
        }
コード例 #17
0
        public void CanProvideAllColumnsFromTable()
        {
            var table           = new Table("users", null, TableType.Table);
            var expectedColumns = new List <Column>
            {
                new Column("Id", table, true, DbType.Int32, 11),
                new Column("Name", table, false, DbType.String, 255),
                new Column("Password", table, false, DbType.String, 255),
                new Column("Age", table, false, DbType.Int32, 11)
            };
            var connectionProvider = new MysqlConnectionProvider();

            connectionProvider.SetConnectionString(ConnectionString);

            var schemaDataProvider = new MysqlSchemaDataProvider40(connectionProvider);
            var columns            = schemaDataProvider.GetColumnsFor(table).Select(c => new Column(c.Name, table, c.IsAutoincrement, c.DbType, c.Capacity));

            Assert.AreEqual(expectedColumns.Count, columns.Count());
            columns.Should().Contain(expectedColumns);
        }
コード例 #18
0
        //LABEL REGISTRTION
        public bool RegisterLabel(LabelGlobalModel label)
        {
            bool InsertLabelMysql()
            {
                MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

                dbConnection.CreateQuery("INSERT INTO users(id, username, email, phone, pass, type, isemailverified) VALUES ('" + label.Id + "','" + label.Username + "','" + label.Email + "','" + label.Phone + "','" + label.Pass + "','" + label.Type + "','" + label.IsEmailVerified + "')");
                if ((dbConnection.DoNoQuery()) < 1)
                {
                    dbConnection.Dispose();
                    return(false);
                }
                dbConnection.Dispose();
                return(true);
            }

            bool InsertLabelMongo()
            {
                try
                {
                    var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("labels");
                    var document   = new BsonDocument
                    {
                        { "LabelId", label.Id },
                        { "LabelIconUrl", label.LabelIconUrl },
                        { "LabelName", label.LabelName },
                        { "EstDate", label.EstDate },
                        { "Region", label.Region },
                        { "IsVerified", label.IsVerified }
                    };
                    collection.InsertOne(document);
                    return(true);
                }
                catch (Exception)
                {
                    return(false);
                }
            }

            return(InsertLabelMysql() && InsertLabelMongo());
        }
コード例 #19
0
        public void CanGetTables()
        {
            var expectedTables = new List <Table>
            {
                new Table("customers", null, TableType.Table),
                new Table("items", null, TableType.Table),
                new Table("items_fk_test", null, TableType.Table),
                new Table("orderitems_fk_test", null, TableType.Table),
                new Table("orderitems", null, TableType.Table),
                new Table("orders", null, TableType.Table),
                new Table("orders_fk_test", null, TableType.Table),
                new Table("users", null, TableType.Table)
            };
            var connectionProvider = new MysqlConnectionProvider();

            connectionProvider.SetConnectionString(ConnectionString);

            var schemaDataProvider = new MysqlSchemaDataProvider40(connectionProvider);
            var tables             = schemaDataProvider.GetTables();

            tables.Should().Contain(expectedTables);
        }
コード例 #20
0
        //USER LOGIN
        public string LoginUser(string email, string pass)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT id,pass,isemailverified FROM users WHERE email='" + email + "'");
            UserLoginResponseModel userLoginResponseModel = null;
            string          passFromDb      = "";
            string          isEmailVerified = "";
            MySqlDataReader reader          = dbConnection.DoQuery();

            while (reader.Read())
            {
                userLoginResponseModel    = new UserLoginResponseModel();
                userLoginResponseModel.Id = reader["id"].ToString();
                passFromDb      = reader["pass"].ToString();
                isEmailVerified = reader["isemailverified"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            if (userLoginResponseModel != null)
            {
                if (BCrypt.Net.BCrypt.Verify(pass, passFromDb))
                {
                    if (isEmailVerified == "false")
                    {
                        return("Email Not Verified");
                    }
                    return(new JwtAuthenticationProvider().GenerateJsonWebToken(userLoginResponseModel));
                }
                else
                {
                    return("");
                }
            }
            return("");
        }
コード例 #21
0
        public ArtistGetInfoModel GetArtistInfo(string Id)
        {
            MysqlConnectionProvider dbConnection = new MysqlConnectionProvider();

            dbConnection.CreateQuery("SELECT username,email,phone FROM users WHERE id='" + Id + "'");
            ArtistGetInfoModel artistGetInfoModel = null;
            MySqlDataReader    reader             = dbConnection.DoQuery();

            while (reader.Read())
            {
                artistGetInfoModel          = new ArtistGetInfoModel();
                artistGetInfoModel.Username = reader["username"].ToString();
                artistGetInfoModel.Email    = reader["email"].ToString();
                artistGetInfoModel.Phone    = reader["phone"].ToString();
            }
            dbConnection.Dispose();
            dbConnection = null;
            var collection = new MongodbConnectionProvider().GeShantyDatabase().GetCollection <BsonDocument>("artists");
            var builder    = Builders <BsonDocument> .Filter;
            var filter     = builder.Eq("ArtistId", Id);
            var result     = collection.Find(filter).FirstOrDefault();

            if (result != null)
            {
                ArtistGetInfoModel res = BsonSerializer.Deserialize <ArtistGetInfoModel>(result);
                artistGetInfoModel.ArtistId        = res.ArtistId;
                artistGetInfoModel.ProfileImageUrl = res.ProfileImageUrl;
                artistGetInfoModel.FirstName       = res.FirstName;
                artistGetInfoModel.LastName        = res.LastName;
                artistGetInfoModel.Dob             = res.Dob;
                artistGetInfoModel.Region          = res.Region;
                artistGetInfoModel.IsVerified      = res.IsVerified;
                artistGetInfoModel.LabelId         = res.LabelId;
            }
            return(artistGetInfoModel);
        }
コード例 #22
0
 public AlbumDataAccess()
 {
     dbConnection = new MysqlConnectionProvider();
 }