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(); }
/// <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; }