/// <summary>
        /// Creates a user.
        /// </summary>
        /// <returns><c>true</c>, if user was created, <c>false</c> otherwise.</returns>
        /// <param name="name">The players name.</param>
        /// <param name="password">Password.</param>
        /// <param name="op">If set to <c>true</c> op.</param>
        public static DbPlayer CreatePlayer(string name, string password, bool op = false)
        {
#if DAPPER
            using (var ctx = DatabaseFactory.CreateConnection())
            {
                using (var txn = ctx.BeginTransaction())
                {
                    var player = new DbPlayer(name, password)
                    {
                        Operator  = op,
                        DateAdded = DateTime.UtcNow
                    };
                    player.Id = ctx.Insert(player, transaction: txn);

                    var hc = new HookContext();
                    var ha = new Events.HookArgs.PlayerRegistered()
                    {
                        Connection  = ctx,
                        Transaction = txn,
                        Player      = player
                    };

                    Events.HookPoints.PlayerRegistered.Invoke(ref hc, ref ha);

                    if (hc.Result == HookResult.DEFAULT)
                    {
                        txn.Commit();
                        return(player);
                    }
                    else
                    {
                        txn.Rollback();
                        return(null);
                    }
                }
            }
#else
            using (var ctx = new TContext())
            {
                DbPlayer player;
                ctx.Players.Add(player = new DbPlayer(name, password)
                {
                    Operator     = op,
                    DateAddedUTC = DateTime.UtcNow
                });

                ctx.SaveChanges();

                return(player);
            }
#endif
        }
        /// <summary>
        /// Creates a user.
        /// </summary>
        /// <returns><c>true</c>, if user was created, <c>false</c> otherwise.</returns>
        /// <param name="name">The players name.</param>
        /// <param name="password">Password.</param>
        /// <param name="op">If set to <c>true</c> op.</param>
        public static DbPlayer CreatePlayer(string name, string password, bool op = false)
        {
#if DAPPER
            using (var ctx = DatabaseFactory.CreateConnection())
            {
                using (var txn = ctx.BeginTransaction())
                {
                    var player = new DbPlayer(name, password)
                    {
                        Operator = op,
                        DateAdded = DateTime.UtcNow
                    };
                    player.Id = ctx.Insert(player, transaction: txn);

                    var hc = new HookContext();
                    var ha = new Events.HookArgs.PlayerRegistered()
                    {
                        Connection = ctx,
                        Transaction = txn,
                        Player = player
                    };

                    Events.HookPoints.PlayerRegistered.Invoke(ref hc, ref ha);

                    if (hc.Result == HookResult.DEFAULT)
                    {
                        txn.Commit();
                        return player;
                    }
                    else
                    {
                        txn.Rollback();
                        return null;
                    }
                }
            }
#else
            using (var ctx = new TContext())
            {
                DbPlayer player;
                ctx.Players.Add(player = new DbPlayer(name, password)
                {
                    Operator = op,
                    DateAddedUTC = DateTime.UtcNow
                });

                ctx.SaveChanges();

                return player;
            }
#endif
        }