private static string TryMark(int parametersCount, CommandParameters commandParameters, ref string modificationCompletedStatement) { modificationCompletedStatement = null; if (parametersCount < 1) { return("Chcesz `dodać` czy `wyświetlić` oceny? Wpisz odpowiednią komendę..."); } string addToSubject = null; if (parametersCount > 1) { addToSubject = commandParameters.Parameters[1]; } if (new Regex("(dodaj)|d$").IsMatch(commandParameters.Parameters[0].Trim())) { if (parametersCount < 4) { return("Brakuje jednego z argumentów. Pamietaj o `nazwie` i `wadze` przedmiotu!"); } if (!float.TryParse(commandParameters.Parameters[2], out float ocena)) { return("Problem z castowaniem `oceny`"); } if (!sbyte.TryParse(commandParameters.Parameters[3], out sbyte waga)) { return("Problem z castowaniem `wagi oceny`"); } if (_subjects.ContainsKey(addToSubject)) { _subjects[addToSubject].AddNewMark(ocena, waga); modificationCompletedStatement = "Poprawnie dodano ocene!"; return("Dodawanie oceny..."); } else { return("Taki przedmiot nie istnieje"); } } else if (new Regex("(wy[s|ś]wietl)|w$").IsMatch(commandParameters.Parameters[0].Trim())) { if (addToSubject != null) { if (!_subjects.ContainsKey(addToSubject)) { return("Brak poprawnego przedmiotu do wyświetlenia"); } } StringBuilder resultToSend = new StringBuilder(); foreach (var subject in _subjects) { Subject currentSubject = subject.Value; if (addToSubject == null) { resultToSend.Append($"{currentSubject.ShowSubjectDetails(true)}"); } else { if (subject.Key == addToSubject) { return(currentSubject.ShowSubjectDetails()); } } } if (resultToSend.Length > 2000) { return("Nie można wyświetlić wszystkich ocen ze względu na ograniczenia ilości znaków"); } else if (resultToSend.Length == 0) { return("Brak ocen do wyświetlenia"); } return(resultToSend.ToString()); } else if (new Regex("(archiwum)|a$").IsMatch(commandParameters.Parameters[0].Trim())) { if (parametersCount > 1) { if (new Regex("(semestry)|s$").IsMatch(commandParameters.Parameters[1].Trim())) { StringBuilder toReturn = new StringBuilder(); foreach (var subject in _subjects) { toReturn.AppendLine($"Dla przedmiotu: {subject.Key} {subject.Value.GetAllTerms()}"); } return(toReturn.ToString()); } if (parametersCount > 3) { if (!Int32.TryParse(commandParameters.Parameters[2], out int yearNo)) { return("Problem z castowaniem `numeru roku`"); } if (!Int32.TryParse(commandParameters.Parameters[3], out int termNo)) { return("Problem z castowaniem `numeru semestru`"); } if (new Regex("(wyswietl)|w$").IsMatch(commandParameters.Parameters[1].Trim())) { StringBuilder toReturn = new StringBuilder(); foreach (var subject in _subjects) { toReturn.Append(_subjects[subject.Key].GetArchivizedMarks(new Term(yearNo, termNo))); } return(toReturn.ToString()); } else if (new Regex("(archiwizuj)|a$").IsMatch(commandParameters.Parameters[1].Trim())) { bool isSomethingArchived = false; foreach (var subject in _subjects) { if (_subjects[subject.Key].IsTermArchived(new Term(yearNo, termNo))) { modificationCompletedStatement += $"Przedmiot {subject.Key} już został zarchiwizowany dla takiego semestru! \n"; continue; } _subjects[subject.Key].ArchivizeMarks(yearNo, termNo); isSomethingArchived = true; } if (isSomethingArchived) { modificationCompletedStatement += "\n\nZarchiwizowano!"; } else { modificationCompletedStatement += "\n\nNie było czego archiwizować!"; } return("Archiwizacja ocen...\n\n"); } } else { return("Podano za mało parametrów! Template: *a w/a <numer_roku> <numer_semestru>"); } } else { return("Nie podano pocji dla *archiwum*"); } } return("Nieznany błąd *TryMark()*"); }