public static async Task GetRawResults()
        {
            var students = JsonConvert.DeserializeObject <Dictionary <int, Guid> >(await File.ReadAllTextAsync("D://timusForPlugiarism/students.json"));
            var tasks    = JsonConvert.DeserializeObject <Dictionary <string, Guid> >(await File.ReadAllTextAsync("D://timusForPlugiarism/tasks.json"))
                           .ToDictionary(kvp =>
            {
                var match    = Regex.Match(kvp.Key, @"TaskName { Practice = (\d+), Letter = (\w), language = (\w+) }");
                var practice = match.Groups[1].Value;
                var letter   = match.Groups[2].Value;
                var language = (Language)Enum.Parse(typeof(Language), match.Groups[3].Value);
                return(new TaskName {
                    Practice = practice, Letter = letter, language = language
                });
            }, kvp => kvp.Value);

            var antiplagiarismClientConfiguration = ApplicationConfiguration.Read <UlearnConfiguration>().AntiplagiarismClient;
            var client = new AntiPlagiarismClient(antiplagiarismClientConfiguration.Endpoint, antiplagiarismClientConfiguration.Token);

            var parsed = await ParseFiles();

            var result = new List <PlagiarismsResponse>();
            var i      = 0;

            foreach (var(task, student) in parsed.Select(s => (s.Task, s.Student)).Distinct())
            {
                var studentId         = students[student];
                var taskId            = tasks[task];
                var authorPlagiarisms = await client.GetAuthorPlagiarismsAsync(new GetAuthorPlagiarismsParameters { TaskId = taskId, AuthorId = studentId });

                result.Add(new PlagiarismsResponse {
                    AuthorPlagiarisms = authorPlagiarisms, Student = student, Task = task
                });
                i++;
                Console.WriteLine(i);
            }

            await File.WriteAllTextAsync("D://timusForPlugiarism/plagiarismsResponses.json", JsonConvert.SerializeObject(result, Formatting.Indented));
        }
        public static async Task UploadSolutions()
        {
            var parsed = await ParseFiles();

            var tasks    = new Dictionary <TaskName, Guid>();
            var students = new Dictionary <int, Guid>();
            var addSubmissionParameters = parsed.Select(p =>
            {
                var(task, student, submission, filePath) = p;
                if (!tasks.ContainsKey(task))
                {
                    tasks[task] = Guid.NewGuid();
                }
                if (!students.ContainsKey(student))
                {
                    students[student] = Guid.NewGuid();
                }
                return(new AddSubmissionParameters
                {
                    TaskId = tasks[task],
                    AuthorId = students[student],
                    Code = File.ReadAllText(filePath),
                    Language = task.language,
                    ClientSubmissionId = submission
                });
            }).ToList();
            await File.WriteAllTextAsync("D://timusForPlugiarism/students.json", JsonConvert.SerializeObject(students, Formatting.Indented));

            await File.WriteAllTextAsync("D://timusForPlugiarism/tasks.json", JsonConvert.SerializeObject(tasks, Formatting.Indented));

            var antiplagiarismClientConfiguration = ApplicationConfiguration.Read <UlearnConfiguration>().AntiplagiarismClient;
            var client = new AntiPlagiarismClient(antiplagiarismClientConfiguration.Endpoint, antiplagiarismClientConfiguration.Token);

            foreach (var p in addSubmissionParameters)
            {
                await client.AddSubmissionAsync(p);
            }
        }