public void TestDeleteFile()
        {
            var fileInteraction = new FileInteraction("2020");

            fileInteraction.deleteFile("C:\\Users\\Simon Scherer\\Desktop\\testDelete.pdf");
            Assert.That(!File.Exists("C:\\Users\\Simon Scherer\\Desktop\\testDelete.pdf"), Is.EqualTo(true));
        }
Esempio n. 2
0
        public async Task MessageReceivedAsync(SocketMessage rawMessage)
        {
            if (rawMessage.Author.IsBot)
            {
                return;
            }
            Console.WriteLine("Message Recieved from " + rawMessage.Author.Username + ": " + rawMessage.Content);
            var message = rawMessage as SocketUserMessage;

            if (message == null)
            {
                return;
            }
            if (message.Content.StartsWith('!'))
            {
                var context = LastCommandContext = new SocketCommandContext(_discord, message);
                var result  = await _commands.ExecuteAsync(context, 1, _services);

                if (!result.IsSuccess)
                {
                    await context.Channel.SendMessageAsync(result.ErrorReason);
                }
            }
            else
            {
                Program.table.Add(message.Id, message.Author.Username, message.Timestamp.Date, message.Content);
                Program.table.PrintTableNoPadding();
                FileInteraction.ConvertDatabaseToFile(Program.db);
            }
        }
        public void TestSaveFile()
        {
            var fileInteraction = new FileInteraction("2020");

            fileInteraction.saveFile("C:\\Users\\Simon Scherer\\Desktop\\testSave.pdf");
            Assert.That(File.Exists(fileInteraction.SavePath), Is.EqualTo(true));
        }
        public DocumentDetailViewModel(string benutzer, Action navigateBack)
        {
            _navigateBack   = navigateBack;
            Benutzer        = benutzer;
            Erfassungsdatum = DateTime.Now;
            TypItems        = ComboBoxItems.Typ;
            fi = new FileInteraction(_erfassungsdatum.Year.ToString());

            CmdDurchsuchen = new DelegateCommand(OnCmdDurchsuchen);
            CmdSpeichern   = new DelegateCommand(OnCmdSpeichern);
        }
        public void TestCreateMetadataFile()
        {
            var metadataitem = new MetadataItem();

            metadataitem.Bezeichnung  = "Simon";
            metadataitem.Stichwoerter = "Hallo";
            metadataitem.Typ          = "Quittungen";
            metadataitem.ValutaDatum  = new DateTime(2020, 12, 12);

            var fileInteraction = new FileInteraction("2020");

            fileInteraction.createMetadataFile(metadataitem);

            Assert.That(File.Exists(fileInteraction.SavePath), Is.EqualTo(true));
        }
Esempio n. 6
0
        public async Task AddFromChannel()
        {
            SocketCommandContext  last    = CommandHandlingService.LastCommandContext;
            ISocketMessageChannel channel = last.Channel;

            var t = await channel.GetMessagesAsync(1000).Flatten().ToArray();

            foreach (IMessage message in t)
            {
                Program.table.Add(message.Id, message.Author.Username, message.Timestamp.Date, message.Content);
            }

            Program.table.PrintTableNoPadding();
            FileInteraction.ConvertDatabaseToFile(Program.db);
            Program.table.DumpData(25);
        }
Esempio n. 7
0
        static async void MainAsync(string[] args)
        {
            if (args.Length == 0 || args[0] == "DEBUG")
            {
            }
            else
            {
                string path         = "";
                bool   useDirectory = false;

                for (int i = 0; i < args.Length; i++)
                {
                    string arg = args[i];
                    switch (arg)
                    {
                    case "-l":
                        liveSession = true;
                        break;

                    case "--local": {                             // --local <int> or --local <string>
                        Database[] databases = FileInteraction.ConvertDirectoriesInCurrentDirectoryToDatabases();
                        if (int.TryParse(args[i + 1], out int index))
                        {
                            loadedDatabase = databases[index];
                        }
                        else
                        {
                            foreach (Database database in databases)
                            {
                                if (database.Name == args[i + 1])
                                {
                                    loadedDatabase = database;
                                }
                            }
                        }
                        loadedDatabase?.DumpDataBase();
                    }
                    break;

                    case "-p":
                    case "--path": {
                        path = i + 1 < args.Length ? args[i + 1] : "";
                    }
                    break;

                    case "-d": {
                        useDirectory = true;
                    }
                    break;
                    }
                }

                if (path != "")
                {
                    loadedDatabase = useDirectory
                                                ? FileInteraction.ConvertDirectoryToDatabase(path)
                                                : FileInteraction.ConvertFileToDatabase(path);
                }

                bool          dontStop = true;
                List <string> commands = new List <string>();

                if (liveSession)
                {
                    while (loadedDatabase != null && dontStop)
                    {
                        Console.Write(">>  ");
                        bool endCommand = false;

                        bool afterCommandMode = false;
                        command = "";
                        while (!endCommand)
                        {
                            var   keyInfo = Console.ReadKey();
                            Regex acceptableCharacters = new Regex("\\w|[*\\{\\[\\(\\}\\]\\)@_\"=><]");

                            if (keyInfo.Key == ConsoleKey.Enter)
                            {
                                Console.WriteLine();

                                if (command.Length == 0)
                                {
                                    foreach (string s in commands)
                                    {
                                        var commandInterpreter = new CommandInterpreter(loadedDatabase, s);
                                    }

                                    Console.Write(">> ");
                                    commands = new List <string>();
                                }
                                else
                                {
                                    Console.Write("  ");
                                }
                            }

                            if (keyInfo.Key == ConsoleKey.Backspace)
                            {
                                if (command.Length > 0)
                                {
                                    command = command.Substring(0, command.Length - 1);
                                    Console.Write(" ");
                                    Console.Write("\b");
                                }
                                else
                                {
                                    Console.Write(" ");
                                }
                            }
                            else if (keyInfo.KeyChar == ';')
                            {
                                commands.Add(command);
                                keyInfo          = Console.ReadKey();
                                afterCommandMode = true;
                                if (keyInfo.Key == ConsoleKey.Enter && command.ToLower() == "exit")
                                {
                                    dontStop = false;
                                    break;
                                }

                                command = "";
                            }
                            else if (keyInfo.Key == ConsoleKey.Spacebar ||
                                     keyInfo.Key == ConsoleKey.Tab)
                            {
                                if (!afterCommandMode)
                                {
                                    command += keyInfo.KeyChar;
                                }
                            }
                            else if (acceptableCharacters.IsMatch("" + keyInfo.KeyChar))
                            {
                                command += keyInfo.KeyChar;
                                if (afterCommandMode)
                                {
                                    afterCommandMode = false;
                                }
                            }
                            else
                            {
                                Console.Write(" ");
                                Console.Write("\b");
                            }
                        }

                        if (dontStop)
                        {
                        }
                    }
                }
                else
                {
                    if (!args[args.Length - 1].Contains('-'))
                    {
                        var commandInterpreter = new CommandInterpreter(loadedDatabase, args[args.Length - 1]);
                    }
                }
            }

            Table idntm          = loadedDatabase?["IDNTM"];
            Table nameNicknameId = new Table("NN", new Relation(("*Name", typeof(RADString)), ("&Nickname", typeof(RADString)), ("&ID", typeof(RADInteger))));

            nameNicknameId.Add("FreedomFries", "Fries", 1);
            nameNicknameId.Add("Toaster443", "Toaster", 2);
            nameNicknameId.Add("arvindsindhwani", "Nilla", 3);
            Table idRole = new Table("RoleInfo", new Relation(("*ID", typeof(RADInteger)), ("Role", typeof(RADString))));

            idRole.Add(1, "Admin");
            idRole.Add(3, "Admin");
            idRole.Add(2, "Standard");

            loadedDatabase?.addTable(nameNicknameId);
            loadedDatabase?.addTable(idRole);



            if (idntm != null)
            {
                var c = new CommandInterpreter(loadedDatabase, "{IDNTM[Name=*]@Name} as NameTable");
                c = new CommandInterpreter(loadedDatabase, "NameTable");
                c = new CommandInterpreter(loadedDatabase, "{NameTable(Name)=NN(Name)[NN.Name=*]} as NameTable2}");
                c = new CommandInterpreter(loadedDatabase,
                                           @"{IDNTM(Name)=(NN(ID)=RoleInfo(ID))(NN.Name)" +
                                           "[IDNTM.Time=*]" +
                                           "@IDNTM.ID,IDNTM.Name,IDNTM.Message} as CoolTable");
                c = new CommandInterpreter(loadedDatabase, "{NameTable2(Name)=CoolTable(Name)[CoolTable.Name=*]@CoolTable.ID}");

                (c.output as Table)?.PrintTableNoPadding();
                (c.output as Table)?.Dump();
                Console.WriteLine("Tuples Created: {0}", RelationalAlgebraModule.TuplesCreated);
                RelationalAlgebraModule.ResetTuplesCreated();

                /*
                 * c = new CommandInterpreter(loadedDatabase,
                 *      @"	{NN(ID)=RoleInfo(ID)
                 *              [RoleInfo.Role=Admin]
                 *              @NN.Name,NN.Nickname}");
                 * (c.output as Table)?.PrintTableNoPadding();
                 *
                 * Console.WriteLine("Tuples Created: {0}", RelationalAlgebraModule.TuplesCreated);
                 *
                 */
            }
        }
        public void TestSavePath()
        {
            var fileInteraction = new FileInteraction("2020");

            Assert.That(fileInteraction.SavePath, Is.EqualTo(ConfigurationManager.AppSettings["RepositoryDir"] + "\\" + fileInteraction.Year + "\\" + fileInteraction.Guid + "_Metadata.xml"));
        }
Esempio n. 9
0
        public async Task DeleteAndLog(params string[] args)
        {
            IEnumerable <IMessage> message = await Context.Channel.GetMessagesAsync().FlattenAsync();;
            int    result;
            bool   validReturn;
            bool   withName     = false;
            string replyMessage = "";

            string[] parameters = args;
            string   filename   = "";

            log.Info("Starting up the Delete and Log function.");

            if (parameters.Length == 0)
            {
                parameters = new string[] { "100" };
                var input = parameters[0];
                message = await Context.Channel.GetMessagesAsync(Convert.ToInt32(input)).FlattenAsync();

                replyMessage = "Are you sure you want to delete " + input + " lines? [Y/N]";
                validReturn  = true;
            }
            else if (parameters.Length == 1)
            {
                if (int.TryParse(parameters[0], out result) && Convert.ToInt32(parameters[0]) != 0)
                {
                    var input = result;
                    if (input > 100)
                    {
                        // Max number
                        input = 100;
                    }

                    message = await Context.Channel.GetMessagesAsync(Convert.ToInt32(input)).FlattenAsync();

                    replyMessage = "Are you sure you want to delete " + input + " lines? [Y/N]";
                    validReturn  = true;
                }
                else
                {
                    await ReplyAsync("Invalid input.");

                    validReturn = false;
                }
            }
            else if (parameters.Length == 2)
            {
                if (int.TryParse(parameters[0], out result) && Convert.ToInt32(parameters[0]) != 0)
                {
                    var input = result;
                    filename = parameters[1];
                    if (input > 100)
                    {
                        // Max number
                        input = 100;
                    }

                    message = await Context.Channel.GetMessagesAsync(Convert.ToInt32(input)).FlattenAsync();

                    replyMessage = "Are you sure you want to delete " + input + " lines? [Y/N]";
                    validReturn  = true;
                    withName     = true;
                }
                else
                {
                    await ReplyAsync("Invalid input.");

                    validReturn = false;
                }
            }
            else
            {
                replyMessage = "Are you sure you want to delete 100 lines? [Y/N]";
                validReturn  = true;
            }

            if (validReturn == true)
            {
                // Get the confirmation of the user
                log.Info("Getting confirmation to delete");
                await ReplyAsync(replyMessage);

                var response = await NextMessageAsync();

                AdminCommands ac = new AdminCommands();
                log.Debug("Immediately after");

                if (ac.GetConfirmation(response.ToString()) == true)
                {
                    log.Info("Deleting and logging messages...");

                    FileInteraction fi      = new FileInteraction();
                    List <Messages> msgList = new List <Messages>(); // Make a new list to pass

                    foreach (var item in message)
                    {
                        string lines;
                        if (item.Attachments.Count > 0 && withName == true)
                        {
                            lines = "[" + item.Timestamp + "] " + "(" + item.Channel + ") " + item.Author + ": " + item.Content + "\n<" + item.Attachments.Count + " item(s) attached>";
                            fi.Logged(lines, filename);
                        }
                        else if (item.Attachments.Count == 0 && withName == true)
                        {
                            lines = "[" + item.Timestamp + "] " + "(" + item.Channel + ") " + item.Author + ": " + item.Content;
                            fi.Logged(lines, filename);
                        }
                        else if (item.Attachments.Count > 0 && withName == false)
                        {
                            lines = "[" + item.Timestamp + "] " + "(" + item.Channel + ") " + item.Author + ": " + item.Content + "\n<" + item.Attachments.Count + " item(s) attached>";
                            fi.Logged(lines);
                        }
                        else
                        {
                            lines = "[" + item.Timestamp + "] " + "(" + item.Channel + ") " + item.Author + ": " + item.Content;
                            fi.Logged(lines);
                        }

                        if (item.Content.Contains("Deletion log") && item.Author.IsBot == true)
                        {
                            log.Debug("Ignoring bot message");
                        }
                        else if (item.Author.IsBot == true)
                        {
                            log.Debug("Ignoring bot message");
                            await item.DeleteAsync();
                        }
                        else
                        {
                            msgList.Add(new Messages(item.Author.ToString(), item.Timestamp.ToString(), item.Content)); // Add to the list

                            await item.DeleteAsync();

                            await Task.Delay(100);
                        }
                    }

                    if (withName == true)
                    {
                        string location = @"C:\Users\Amagi\source\repos\EimiBot\EimiBot2\logs\" + fi.GetDate() + "-deletionlogs - " + filename + ".txt";

                        await Context.Channel.SendFileAsync(location, "Deletion log for " + fi.GetTimestamp() + ": " + filename);
                    }
                    else
                    {
                        string location = @"C:\Users\Amagi\source\repos\EimiBot\EimiBot2\logs\" + fi.GetDate() + "-deletionlogs.txt";

                        await Context.Channel.SendFileAsync(location, "Deletion log for " + fi.GetTimestamp());
                    }

                    SheetsInteraction si = new SheetsInteraction();
                    log.Debug(si.UpdateTab(filename));
                    log.Debug(si.EditData(msgList));
                    log.Debug(si.AutoResize(filename));
                }
                else
                {
                    log.Info("No messages deleted and logged.");
                    await ReplyAsync("Will not delete messages.");
                }
            }
        }