示例#1
0
        public static MeleeStatisticsModel GetMeleeStats(string twitterUserId, UserType userType)
        {
            var dbContext = new MeleeMeEntities();
            IQueryable <m_MeleeStats> result     = null;
            MeleeStatisticsModel      meleeStats = null;

            using (dbContext)
            {
                switch (userType)
                {
                case UserType.Challenger:
                    result = from s in dbContext.m_MeleeStats
                             where s.m_Melee.challenger == twitterUserId
                             select s;
                    break;

                case UserType.Opponent:
                    result = from s in dbContext.m_MeleeStats
                             where s.m_Melee.opponent == twitterUserId
                             select s;
                    break;
                }

                meleeStats = new MeleeStatisticsModel
                {
                    BattleWins   = result.Count(s => s.meleeWinner == twitterUserId),
                    BattleLosses = result.Count(s => s.meleeLoser == twitterUserId)
                                   //LastMelee =  (DateTime)result.OrderBy(ts => ts.m_Melee.timestamp).Select(m => m.m_Melee.timestamp).FirstOrDefault()
                };
            }

            return(meleeStats);
        }
示例#2
0
        public Collection <ConnectionModel> Get(int id)
        {
            var dbContext   = new MeleeMeEntities();
            var connections = new Collection <ConnectionModel>();

            var result = (from cx in dbContext.m_Connections
                          join ucx in dbContext.m_UserConnections on cx.ConnectionId equals ucx.ConnectionId
                          join u in dbContext.m_User on ucx.UserId equals u.UserId
                          where u.UserId == id
                          select cx).ToList();

            foreach (var conn in result)
            {
                var c = new ConnectionModel
                {
                    ConnectionName     = conn.ConnectionName,
                    ConnectionId       = conn.ConnectionId,
                    ConnectionIcon     = conn.ConnectionIcon,
                    AccessToken        = GetAccessToken(dbContext, id, conn.ConnectionId),
                    RefreshToken       = GetRefreshToken(dbContext, id, conn.ConnectionId),
                    OAuthToken         = GetOAuthToken(dbContext, id, conn.ConnectionId),
                    ConnectionProvider = LoadConnectionProvider(conn.ConnectionProvider)
                };

                connections.Add(c);
            }

            return(connections);
        }
示例#3
0
        public static Collection <ConnectionModel> Get(string twitterUserId)
        {
            var dbContext   = new MeleeMeEntities();
            var connections = new Collection <ConnectionModel>();

            var result = (from cx in dbContext.m_Connections
                          join ucx in dbContext.m_UserConnections on cx.ConnectionId equals ucx.ConnectionId
                          join u in dbContext.m_User on ucx.UserId equals u.UserId
                          where u.TwitterUserId == twitterUserId
                          select cx).ToList();

            foreach (var conn in result)
            {
                var c = new ConnectionModel
                {
                    ConnectionName     = conn.ConnectionName,
                    ConnectionId       = conn.ConnectionId,
                    ConnectionIcon     = conn.ConnectionIcon,
                    ConnectionProvider = LoadConnectionProvider(conn.ConnectionProvider)
                };

                connections.Add(c);
            }

            return(connections);
        }
示例#4
0
        public UserModel Get(string id)
        {
            UserModel meleeUser = null;
            var       dbContext = new MeleeMeEntities();

            using (dbContext)
            {
                var mUser = (from c in dbContext.m_Credentials
                             where c.m_User.TwitterUserId == id
                             select new { c.AccessToken, c.UserId, c.m_User.ProfileImageUrl, c.m_User.ScreenName }).FirstOrDefault();

                if (mUser != null)
                {
                    meleeUser = new UserModel
                    {
                        TwitterUserId = id,
                        UserId        = mUser.UserId,
                        ImageUrl      = mUser.ProfileImageUrl,
                        ScreenName    = mUser.ScreenName,
                        AccessToken   = mUser.AccessToken,
                        Stats         = MeleeRepository.GetMeleeStats(id, UserType.Challenger),
                        Connections   = new ConnectionRepository().Get(mUser.UserId)
                    };
                }
            }

            return(meleeUser);
        }
示例#5
0
        public static string GetOAuthToken(MeleeMeEntities dbContext, int userId, int connectionId)
        {
            var userConn = (from uc in dbContext.m_UserConnections
                            where uc.UserId == userId && uc.ConnectionId == connectionId
                            select uc).Single();

            return(userConn.OAuthToken);
        }
示例#6
0
        public UserModel Add(string id, string profileImageUrl, string screenName, string token, string OAuthToken)
        {
            var newUser   = null as UserModel;
            var dbContext = new MeleeMeEntities();


            using (dbContext)
            {
                var mUser = dbContext.m_User.FirstOrDefault(mu => mu.TwitterUserId == id);

                if (mUser != null)
                {
                    var um = new UserModel
                    {
                        TwitterUserId = id,
                        UserId        = mUser.UserId,
                        ImageUrl      = profileImageUrl,
                        AccessToken   = mUser.m_Credentials.Select(at => at.AccessToken).ToString(),
                        Stats         = MeleeRepository.GetMeleeStats(id, UserType.Challenger),
                        Connections   = new ConnectionRepository().Get(mUser.UserId)
                    };

                    mUser.ProfileImageUrl = profileImageUrl;
                    mUser.ScreenName      = screenName;


                    dbContext.SaveChanges();
                    return(um);
                }

                var u = new m_User
                {
                    TwitterUserId   = id,
                    ProfileImageUrl = profileImageUrl,
                    ScreenName      = screenName
                };


                dbContext.m_User.Add(u);
                AddUserCredentials(dbContext, u, token);
                AddConnection(dbContext, u, token, OAuthToken);

                newUser = new UserModel
                {
                    TwitterUserId = id,
                    ImageUrl      = profileImageUrl,
                    ScreenName    = screenName,
                    AccessToken   = token,
                    UserId        = u.UserId,
                    Stats         = new MeleeStatisticsModel()
                };

                dbContext.SaveChanges();
                newUser.Connections = new ConnectionRepository().Get(u.UserId);
            }

            return(newUser);
        }
示例#7
0
        private static void AddUserCredentials(MeleeMeEntities dbContext, m_User u, string accessToken)
        {
            var c = new m_Credentials
            {
                UserId      = u.UserId,
                AccessToken = accessToken
            };

            dbContext.m_Credentials.Add(c);
        }
示例#8
0
        public static void AddMeleeStatistics(MeleeMeEntities dbContext, m_Melee m, string winner, string loser)
        {
            var ms = new m_MeleeStats
            {
                meleeId     = m.meleeId,
                meleeWinner = winner,
                meleeLoser  = loser
            };

            dbContext.m_MeleeStats.Add(ms);
        }
示例#9
0
        private void AddConnection(MeleeMeEntities dbContext, m_User u, string accessToken, string OAuthToken)
        {
            var conn = new m_UserConnections
            {
                UserId       = u.UserId,
                ConnectionId = (from c in dbContext.m_Connections
                                where c.ConnectionName == "Twitter"
                                select c.ConnectionId).FirstOrDefault(),
                AccessToken = accessToken,
                OAuthToken  = OAuthToken
            };

            dbContext.m_UserConnections.Add(conn);
        }
示例#10
0
        public bool Delete(int userId, int id)
        {
            var dbContext = new MeleeMeEntities();

            using (dbContext)
            {
                var userConn =
                    (from uc in dbContext.m_UserConnections
                     where uc.UserId == userId && uc.ConnectionId == id
                     select uc).FirstOrDefault();

                dbContext.m_UserConnections.Remove(userConn);
                dbContext.SaveChanges();
            }

            return(true);
        }
示例#11
0
        public void Add(string currentUser, string opponent, string winner, string loser)
        {
            var dbContext = new MeleeMeEntities();

            using (dbContext)
            {
                var m = new m_Melee
                {
                    challenger = currentUser,
                    opponent   = opponent,
                    timestamp  = DateTime.Now
                };

                dbContext.m_Melee.Add(m);
                AddMeleeStatistics(dbContext, m, winner, loser);
                dbContext.SaveChanges();
            }
        }
示例#12
0
        public ConnectionModel Add(int userId, string connectionName, string accessToken, string refreshToken)
        {
            var dbContext = new MeleeMeEntities();

            using (dbContext)
            {
                try
                {
                    var conn = (from cx in dbContext.m_Connections
                                where cx.ConnectionName == connectionName
                                select cx).FirstOrDefault();

                    var c = new m_UserConnections()
                    {
                        UserId       = userId,
                        ConnectionId = conn.ConnectionId,
                        AccessToken  = accessToken,
                        RefreshToken = refreshToken
                    };

                    var cm = new ConnectionModel
                    {
                        ConnectionName     = connectionName,
                        ConnectionId       = conn.ConnectionId,
                        AccessToken        = accessToken,
                        RefreshToken       = refreshToken,
                        ConnectionProvider = LoadConnectionProvider(connectionName + "Connection")
                    };

                    dbContext.m_UserConnections.Add(c);
                    dbContext.SaveChanges();

                    return(cm);
                }
                catch (Exception ex)
                {
                    var msg = ex.ToString();
                }
            }

            return(null);
        }