public string Create()
        {
            var primerSignersGetter = new PrimerSignersGetter();
            var cronUsersGetter     = new CronUsersGetter();
            var fullAdminGroup      = new Dictionary <string, object>
            {
                { "type", "disallowed" },
                { "commands", new List <string> {
                      "sv_afkimmune", "sv_ejectionprotection", "sv_randomall", "sh_adminmenu"
                  } }
            };
            var tempAdminGroup = new Dictionary <string, object>
            {
                { "type", "allowed" },
                { "commands", new List <string> {
                      "sv_istempadmin", "sv_kick", "sv_maps", "sv_changemap", "changemap", "sv_balance", "sv_switchteam", "sv_setcaptain", "captains", "sv_mutes", "sv_chat", "PMADMIN", "cyclemap", "gb"
                  } }
            };
            var guardianGroup = new Dictionary <string, object>
            {
                { "type", "allowed" },
                { "commands", new List <string> {
                      "sv_isguardian", "gb"
                  } }
            };
            var supportingMemberGroup = new Dictionary <string, object>
            {
                { "type", "allowed" },
                { "commands", new List <string> {
                      "sv_hasreserve", "sv_hassupportingmembership", "sv_taglineannounce", "sv_smchat", "SMCHAT", "sv_chat", "sv_playcodes"
                  } }
            };
            var primerGroup = new Dictionary <string, object>
            {
                { "type", "allowed" },
                { "commands", new List <string> {
                      "sv_hasprimersignature", "sv_chat", "sv_playcodes"
                  } }
            };
            var spectatorGroup = new Dictionary <string, object>
            {
                { "type", "allowed" },
                { "commands", new List <string> {
                      "sv_afkimmune"
                  } }
            };
            var groups = new Dictionary <string, object>
            {
                { "fulladmin_group", fullAdminGroup },
                { "tempadmin_group", tempAdminGroup },
                { "guardian_group", guardianGroup },
                { "sm_group", supportingMemberGroup },
                { "primer_group", primerGroup },
                { "spectator_group", spectatorGroup }
            };
            var primerSignerUsers     = primerSignersGetter.Get().ToList();
            var supportingMemberUsers = cronUsersGetter.Get("URL_HERE").ToList();
            var adminUsers            = cronUsersGetter.Get("URL_HERE").ToList();

            if (DateTime.Now < new DateTime(2016, 11, 25)) // one month
            {
                primerSignerUsers.Add(new Player("Firewolf34-UnableToPostInPrimerThread", 77404117));
            }
            if (DateTime.Now < new DateTime(2016, 12, 01)) // one month
            {
                primerSignerUsers.Add(new Player("Twiglingen-UnableToPostInPrimerThread", 70487954));
            }
            if (DateTime.Now < new DateTime(2017, 1, 4)) // one month
            {
                primerSignerUsers.Add(new Player("Sasa-UnableToPostInPrimerThread", 21563812));
            }
            if (DateTime.Now < new DateTime(2017, 4, 29)) // one month
            {
                supportingMemberUsers.Add(new Player("smiley-SupportingMembershipIsBillingHimButNotAppearingInForums", 37187440));
            }
            var nomPlayer = new Player("NoM-ServerProviderAndMaintainer", 19849485);

            supportingMemberUsers.Add(nomPlayer);
            Func <string, string, IEnumerable <IPlayer>, Dictionary <string, Dictionary <string, object> > > dictionaryCreator = (groupNameSuffix, groupName, groupMembers) => groupMembers.ToDictionary(x => $"{x.Name}-{x.PlayerId}-{groupNameSuffix}", x => new Dictionary <string, object> {
                { "id", x.PlayerId }, { "groups", new List <string> {
                                            groupName
                                        } }
            });
            var primerSignerUsersDictionary              = dictionaryCreator("p", "primer_group", primerSignerUsers);
            var supportingMemberUsersDictionary          = dictionaryCreator("S", "sm_group", supportingMemberUsers);
            var adminUsersDictionary                     = dictionaryCreator("A", "fulladmin_group", adminUsers);
            var gameServerRentalProvidersUsersDictionary = dictionaryCreator("gsrp", "game_server_rental_provider_group", new List <Player> {
                nomPlayer
            });
            var users = new List <Dictionary <string, Dictionary <string, object> > > {
                primerSignerUsersDictionary, supportingMemberUsersDictionary, adminUsersDictionary, gameServerRentalProvidersUsersDictionary
            }.SelectMany(x => x).ToDictionary(x => x.Key, x => x.Value);
            var serverAdmin = new Dictionary <string, object> {
                { "groups", groups }, { "users", users }
            };
            var result = JsonConvert.SerializeObject(serverAdmin, Formatting.Indented);

            return(result);
        }
 public static void Main()
 {
     var primerSignaturesGetter = new PrimerSignersGetter();
     var primerSignatures       = primerSignaturesGetter.Get();
 }