private async Task<TelegramBotReply> Step1(TelegramBot.TelegramBot bot, Message m, CustomRoosterMessageFlowObject flow) { //Step1 faalt altijd, er is altijd step 3 vereist MessageFlow.Failed(); if (flow.IsDocent) { var values = m.Text.ToLower().Trim().Split(' '); foreach (var doc in await WindesheimRoosterConvertor.GetDocentenLijst()) { string docCode = doc.Name.ToLower(), docName = doc.DisplayName.ToLower(); bool hit = true; foreach(var value in values) { if (!docCode.Contains(value) && !docName.ToLower().Contains(value)) { hit = false; break; } } if (hit && flow.AddDocent(doc) > 10) //als we een hit hebben, voegen we een docent toe, als deze docent de 11e is stoppen we met toevoegen want dat zijn teveel resultaten break; } var count = flow.DocentCount; if (count == 1) return Message(m, $"Ok, welk rooster wil je van '{flow.Docent}' zien?", replyMarkup: Keyboard); else if (count > 10) { flow.Docenten = null; return Message(m, "Er zijn meer dan 10 docenten gevonden die aan je zoekopdracht voldoen.\r\nJe dient iets specifieker te zijn in je vraag.", replyMarkup: ForceReply.Instance); } else if (count > 1) //count zit tussen 2 en 10 return Message(m, "Er zijn meerdere docenten gevonden! Van welke docent wil je het rooster zien?", replyMarkup: KeyboardForDocenten(flow.Docenten)); } else { var value = m.Text.ToLower().Trim(); foreach (var klas in await WindesheimRoosterConvertor.GetKlassenLijst()) if (klas.Name.ToLower() == value) { flow.Klas = klas; return Message(m, $"Ok, welk rooster wil je van de klas {klas} zien?", replyMarkup: Keyboard); } } var codeType = flow.IsDocent ? "docentcode" : "klascode"; return Message(m, $"Het is niet gelukt! De {codeType} {m.Text} is niet gevonden!\r\nJe kunt op /annuleer tikken om te stoppen.", replyMarkup: ForceReply.Instance); }
private async Task<TelegramBotReply> Step3(TelegramBot.TelegramBot bot, Message m, CustomRoosterMessageFlowObject flow) { var text = m.Text; if (text == "deze week") text = "rooster"; return await WindesheimBot.RoosterMessageHandler.GetRoosterForDocentOrKlas($"/{text}", null, m.From, (RoosterFor)flow.Klas ?? flow.Docent, useUserPreferences: false); }
protected async override Task<TelegramBotReply> HandleMessageAsync(TelegramBot.TelegramBot bot, Message m, MessageHandlerType type) { if (!m.HasArguments) { var flowObj = new CustomRoosterMessageFlowObject(m.Command == SLASHDOCENTROOSTER) { Handler = _replyHandler }; m.From.MessageFlow = new MessageFlow(m.From, flowObj); if (m.Command == SLASHDOCENTROOSTER) return Message(m, "Van welke docent wil je het rooster zien? Vul de naam, of docentcode in.", replyMarkup: ForceReply.Instance); else return Message(m, "Van welke klas wil je het rooster zien? Vul de klascode in.", replyMarkup: ForceReply.Instance); } RoosterFor roosterFor = null; var code = m.Arguments[0].ToLower(); switch (m.Command) { case SLASHDOCENTROOSTER: foreach(var d in await WindesheimRoosterConvertor.GetDocentenLijst()) if(d.Name.ToLower() == code) { roosterFor = d; break; } break; case SLASHKLASROOSTER: foreach(var k in await WindesheimRoosterConvertor.GetKlassenLijst()) if(k.Name.ToLower() == code) { roosterFor = k; break; } break; } if (roosterFor != null) { string[] arguments = null; if (m.Arguments.Length >= 2) { arguments = new string[m.Arguments.Length - 1]; for (var i = 1; i < m.Arguments.Length; i++) arguments[i - 1] = m.Arguments[i]; } return await WindesheimBot.RoosterMessageHandler.GetRoosterForDocentOrKlas(RoosterMessageHandler.SLASHCOMMAND, arguments, m.From, roosterFor); } var commandName = m.Command == SLASHDOCENTROOSTER ? "docent" : "klas"; return Message(m, $"De {commandName} met code '{m.Arguments[0]}' is niet gevonden."); }
private TelegramBotReply Step2(TelegramBot.TelegramBot bot, Message m, CustomRoosterMessageFlowObject flow) { MessageFlow.Failed(); //Step2 faalt altijd, er is altijd step 3 vereist foreach(var doc in flow.Docenten) if(doc.ToString() == m.Text) { flow.Docent = doc; break; } if (flow.Docent == null) return Message(m, "Onjuiste invoer! Gebruik de toetsen op het toetsenbord!\r\nJe kunt op /annuleer tikken om te stoppen.", replyMarkup: KeyboardForDocenten(flow.Docenten)); flow.Docenten = null; return Message(m, $"Ok, welk rooster wil je van '{flow.Docent}' zien?", replyMarkup: Keyboard); }