Ejemplo n.º 1
0
        public static void MoveOwnersOfGameOverToNewOwnershipSystem()
        {
            var dc = new ManagementContext();
            var gameDb = (from xx in dc.Games
                          select xx).ToList();

            foreach (var game in gameDb)
            {
                if (game.OwnerOfGame != null)
                {
                    GameMemberOwnership owner = new GameMemberOwnership();
                    owner.Game = game;
                    owner.Member = game.OwnerOfGame;
                    owner.OwnerType = Convert.ToInt32(GameOwnerEnum.Owner);
                    game.MemberOwners.Add(owner);
                }
                if (game.FederationOwner != null)
                {
                    GameFederationOwnership owner = new GameFederationOwnership();
                    owner.Game = game;
                    owner.Federation = game.FederationOwner;
                    owner.OwnerType = Convert.ToInt32(GameOwnerEnum.Owner);
                    game.FederationOwners.Add(owner);
                }
            }
            dc.SaveChanges();
        }
Ejemplo n.º 2
0
        /// <summary>
        /// updates the game from the management view
        /// Currently updates game name, date, and its members.
        /// </summary>
        /// <param name="game"></param>
        public static bool UpdateGameFromManagement(Game game)
        {
            try
            {
                var dc = new ManagementContext();
                var gameDb = (from xx in dc.Games
                              where xx.GameId == game.GameId
                              where xx.IdForOnlineManagementUse == game.PrivateKeyForGame
                              select xx).FirstOrDefault();
                if (gameDb != null)
                {
                    gameDb.ScoreboardType = Convert.ToInt32(ScoreboardModeEnum.Live);
                    gameDb.GameDate = game.GameDate;
                    gameDb.GameName = game.GameName;
                    gameDb.EmbededVideoHtml = game.EmbededVideoString;
                    gameDb.IsThereVideoOfGame = Convert.ToInt32(game.IsThereVideoOfGame);
                    gameDb.StreamingUrlOfVideo = game.StreamingUrlSilverlight;
                    gameDb.StreamingUrlOfVideoMobile = game.StreamingMobileUrlSilverlight;
                    if (game.SelectedPaywall > 0)
                        gameDb.Paywall = dc.Paywalls.Where(x => x.PaywallId == game.SelectedPaywall).FirstOrDefault();
                    else
                        gameDb.Paywall = null;
                    //iterating through all memebers in DB
                    foreach (var team in gameDb.GameTeams)
                    {
                        foreach (var memDb in team.GameMembers)
                        {
                            //finding the member in local game
                            var mem = game.MembersOfGame.Where(x => x.MemberId == memDb.GameMemberId).FirstOrDefault();
                            //if we find member in local game, we can set the member link, otherwise we set it to nothing.
                            if (mem != null)
                            {
                                //if the member id is not the same as it is in the DB.
                                if (mem.MemberLinkId != memDb.MemberLinkId)
                                {
                                    //gets the user from the members table.
                                    var memberUser = dc.Members.Where(x => x.MemberId == mem.MemberLinkId).FirstOrDefault();
                                    //if member exists, we need to find user.
                                    if (memberUser != null)
                                    {
                                        //finds user to email.
                                        var userAccount = System.Web.Security.Membership.GetUser((object)memberUser.AspNetUserId);
                                        if (userAccount != null)
                                        {
                                            //collects the data to email the user.
                                            var emailData = new Dictionary<string, string>
                                        {
                                            { "derbyname", memberUser.DerbyName }, 
                                            { "email", userAccount.Email },
                                            { "gamename", game.GameName},
                                            { "link", "http://rdnation.com/roller-derby-game/" + game.GameId.ToString().Replace("-","")+"/"+ RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(game.GameName) +"/"+ RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(game.Team1Name) +"/"+RDN.Utilities.Strings.StringExt.ToSearchEngineFriendly(game.Team2Name)  }
                                        };
                                            EmailServer.EmailServer.SendEmail(ServerConfig.DEFAULT_EMAIL, ServerConfig.DEFAULT_EMAIL_FROM_NAME, userAccount.Email, EmailServer.EmailServer.DEFAULT_SUBJECT + " Added To A Derby Game", emailData, EmailServer.EmailServerLayoutsEnum.AddedToANewGame);
                                        }
                                    }
                                }
                                memDb.MemberLinkId = mem.MemberLinkId;
                            }
                            else
                                memDb.MemberLinkId = new Guid();
                        }
                    }

                    if (!String.IsNullOrEmpty(game.SelectedTournament))
                    {
                        var tourny = dc.GameTournaments.Where(x => x.TournamentId == new Guid(game.SelectedTournament)).FirstOrDefault();
                        if (game.PassCodeEnteredForTournament == tourny.TournamentPasscode)
                        {
                            tourny.Games.Add(gameDb);
                        }
                    }
                    else
                        gameDb.GameTournament = null;
                    if (!String.IsNullOrEmpty(game.SelectedShop))
                    {
                        gameDb.SelectedShop = dc.Merchants.Where(x => x.MerchantId == new Guid(game.SelectedShop)).FirstOrDefault();
                    }
                    else
                        gameDb.SelectedShop = null;

                    foreach (var mem in game.MemberOwners)
                    {
                        if (mem.MemberId != new Guid())
                        {
                            var member = gameDb.MemberOwners.Where(x => x.Member.MemberId == mem.MemberId).FirstOrDefault();
                            if (member == null)
                            {
                                var memDb = dc.Members.Where(x => x.MemberId == mem.MemberId).FirstOrDefault();
                                if (memDb != null)
                                {
                                    GameMemberOwnership m = new GameMemberOwnership();
                                    m.Game = gameDb;
                                    m.Member = memDb;
                                    m.OwnerType = Convert.ToInt32(GameOwnerEnum.Manager);
                                    gameDb.MemberOwners.Add(m);

                                    if (memDb.AspNetUserId != new Guid())
                                    {
                                        var user = System.Web.Security.Membership.GetUser((object)memDb.AspNetUserId);
                                        EmailAccountAddedToManageDerbyGame(gameDb, memDb.DerbyName, user.Email);
                                    }
                                }
                            }
                        }
                    }
                    foreach (var mem in game.FederationOwners)
                    {
                        if (mem.FederationId != new Guid())
                        {
                            var member = gameDb.FederationOwners.Where(x => x.Federation.FederationId == mem.FederationId).FirstOrDefault();
                            if (member == null)
                            {
                                var memDb = dc.Federations.Where(x => x.FederationId == mem.FederationId).FirstOrDefault();
                                if (memDb != null)
                                {
                                    GameFederationOwnership m = new GameFederationOwnership();
                                    m.Game = gameDb;
                                    m.Federation = memDb;
                                    m.OwnerType = Convert.ToInt32(GameOwnerEnum.Manager);
                                    gameDb.FederationOwners.Add(m);
                                    if (memDb.ContactCard != null && memDb.ContactCard.Emails.Count > 0)
                                    {
                                        var emails = memDb.ContactCard.Emails.FirstOrDefault();
                                        EmailAccountAddedToManageDerbyGame(gameDb, memDb.Name, emails.EmailAddress);
                                    }
                                }
                            }
                        }
                    }
                    foreach (var mem in game.LeagueOwners)
                    {
                        if (mem.LeagueId != new Guid())
                        {
                            var member = gameDb.LeagueOwners.Where(x => x.League.LeagueId == mem.LeagueId).FirstOrDefault();
                            if (member == null)
                            {
                                var memDb = dc.Leagues.Where(x => x.LeagueId == mem.LeagueId).FirstOrDefault();
                                if (memDb != null)
                                {
                                    GameLeagueOwnership m = new GameLeagueOwnership();
                                    m.Game = gameDb;
                                    m.League = memDb;
                                    m.OwnerType = Convert.ToInt32(GameOwnerEnum.Manager);
                                    gameDb.LeagueOwners.Add(m);
                                    if (memDb.ContactCard != null && memDb.ContactCard.Emails.Count > 0)
                                    {
                                        var emails = memDb.ContactCard.Emails.FirstOrDefault();
                                        EmailAccountAddedToManageDerbyGame(gameDb, memDb.Name, emails.EmailAddress);
                                    }
                                }
                            }
                        }
                    }


                    int c = dc.SaveChanges();
                    return c > 0;
                }
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType(), ErrorGroupEnum.Database);
            }
            return false;
        }
        private static DataModels.Game.Game insertNewGameToDb(GameViewModel game, ManagementContext db)
        {
            DataModels.Game.Game gameNew = new DataModels.Game.Game();
            gameNew.IdForOnlineManagementUse = game.IdForOnlineManagementUse;
            gameNew.GameDate = game.GameDate;
            gameNew.LastModified = DateTime.UtcNow;

            if (game.GameEndDate != DateTime.MinValue)
                gameNew.GameEndDate = game.GameEndDate;
            else
                gameNew.GameEndDate = game.GameDate;

            //debug or live mode.  Debug is for developing it, so users never see this mode and only open to developers.
            gameNew.ScoreboardType = Convert.ToInt32(game.ScoreboardMode);
            if (!String.IsNullOrEmpty(game.GameName))
                gameNew.GameName = game.GameName;
            else
                gameNew.GameName = ScoreboardConfig.DEFAULT_GAME_NAME;
            if (game.Policy != null)
                gameNew.GameType = game.Policy.GameSelectionType.ToString();
            gameNew.IsGameOver = game.HasGameEnded;
            gameNew.HasGameStarted = game.HasGameStarted;
            gameNew.IsGameLive = game.PublishGameOnline;
            gameNew.IsGameScrimmage = game.SaveGameOnline;
            gameNew.GameLocation = game.GameLocation;
            gameNew.GameCity = game.GameCity;
            gameNew.GameState = game.GameState;
            gameNew.GameId = game.GameId;
            gameNew.VersionNumber = game.VersionNumber;


            gameNew.IsGamePublishedOnline = game.PublishGameOnline;
            gameNew.Created = DateTime.UtcNow;
            if (game.FederationId != new Guid())
            {
                GameFederationOwnership fedOwner = new GameFederationOwnership();
                fedOwner.Federation = db.Federations.Where(x => x.FederationId == game.FederationId).FirstOrDefault();
                fedOwner.Game = gameNew;
                fedOwner.OwnerType = Convert.ToInt32(GameOwnerEnum.Owner);
                gameNew.FederationOwners.Add(fedOwner);
            }
            db.Games.Add(gameNew);
            int c = db.SaveChanges();

            InsertGameLinks(game, db, gameNew);

            //inserts the current jam into the DB.
            if (game.CurrentJam != null)
            {
                GameJamClass.insertNewJamIntoDb(game.GameId, game.Team1.TeamId, game.Team2.TeamId, game.CurrentJam, db, gameNew);
            }
            c += db.SaveChanges();

            if (game.CurrentLineUpClock != null && game.CurrentLineUpClock.StartTime != new DateTime())
            {
                GameStopwatch stop = new GameStopwatch();
                stop.Created = DateTime.UtcNow;
                stop.IsClockAtZero = game.CurrentLineUpClock.IsClockAtZero == true ? 1 : 0;
                stop.IsRunning = game.CurrentLineUpClock.IsRunning == true ? 1 : 0;
                stop.Length = game.CurrentLineUpClock.TimerLength;
                stop.StartDateTime = game.CurrentLineUpClock.StartTime;
                stop.StopwatchForId = game.GameId;
                stop.TimeElapsed = game.CurrentLineUpClock.TimeElapsed;
                stop.TimeRemaining = game.CurrentLineUpClock.TimeRemaining;
                stop.Type = (int)StopWatchTypeEnum.LineUpClock;
                stop.Game = gameNew;
                db.GameStopWatch.Add(stop);
                c += db.SaveChanges();
            }
            if (game.CurrentTimeOutClock != null && game.CurrentTimeOutClock.StartTime != new DateTime())
            {
                GameStopwatch stop = new GameStopwatch();
                stop.Created = DateTime.UtcNow;
                stop.IsClockAtZero = game.CurrentTimeOutClock.IsClockAtZero == true ? 1 : 0;
                stop.IsRunning = game.CurrentTimeOutClock.IsRunning == true ? 1 : 0;
                stop.Length = game.CurrentTimeOutClock.TimerLength;
                stop.StartDateTime = game.CurrentTimeOutClock.StartTime;
                stop.StopwatchForId = game.GameId;
                stop.TimeElapsed = game.CurrentTimeOutClock.TimeElapsed;
                stop.TimeRemaining = game.CurrentTimeOutClock.TimeRemaining;
                stop.Type = (int)StopWatchTypeEnum.TimeOutClock;
                stop.Game = gameNew;
                db.GameStopWatch.Add(stop);
                c += db.SaveChanges();
            }
            if (game.IntermissionClock != null && game.IntermissionClock.StartTime != new DateTime())
            {
                GameStopwatch stop = new GameStopwatch();
                stop.Created = DateTime.UtcNow;
                stop.IsClockAtZero = game.IntermissionClock.IsClockAtZero == true ? 1 : 0;
                stop.IsRunning = game.IntermissionClock.IsRunning == true ? 1 : 0;
                stop.Length = game.IntermissionClock.TimerLength;
                stop.StartDateTime = game.IntermissionClock.StartTime;
                stop.StopwatchForId = game.GameId;
                stop.TimeElapsed = game.IntermissionClock.TimeElapsed;
                stop.TimeRemaining = game.IntermissionClock.TimeRemaining;
                stop.Type = (int)StopWatchTypeEnum.IntermissionClock;
                stop.Game = gameNew;
                db.GameStopWatch.Add(stop);
                c += db.SaveChanges();
            }
            try
            {
                if (game.PeriodClock != null && game.PeriodClock.StartTime != new DateTime())
                {
                    GameStopwatch stop = new GameStopwatch();
                    stop.Created = DateTime.UtcNow;
                    stop.IsClockAtZero = game.PeriodClock.IsClockAtZero == true ? 1 : 0;
                    stop.IsRunning = game.PeriodClock.IsRunning == true ? 1 : 0;
                    stop.Length = game.PeriodClock.TimerLength;
                    stop.StartDateTime = game.PeriodClock.StartTime;
                    stop.StopwatchForId = game.GameId;
                    stop.TimeElapsed = game.PeriodClock.TimeElapsed;
                    stop.TimeRemaining = game.PeriodClock.TimeRemaining;
                    stop.Type = (int)StopWatchTypeEnum.PeriodClock;
                    stop.Game = gameNew;
                    db.GameStopWatch.Add(stop);
                    c += db.SaveChanges();
                }
            }
            catch (Exception exception)
            {
                ErrorDatabaseManager.AddException(exception, exception.GetType());
            }
            //teams need to be inserted first before the jams...
            GameTeamClass.insertTeamIntoDb(game, game.Team1, db, gameNew);

            GameTeamClass.insertTeamIntoDb(game, game.Team2, db, gameNew);

            foreach (var jam in game.Jams)
            {
                GameJamClass.insertNewJamIntoDb(game.GameId, game.Team1.TeamId, game.Team2.TeamId, jam, db, gameNew);
            }
            foreach (var advert in game.Advertisements)
            {
                //TODO: save adverts, but we need to upload these from the scoreboard.
            }
            foreach (var timeout in game.TimeOuts)
            {
                insertTimeoutsIntoDb(game, timeout, db, gameNew);
            }
            foreach (var score in game.ScoresTeam1)
            {
                GameScoreClass.insertScoreIntoDb(game.Team1.TeamId, game, score, db, gameNew);
            }
            foreach (var score in game.ScoresTeam2)
            {
                GameScoreClass.insertScoreIntoDb(game.Team2.TeamId, game, score, db, gameNew);
            }
            for (int i = 0; i < game.AssistsForTeam1.Count; i++)
            {
                GameAssistsClass.insertAssistIntoDb(game.Team1.TeamId, game, game.AssistsForTeam1[i], db, gameNew);
            }
            for (int i = 0; i < game.AssistsForTeam2.Count; i++)
            {
                GameAssistsClass.insertAssistIntoDb(game.Team2.TeamId, game, game.AssistsForTeam2[i], db, gameNew);
            }
            for (int i = 0; i < game.BlocksForTeam1.Count; i++)
            {
                GameBlocksClass.insertBlockIntoDb(game.Team1.TeamId, game, game.BlocksForTeam1[i], db, gameNew);
            }
            for (int i = 0; i < game.BlocksForTeam2.Count; i++)
            {
                GameBlocksClass.insertBlockIntoDb(game.Team2.TeamId, game, game.BlocksForTeam2[i], db, gameNew);
            }
            for (int i = 0; i < game.OfficialReviews.Count; i++)
            {
                OfficialReviewsClass.AddOfficialReview(game, gameNew, game.OfficialReviews[i]);
            }
            c += db.SaveChanges();
            //penalties added for the team.
            for (int i = 0; i < game.PenaltiesForTeam1.Count; i++)
            {
                GamePenaltiesClass.insertPenaltyIntoDb(game.Team1.TeamId, game, game.PenaltiesForTeam1[i], db, gameNew);
            }
            for (int i = 0; i < game.PenaltiesForTeam2.Count; i++)
            {
                GamePenaltiesClass.insertPenaltyIntoDb(game.Team2.TeamId, game, game.PenaltiesForTeam2[i], db, gameNew);
            }
            //times the skater went to the box.
            foreach (var pen in game.PenaltyBox)
            {
                GamePenaltiesClass.insertNewPenaltyIntoDb(game, db, pen, gameNew);
            }
            if (game.Policy != null)
            {
                insertNewPoliciesIntoDb(game, db);
            }
            if (game.Officials != null)
            {
                GameOfficialsClass.AddOfficialsToDb(game, db, gameNew);
            }

            c += db.SaveChanges();
            return gameNew;
        }