public override BaseAction Handle(string inputString) { State = ActionState.NotFound; var actionWord = Type.ToLower(); if (inputString.ToLower().Contains(actionWord)) { IEnumerable <int> sequence = null; foreach (var piece in inputString.Split(' ')) { sequence = MenuChooseItem.ValidateInput(piece); if (sequence != null) { sequence = sequence.Select(i => i - 1).Where(i => i >= 0); break; } } ConfirmAction($"{actionWord} the last selection", () => { State = ActionState.FoundAndHandled; var stagesDepth = SharedVars.ChosenItemsTillNow.Count; switch (stagesDepth) { case 0 when sequence == null: HandleLink("https://courses.finki.ukim.mk/"); break;
/// <summary> /// if no numbers given => add/remove previously selected links or whole course or section /// if numbers given => add/remove selected links or whole course or section /// </summary> public override BaseAction Handle(string inputString) { State = ActionState.NotFound; if (inputString.ToLower().Contains(Type.ToLower())) { IEnumerable <int> sequence = null; foreach (var piece in inputString.Split(' ')) { sequence = MenuChooseItem.ValidateInput(piece); if (sequence != null) { sequence = sequence.Select(i => i - 1).Where(i => i >= 0); break; } } ConfirmAction( $"will {Type.ToLower()} selected/chosen items (recursively) {ToFromWord.ToLower()} download queue", () => { State = ActionState.FoundAndHandled; AddRemoveSelectedItems(sequence); }); } return(this); }
private static int OnInQueueActionWords(string fullInputString, string linksPage, int page, int pageSize) { if (fullInputString.ToLower().Contains("clear")) { SharedVars.DownloadQueue.Clear(); return(0); } if (fullInputString.ToLower().Contains("download")) { throw new DownloadAction(); } if (fullInputString.ToLower().Contains("remove")) { IEnumerable <int> sequence = null; foreach (var piece in fullInputString.Split(' ')) { sequence = MenuChooseItem.ValidateInput(piece); if (sequence != null) { sequence = sequence.Select(i => i - 1) .Where(i => i >= 0 && i < linksPage.Split('\n').Length); break; } if (piece.ToLower() == "all") { SharedVars.DownloadQueue.Clear(); return(0); } } if (sequence != null) { page = page > 0 ? --page : page; var matchingLinks = SharedVars.DownloadQueue.Skip(page * pageSize) .Take(pageSize) .Where((_, i) => sequence.Contains(i)); SharedVars.DownloadQueue.RemoveAll(link => matchingLinks.Contains(link)); } } return(page); }