public ManageWatchFolder(Logging.LoggingInterfaces.ITracer logger, LocalDatabaseWrapper context, WrapperDataTable.WrapperTable<WatchFolder> wrapperTable, Game game)
 {
     this.logger = logger;
     this.context = context;
     this.wrapperTable = wrapperTable;
     this.wrapperTableCopy = wrapperTable.Clone();
     wrapperTableCopy.UserAddedRow += wrapperTableCopy_UserAddedRow;
     wrapperTableCopy.DeletedRow += wrapperTableCopy_DeletedRow;
     this.game = game;
     InitializeComponent();
 }
        void copyMatchSessionsTable_ItemChanged(object sender, WrapperDataTable.ItemChangedData<MatchSession> args)
        {
            var copyItem = args.Items.Copy;
            var enteredName = copyItem.MyGame.Name;

            // Try to find the game
            var game = FSharpInterop.Interop.Database.GetGame(context, enteredName);
            if (game != null)
            {
                copyItem.MyGame.Name = game.Name;
                args.Items.Original.MyGame = game; // Save here because we only commit on save
                args.ChangedCopy.Value = true;
            }
        }
        void playersDataCopy_DeletedRow(object sender, WrapperDataTable.DeletedRowData<MatchSessions_Player> args)
        {
            var originalPlayer = playersDataCopy.get_CopyItemToOriginal(args.CopyItem);
            var count = (from matchmediaCopy in matchmediaDataCopy.CopyLinqData
                         let original = matchmediaDataCopy.get_CopyItemToOriginal(matchmediaCopy)
                         where original.MyMatchSessionsPlayer == originalPlayer
                         select original).Count();

            if (count > 0)
            {
                MessageBox.Show("Please delete all matchmedias for this player!");
                throw new InvalidOperationException("Can't delete row with matchmedia!");
            }
        }
 void playerTableCopy_UserAddedRow(object sender, WrapperDataTable.UserAddedRowData<MatchSessions_Player> args)
 { // can't happen actually.
     args.OriginalItem.MyMatchSession = session;
 }
        private void playersDataCopy_ItemChanged(
            object sender, WrapperDataTable.ItemChangedData<MatchSessions_Player> tuple)
        {
            var copyItem = tuple.Items.Copy;

            var changedCopyItem = false;
            if (copyItem.Player.MyId != 0)
            {
                var player = FSharpInterop.Interop.Database.GetPlayerById(context, copyItem.Player.MyId);
                if (player != null)
                {
                    if (!copyItem.Player.EslPlayerId.HasValue || copyItem.Player.EslPlayerId.Value != player.EslPlayerId)
                    {
                        copyItem.Player.EslPlayerId = player.EslPlayerId;
                        changedCopyItem = true;
                    }

                    if (ChangeCopyItem(player, copyItem))
                    {
                        changedCopyItem = true;
                    }
                }
                else
                {
                    copyItem.Player.MyId = 0;
                    changedCopyItem = true;
                }
            }

            if (copyItem.Player.MyId == 0 && copyItem.Player.EslPlayerId.HasValue)
            {
                var player = FSharpInterop.Interop.Database.GetPlayerByEslId(context, copyItem.Player.EslPlayerId.Value);
                if (player != null)
                {
                    if (copyItem.Player.MyId != player.Id)
                    {
                        copyItem.Player.MyId = player.Id;
                        changedCopyItem = true;
                    }
                    if (ChangeCopyItem(player, copyItem))
                    {
                        changedCopyItem = true;
                    }
                }
            }

            if (changedCopyItem)
            {
                tuple.ChangedCopy.Value = true;
            }
        }
 private void playersDataCopy_InitRow(object sender, WrapperDataTable.InitRowData<MatchSessions_Player> player)
 {
     player.CopyOrTempItem.MyTeam = PlayerTeam.Team1;
     player.CopyOrTempItem.MySkill = PlayerSkill.Mid;
 }
 void playersDataCopy_UserAddedRow(object sender, WrapperDataTable.UserAddedRowData<MatchSessions_Player> args)
 {
     args.OriginalItem.MyMatchSession = session;
 }
 private void value_InitRow(object sender, WrapperDataTable.InitRowData<Matchmedia> media)
 {
     media.CopyOrTempItem.Created = DateTime.Now;
 }
 private void value_UserAddedRow(object sender, WrapperDataTable.UserAddedRowData<Matchmedia> media)
 {
     media.OriginalItem.PlayerId = primaryPlayer.PlayerId;
 }
 void wrapperTableCopy_UserAddedRow(object sender, WrapperDataTable.UserAddedRowData<WatchFolder> args)
 {
     args.OriginalItem.MyGame = game;
 }
 void wrapperTableCopy_DeletedRow(object sender, WrapperDataTable.DeletedRowData<WatchFolder> args)
 {
     wrapperTableCopy.get_CopyItemToOriginal(args.CopyItem).Game = null;
 }