Пример #1
0
 // Returns game chat rooms the user has any connections subscribed to to open them on page load.
 public static IList<ChatRoom> GetUserGameRooms(string userId, bool exceptDefaultRoom = false)
 {
     using (var context = new MagicDbContext())
     {
         return context.ChatRoomConnections.Where(rc => rc.UserId == userId).Select(rc => rc.ChatRoom).Distinct().Where(r => r.IsGameRoom).ToList();
     }
 }
Пример #2
0
        private void GetStock(string id)
        {
            var             dbContext  = new MagicDbContext();
            MagicRepository repository = new MagicRepository(dbContext);

            stock = repository.GetStock(int.Parse(id));
        }
        private void LoadAllStocks()
        {
            var             dbContext  = new MagicDbContext();
            MagicRepository repository = new MagicRepository(dbContext);

            stocks = repository.GetAllStocks();
        }
Пример #4
0
 public List<string> GetPlayerGameConnections(string gameId)
 {
     var userId = Context.User.Identity.GetUserId();
     using (var context = new MagicDbContext())
     {
         return context.Connections.Where(c => c.UserId == userId && c.GameId == gameId).Select(c => c.Id).ToList();
     }
 }
Пример #5
0
 // Returns chat rooms in which user's online visibility is listed.
 public static IList<ChatRoom> GetChatRoomsWithUser(string userId)
 {
     using (var context = new MagicDbContext())
     {
         var chatRooms = context.ChatRoomUsers.Where(ru => ru.UserId == userId).Select(rc => rc.ChatRoom).ToList();
         return chatRooms;
     }
 }
Пример #6
0
 private void ProcessSet(string response)
 {
     Clients.Caller.updateRequestProgress("Processing set data...");
     var set = JsonConvert.DeserializeObject<CardSet>(response, new CardSetConverter());
     using (var context = new MagicDbContext())
     {
         context.InsertOrUpdate(set);
     }
     Clients.Caller.updateRequestProgress("Set data saved!");
 }
Пример #7
0
        private static void ClearDatabase()
        {
            using (var dbContext = new MagicDbContext())
            {
                MagicRepository repository = new MagicRepository(dbContext);
                bool            status     = repository.ClearDatabase();


                Console.WriteLine("Database Cleared: " + status);
            }
        }
Пример #8
0
        private static void RemoveDuplicates()
        {
            using (var dbContext = new MagicDbContext())
            {
                MagicRepository repository = new MagicRepository(dbContext);
                bool            status     = repository.RemoveDuplicates();


                Console.WriteLine("Duplicates Removed: " + status);
            }
        }
Пример #9
0
 // Returns non-game chat rooms the user has any connections subscribed to to open them on page load.
 public static IList<ChatRoom> GetUserChatRooms(string userId, bool exceptDefaultRoom = false)
 {
     using (var context = new MagicDbContext())
     {
         var chatRooms = context.ChatRoomConnections.Where(rc => rc.UserId == userId).Select(rc => rc.ChatRoom).Distinct().Where(r => !r.IsGameRoom).ToList();
         if (exceptDefaultRoom)
         {
             chatRooms.Remove(chatRooms.FirstOrDefault(r => r.Id == DefaultRoomId));
         }
         return chatRooms;
     }
 }
Пример #10
0
        // Returns user's friends and currently online users to populate the available user list when you want to create a chat room with multiple user's.
        public static IList<ChatUserViewModel> GetAvailableUsers(string userId)
        {
            using (var context = new MagicDbContext())
            {
                var userWithRelations = context.Users.Where(u => u.Id == userId).Include(u => u.Relations.Select(r => r.RelatedUser)).First();
                var usersFriends = userWithRelations.GetFriendsList().OrderBy(u => u.UserName);

                var defaultChatRoom = context.ChatRooms.Where(r => r.Id == DefaultRoomId).Include(r => r.Connections.Select(u => u.User)).First();
                var activeUsers = defaultChatRoom.GetActiveUserList().OrderBy(u => u.UserName).ToList();

                activeUsers.Remove(activeUsers.First(u => u.Id == userId));
                return usersFriends.Union(activeUsers, new ChatUserViewModel_UserComparer()).ToList();
            }
        }
Пример #11
0
        private static void AddStocksToDatabase(List <Stock> stocks, int marketCap)
        {
            using (var dbContext = new MagicDbContext())
            {
                MagicRepository repository = new MagicRepository(dbContext);
                foreach (Stock stock in stocks)
                {
                    stock.MagicFormulaMarketCap = marketCap;
                    repository.Add(stock);
                }

                bool b = repository.Save();
                Console.WriteLine("Save status" + b);
            }
        }
Пример #12
0
 public void AddCard(string cardId, PlayerCardLocation location)
 {
     using (var context = new MagicDbContext())
     {
         var card = context.Cards.Find(cardId);
         Cards.Add(new PlayerCard
         {
             Card = card,
             GameId = GameId,
             UserId = UserId,
             Index = Cards.Count + 1,
             Location = location,
         });
         context.InsertOrUpdate(this);
     }
 }
Пример #13
0
        static void GetDataFromGuruFocus()
        {
            Console.WriteLine("*****Started Rule One ......");
            IWebDriver driver = new ChromeDriver();

            using (var dbContext = new MagicDbContext())
            {
                MagicRepository repository = new MagicRepository(dbContext);
                var             stocks     = repository.GetGuruFocusStocks();
                foreach (Stock stock in stocks)
                {
                    GuruFocus.Start(driver, stock);
                    repository.Save();
                }
            }
            driver.Close();
            driver.Quit();
        }
Пример #14
0
 private async void ProcessCards(string response)
 {
     Clients.Caller.updateRequestProgress("Processing card data...");
     var cards = JArray.Parse(response).Select(c => JsonConvert.DeserializeObject<Card>(c.ToString(), new CardConverter())).ToList();
     foreach (var card in cards)
     {
         var path = FetchCardImage(card.MultiverseId, card.Id);
         using (var context = new MagicDbContext())
         {
             card.AssignTypes(context);
             card.DecodeManaCost(context);
             card.Image = await path;
             card.ImagePreview = card.Image.Replace(".jpg", ".jpeg");
             context.InsertOrUpdate(card);
         }
     }
     Clients.Caller.updateRequestProgress("Card data saved!");
 }
Пример #15
0
        public void TogglePlayerReady(string gameId, bool isReady)
        {
            var userId = Context.User.Identity.GetUserId();

            using (var context = new MagicDbContext())
            {
                var player = context.Players.Find(userId, gameId);
                //DisplayPlayerReady(player.User, gameId, isReady);
                player.Status = isReady ? PlayerStatus.Ready : PlayerStatus.Unready;
                context.InsertOrUpdate(player, true);
                Clients.Group(gameId).togglePlayerReady(player.User.UserName, (isReady ? player.User.ColorCode : ""));

                var chatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
                chatHubContext.Clients.Group(gameId).addMessage(gameId, DateTime.Now.ToString("HH:mm:ss"), player.User.UserName, player.User.ColorCode,
                    (isReady ? " is ready for action." : " seems to be not prepared!"));

                if (!isReady || (player.Game.Players.Count(p => p.Player.Status == PlayerStatus.Ready) != player.Game.PlayerCapacity)) return;

                StartGame(gameId);
            }

        }
Пример #16
0
        static void GetDataFromRuleOne(string username, string password)
        {
            Console.WriteLine("*****Started Rule One ......");
            IWebDriver driver = new ChromeDriver();

            RuleOne.RuleOneWebsite_Logon(driver, username, password);
            System.Threading.Thread.Sleep(1000);

            using (var dbContext = new MagicDbContext())
            {
                MagicRepository repository = new MagicRepository(dbContext);
                var             stocks     = repository.GetRuleOneStocks();
                foreach (Stock stock in stocks)
                {
                    RuleOne.Start(driver, stock);
                    repository.Save();
                }
            }

            driver.Close();
            driver.Quit();
        }
Пример #17
0
        // Returns the chat room's id if a private chat room exists for given users only.
        public string GetExistingChatRoomIdForUsers(string[] recipientNames)
        {
            using (var context = new MagicDbContext())
            {
                var recipients = new List<User>();
                foreach (var userName in recipientNames.Distinct())
                {
                    var user = context.Users.FirstOrDefault(u => u.UserName == userName);
                    if (user == null)
                    {
                        Clients.Caller.addMessage(DefaultRoomId, DateTime.Now.ToString("HH:mm:ss"), "ServerInfo", "#000000", "User " + userName + " was not found!");
                    }
                    else
                    {
                        recipients.Add(user);
                    }
                }

                var recipientIds = recipients.Select(r => r.Id);
                var chatRoom = context.ChatRooms.Where(r => r.IsPrivate).ToList().FirstOrDefault(r => r.OnlySpecifiedUsersInRoom(recipientIds));

                return chatRoom == null ? String.Empty : chatRoom.Id;
            }
        }
Пример #18
0
        public void DrawHand(int cards = 7)
        {
            using (var context = new MagicDbContext())
            {
                Shuffle(new Random());

                for (var i = 0; i < cards; i++)
                {
                    Cards.ElementAt(i).Location = PlayerCardLocation.Hand;
                }
                context.InsertOrUpdate(this);
            }
        }
Пример #19
0
        // This function is called by schedule from Global.asax and uses the static context to save recent chat messages.
        //public static bool SaveChatLogToDatabase(ChatLog currentLog)
        //{
        //    ChatLog todayLog = context.ChatLogs.Find(currentLog.DateCreated);//context.Set<ChatLog>().AsNoTracking().FirstOrDefault(c => c.DateCreated == currentLog.DateCreated);
        //    if (todayLog != null)
        //    {
        //        todayLog.AppendMessages(currentLog.Messages);
        //        return context.InsertOrUpdate(todayLog, true);
        //    }

        //    // Create new log for Today.
        //    todayLog = new ChatLog
        //    {
        //        Messages = currentLog.Messages
        //    };
        //    return context.Insert(todayLog);
        //}
        #endregion CHATLOG HANDLING

        #region REMOVE INACTIVE USERS
        public static void RemoveInactiveConnections()
        {
            using (var context = new MagicDbContext())
            {
                foreach (var connection in context.Connections)
                {
                    context.Delete(connection);
                }
            }
            //context.Database.ExecuteSqlCommand("TRUNCATE TABLE [AspNetUserConnections]");
        }
Пример #20
0
 public void PutCardToGraveyard(int index)
 {
     using (var context = new MagicDbContext())
     {
         Cards.ElementAt(index).Location = PlayerCardLocation.Graveyard;
         context.InsertOrUpdate(this);
     }
 }
Пример #21
0
        // Create new chat room with given settings and for specific users only if it's private.
        public void CreateChatRoom(string roomId = null, bool isGameRoom = false, bool isPrivate = false, IList<string> recipientNames = null)
        {
            using (var context = new MagicDbContext())
            {
                var chatRoom = new ChatRoom(roomId)
                {
                    IsGameRoom = isGameRoom,
                    IsPrivate = isPrivate,
                    Name = (isGameRoom ? "Game" : null),
                    TabColorCode = (isGameRoom ? string.Empty.AssignRandomColorCode() : null)
                };
                context.Insert(chatRoom);

                if (!isPrivate) return;

                // TODO: check how recipients behave after chacking chatroom existance and if thee can be any null exception
                var recipients = recipientNames.Distinct().Select(userName => context.Users.FirstOrDefault(u => u.UserName == userName)).ToList();

                foreach (var user in recipients)
                {
                    AddUserToRoom(chatRoom.Id, user.Id);
                    SubscribeActiveConnections(chatRoom.Id, user.Id);
                }
            }
        }
Пример #22
0
        public async void SubscribeChatRoom(string roomId)
        {
            var chatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
            var addToGroup = chatHubContext.Groups.Add(Context.ConnectionId, roomId);

            using (var context = new MagicDbContext())
            {
                var chatRoomConnection = new ChatRoomConnection
                {
                    ChatRoomId = roomId,
                    ConnectionId = Context.ConnectionId,
                    UserId = Context.User.Identity.GetUserId()
                };
                context.Insert(chatRoomConnection);
            }

            await addToGroup;

            if (roomId != DefaultRoomId)
            {
                UpdateChatRoomUsers(roomId);
            }
        }
Пример #23
0
        public static void ResetReadyStatus(string gameId)
        {
            using (var context = new MagicDbContext())
            {
                var game = context.Games.Find(gameId);
                foreach (var player in game.Players.Select(p => p.Player))
                {
                    player.Status = PlayerStatus.Unready;
                }
                context.InsertOrUpdate(game, true);
            }

            var gameHubContext = GlobalHost.ConnectionManager.GetHubContext<GameHub>();
            gameHubContext.Clients.Group(gameId).resetReadyStatus();
        }
Пример #24
0
 public CardController(MagicDbContext context)
 {
     _context = context;
 }
 public AssistedDeckBuilder(MagicDbContext context)
 {
     _context = context;
 }
Пример #26
0
        public static void SubscribeActiveConnections(string roomId, string userId)
        {
            using (var context = new MagicDbContext())
            {
                var activeConnectionIds = context.Connections.Where(c => c.UserId == userId).Select(c => c.Id);
                var subscribedConnectionIds = context.ChatRoomConnections.Where(crc => crc.UserId == userId && crc.ChatRoomId == roomId).Select(crc => crc.ConnectionId);
                var unsubscribedConnectionIds = activeConnectionIds.Except(subscribedConnectionIds);

                if (!unsubscribedConnectionIds.Any()) return;

                var groupsProcessed = new List<Task>();
                foreach (var connectionId in unsubscribedConnectionIds)
                {
                    var chatRoomConnection = new ChatRoomConnection
                    {
                        ChatRoomId = roomId,
                        ConnectionId = connectionId,
                        UserId = userId
                    };

                    var chatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
                    groupsProcessed.Add(chatHubContext.Groups.Add(connectionId, roomId));
                    context.Insert(chatRoomConnection);
                }

                Task.WhenAll(groupsProcessed.ToArray());
            }
        }
Пример #27
0
 public void AssignTypes(MagicDbContext context)
 {
     foreach (var typeName in typeNames)
     {
         var type = context.CardTypes.FirstOrDefault(t => t.Name == typeName);
         if (type != null)
         {
             Types.Add(type);
         }
         //else if (CardType.IsSuperType(typeName))
         //{
         //    types.Add(new CardSuperType { Name = typeName });
         //}
         else if (CardType.IsMainType(typeName))
         {
             // Possibly old card with obsolete type, replace with newest value.
             var name = Enum.Parse(typeof(MainType), typeName).ToString();
             type = context.CardTypes.FirstOrDefault(t => t.Name == name);
             Types.Add(type ?? new CardMainType { Name = typeName });
         }
         else
         {
             Types.Add(new CardSubType { Name = typeName });
         }
     }
 }
Пример #28
0
 public void SetAsGameConnection(string gameId)
 {
     var userId = Context.User.Identity.GetUserId();
     using (var context = new MagicDbContext())
     {
         var connection = context.Connections.Find(Context.ConnectionId, userId);
         connection.GameId = gameId;
         context.InsertOrUpdate(connection, true);
     }
 }
Пример #29
0
        public bool SubscribeGameChat(string roomId)
        {
            using (var context = new MagicDbContext())
            {
                var chatRoom = context.ChatRooms.Find(roomId);
                var userId = Context.User.Identity.GetUserId();
                bool isExistingUser = false;

                if (chatRoom == null)
                {
                    var game = context.Games.Find(roomId);
                    CreateChatRoom(roomId, true, game.IsPrivate, game.Players.Select(p => p.User.UserName).ToList());
                    //AddUserToRoom(roomId, userId);
                }
                else if (chatRoom.IsUserInRoom(userId))
                {
                    isExistingUser = true;
                }
                else if (chatRoom.IsUserAllowedToJoin(userId))
                {
                    //AddUserToRoom(roomId, userId);
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Can't join private game " + roomId);
                    return false;
                }

                System.Diagnostics.Debug.WriteLine("Joining " + roomId);
                SetAsGameConnection(roomId);
                SubscribeActiveConnections(roomId, userId);

                // Send info message on joining group - also opens the chat tab for joining user.
                if (isExistingUser)
                {
                    Clients.Caller.addMessage(roomId, DateTime.Now.ToString("HH:mm:ss"), chatRoom.Name, chatRoom.TabColorCode, " Welcome back!", true);
                }
                else {
                    var user = context.Users.Find(userId);
                    Clients.Group(roomId).addMessage(roomId, DateTime.Now.ToString("HH:mm:ss"), user.UserName, user.ColorCode, " entered the game.", true);
                }
                return true;
            }
        }
Пример #30
0
 public TestController(MagicDbContext context)
 {
     _context = context;
 }
Пример #31
0
        public void UnsubscribeChatRoom(string roomId)
        {
            using (var context = new MagicDbContext())
            {
                var userId = Context.User.Identity.GetUserId();

                var userConnections = context.ChatRoomConnections.Where(c => c.ChatRoomId == roomId && c.UserId == userId);
                var userConnectionIds = userConnections.Select(c => c.ConnectionId).ToList();
                Clients.Clients(userConnectionIds).closeChatRoom(roomId);

                context.ChatRoomConnections.RemoveRange(userConnections);
                context.SaveChanges();

                Task.WhenAll(userConnectionIds.Select(connectionId => Groups.Remove(connectionId, roomId)).ToArray());
            }
        }
Пример #32
0
        public void StartGame(string gameId)
        {
            System.Diagnostics.Debug.WriteLine("LET THE GAMES BEGIN!");
            using (var context = new MagicDbContext())
            {
                var game = context.Games.Find(gameId);
                if (game.DateStarted.HasValue)
                {
                    game.DateResumed = DateTime.Now;
                }
                else
                {
                    game.DateStarted = DateTime.Now;
                }

                foreach (var player in game.Players)
                {
                    player.Status = GameStatus.InProgress;
                }
                context.InsertOrUpdate(game, true);

                Clients.Group(gameId).activateGame();
            }
        }
Пример #33
0
        public static async Task PauseGame(User user, string gameId, DateTime dateSuspended, CancellationToken token)
        {
            using (var context = new MagicDbContext())
            {
                var gameHubContext = GlobalHost.ConnectionManager.GetHubContext<GameHub>();
                gameHubContext.Clients.Group(gameId).pauseGame("has paused the game.", user.UserName, user.ColorCode);
                var pause = Task.Delay(10000, token);

                var chatRoom = context.ChatRooms.Find(gameId);
                var chatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
                chatHubContext.Clients.Group(gameId).addMessage(gameId, DateTime.Now.ToString("HH:mm:ss"), user.UserName, user.ColorCode, "has paused the game.");

                var game = context.Games.Find(gameId);
                game.UpdateTimePlayed(dateSuspended);

                try
                {
                    await pause;
                }
                catch (OperationCanceledException) { }
                finally
                {
                    game.DateResumed = DateTime.Now;
                    gameHubContext.Clients.Group(gameId).activateGame(game.TimePlayed.ToTotalHoursString());
                    context.InsertOrUpdate(game, true);
                }
            }
        }
Пример #34
0
        public async static Task LeaveGame(UserConnection connection)
        {
            var dateSuspended = DateTime.Now;
            var gameHubContext = GlobalHost.ConnectionManager.GetHubContext<GameHub>();
            gameHubContext.Groups.Remove(connection.Id, connection.GameId);
            gameHubContext.Clients.Group(connection.GameId).userLeft(connection.User.UserName);

            using (var context = new MagicDbContext())
            {
                var game = context.Games.Find(connection.GameId);
                if (game.Players.All(p => p.UserId != connection.UserId))
                {
                    // Remove observer who left.
                    game.Observers.Remove(game.Observers.First(o => o.Id == connection.UserId));
                    return;
                }

                if (game.DateStarted.HasValue && !game.DateEnded.HasValue)
                {
                    // TODO: STOP THE GAME, A PLAYER IS MISSING! Ask players to start game timeout?
                    game.UpdateTimePlayed(dateSuspended);
                    game.DateResumed = null;
                    gameHubContext.Clients.Group(connection.GameId).pauseGame("has fled the battle!", connection.User.UserName, connection.User.ColorCode);

                    var chatHubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>();
                    chatHubContext.Clients.Group(connection.GameId).addMessage(connection.GameId, DateTime.Now.ToString("HH:mm:ss"), connection.User.UserName, connection.User.ColorCode,
                        "has fled the battle, the game will be interrupted.");

                    var playerStatus = game.Players.First(ps => ps.UserId == connection.UserId);
                    playerStatus.Status = GameStatus.Unfinished;
                    playerStatus.Player.Status = PlayerStatus.Missing;
                    context.InsertOrUpdate(game, true);
                }
                else
                {
                    var playerStatus = context.GameStatuses.Find(connection.UserId, connection.GameId);
                    context.Delete(playerStatus, true);
                    ResetReadyStatus(game.Id);
                }
            }
        }
Пример #35
0
        public override Task OnConnected()
        {
            using (var context = new MagicDbContext())
            {
                var userId = Context.User.Identity.GetUserId();
                var foundUser = context.Users.Find(userId);

                var connection = new UserConnection
                {
                    Id = Context.ConnectionId,
                    UserId = userId
                };
                context.Connections.Add(connection);
                context.SaveChanges();

                SubscribeChatRoom(DefaultRoomId);
                if (foundUser.Connections.Count == 1)
                {
                    // If this is the user's only connection broadcast a chat info.
                    UserStatusUpdate(userId, UserStatus.Online, DefaultRoomId);
                }

                UpdateChatRoomUsers(DefaultRoomId);
                foreach (var chatRoom in GetChatRoomsWithUser(userId))
                {
                    UpdateChatRoomUsers(chatRoom.Id);
                }
                
                SubscribeActiveChatRooms(Context.ConnectionId, userId);
                // TODO: What when: user disconnects, other user has private chat tab open, user connects again - chat tab is unsubscribed, typing message does not notify receiving user?
                // Solution: use message notifications for that - partially implemented.
            }

            System.Diagnostics.Debug.WriteLine("Connected: " + Context.ConnectionId);
            return base.OnConnected();
        }
Пример #36
0
 public void ReturnToHand(CardViewModel target, string gameId)
 {
     using (var context = new MagicDbContext())
     {
         var player = context.Players.Find(target.CasterId, gameId);
         //player.Deck.
     }
 }
Пример #37
0
        public void UnsubscribeGameChat()
        {
            using (var context = new MagicDbContext())
            {
                var userId = Context.User.Identity.GetUserId();
                var connection = context.Connections.Find(Context.ConnectionId, userId);

                var hasOtherGameConnections = context.Connections.Count(c => c.GameId == connection.GameId && c.UserId == userId) > 1;

                if (hasOtherGameConnections) return;

                GameHub.LeaveGame(connection);

                var roomId = connection.GameId;
                UnsubscribeChatRoom(roomId);
                System.Diagnostics.Debug.WriteLine("Unsubscribing " + roomId);

                // Sent info message on leaving group.
                var user = context.Users.Find(userId);
                Clients.Group(roomId).addMessage(roomId, DateTime.Now.ToString("HH:mm:ss"), user.UserName, user.ColorCode, (" left the game."), true);
            }
        }
Пример #38
0
        public void SubscribeActiveChatRooms(string connectionId, string userId)
        {
            using (var context = new MagicDbContext())
            {
                var activeChatRoomIds = context.ChatRoomConnections.Where(rc => rc.UserId == userId && rc.ChatRoomId != DefaultRoomId).Select(rc => rc.ChatRoomId).Distinct();

                foreach (var roomId in activeChatRoomIds)
                {
                    var chatRoomConnection = new ChatRoomConnection
                    {
                        ChatRoomId = roomId,
                        ConnectionId = connectionId,
                        UserId = userId
                    };

                    Groups.Add(connectionId, roomId);
                    context.Insert(chatRoomConnection);
                }
            }
        }
Пример #39
0
        private async void DeleteConnection()
        {
            await Task.Delay(1500);

            using (var context = new MagicDbContext())
            {
                var connection = context.Connections.FirstOrDefault(c => c.Id == Context.ConnectionId);
                if (connection == null) return;

                if (!string.IsNullOrWhiteSpace(connection.GameId))
                {
                    UnsubscribeGameChat();
                }

                System.Diagnostics.Debug.WriteLine("Disconnected: " + connection.Id);

                var isLastConnection = connection.User.Connections.Count == 1;
                if (!isLastConnection)
                {
                    context.Delete(connection, true);
                    return;
                }

                // If this is the user's last connection update chat room users.
                var userId = connection.User.Id;
                var chatRooms = GetUserChatRooms(userId);

                context.Delete(connection, true);

                UserStatusUpdate(userId, UserStatus.Offline, DefaultRoomId);
                foreach (var chatRoom in chatRooms)
                {
                    UpdateChatRoomUsers(chatRoom.Id);
                }

                //if (connection.GetType() == typeof(ApplicationUserGameConnection))
                //{
                //    //SubscribeGameChat(connection.ChatRoomId, false);
                //    //GameHub.DisplayUserLeft(connection.User.UserName, connection.ChatRoomId);
                //    GameHub.LeaveGame((ApplicationUserGameConnection) connection);
                //}
            }
        }
Пример #40
0
 public DragNDrop(MagicDbContext context)
 {
     _context = context;
 }
Пример #41
0
 public HomeController(MagicDbContext context)
 {
     _context = context;
 }
Пример #42
0
        public void DecodeManaCost(MagicDbContext context)
        {
            var mana = new List<CardManaCost>
            {
                new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "Black").Id,
                    Cost = manaCode.Count(c => c == 'B')
                },
                new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "Blue").Id,
                    Cost = manaCode.Count(c => c == 'U')
                },
                new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "Green").Id,
                    Cost = manaCode.Count(c => c == 'G')
                },
                new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "Red").Id,
                    Cost = manaCode.Count(c => c == 'R')
                },
                new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "White").Id,
                    Cost = manaCode.Count(c => c == 'W')
                }
            };

            int colorless;
            if (int.TryParse(Regex.Match(manaCode, "[0-9]*").Value, out colorless))
            {
                mana.Add(new CardManaCost
                {
                    ColorId = context.ManaColors.First(c => c.Name == "Colorless").Id,
                    Cost = colorless
                });
            }

            // TODO: Fix this to enable hybrids.
            //var codes = new[] { "B", "U", "G", "R", "W" };
            //foreach (Match hybrid in Regex.Matches(manaCode, @"(./.)"))
            //{
            //    var color = hybrid.Value.Substring(0, 1);
            //    var hybridColor = hybrid.Value.Substring(2, 1);
            //    mana.Add(new HybridManaCost
            //    {
            //        Color = context.ManaColors.FirstOrDefault(c => c.Name == Enum.Parse(typeof(Color), color).ToString()),
            //        HybridColor = context.ManaColors.FirstOrDefault(c => c.Name == Enum.Parse(typeof(Color), color).ToString()),
            //        Cost = 1
            //    });
            //}

            Colors = mana.Where(m => m.Cost > 0).ToList();
        }
Пример #43
0
 public NewUserController(MagicDbContext context)
 {
     _context = context;
 }