public void GetCodeController() { CodeController home = new CodeController(); string result = home.GetShowMeTheCode(); Assert.IsNotNull(result); }
public override void Apply(XmlDocument document, string key) { CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } codeController.UnregisterAll(); try { ApplyCodes(document, key); if (_codeRefEnabled) { ApplyCodeRefs(document, key); } } catch (Exception ex) { this.WriteMessage(MessageLevel.Error, ex); } }
public ReferenceCodeComponent(BuildAssembler assembler, XPathNavigator configuration) : base(assembler, configuration, false) { _codeRefStorage = SnippetStorage.Database; //Default to database storage... if (this.Mode == CodeHighlightMode.IndirectIris) { _codeRefSeparator = "\n...\n\n"; } else { _codeRefSeparator = "\n...\n"; } try { this.ParseSources(configuration, false); _codeRefSelector = XPathExpression.Compile("//codeReference"); _codeSelector = XPathExpression.Compile("//code"); CodeController.Create("reference", this.Mode); } catch (Exception ex) { base.WriteMessage(MessageLevel.Error, ex); } }
public ReferencePostTransComponent(BuildAssembler assembler, XPathNavigator configuration) : base(assembler, configuration) { try { _rootId = String.Empty; CodeController codeController = CodeController.GetInstance("reference"); if (codeController != null) { _codeApply = true; _codeSelector = XPathExpression.Compile( "//pre/span[@name='SandAssist' and @class='tgtSentence']"); _mathSelector = XPathExpression.Compile( "//img/span[@name='SandMath' and @class='tgtSentence']"); } _mediaSelector = XPathExpression.Compile( "//img/span[@name='SandMedia' and @class='tgtSentence']"); this.ParseRootNamespace(configuration); } catch (Exception ex) { this.WriteMessage(MessageLevel.Error, ex); } }
public ConceptualCodeComponent(BuildAssembler assembler, XPathNavigator configuration) : base(assembler, configuration, true) { _codeRefStorage = SnippetStorage.Database; //Default to database storage... _codeRefSeparator = "\n...\n\n"; try { this.ParseSources(configuration, true); _codeRefContext = new CustomContext(); _codeRefContext.AddNamespace("ddue", "http://ddue.schemas.microsoft.com/authoring/2003/5"); _codeRefSelector = XPathExpression.Compile("//ddue:codeReference"); _codeRefSelector.SetContext(_codeRefContext); _codeContext = new CustomContext(); _codeContext.AddNamespace("ddue", "http://ddue.schemas.microsoft.com/authoring/2003/5"); _codeSelector = XPathExpression.Compile("//ddue:code"); _codeSelector.SetContext(_codeContext); CodeController.Create("conceptual", this.Mode); } catch (Exception ex) { base.WriteMessage(MessageLevel.Error, ex); } }
private void FormCodeAdd_Load(object sender, EventArgs e) { cctr = new CodeController(); LoadCodes(); LoadWorkCode(); if (dbobj == null) { bSave.Enabled = false; } }
public ConceptualPostTransComponent(BuildAssembler assembler, XPathNavigator configuration) : base(assembler, configuration) { try { MathController mathFormatters = MathController.GetInstance("conceptual"); if (mathFormatters != null) { _mathApply = true; _mathNumber = mathFormatters.ShowNumber; _mathNumFormat = mathFormatters.NumberFormat; _mathNumIncludePage = mathFormatters.NumberIncludesPage; _mathSelector = XPathExpression.Compile( "//artLink[starts-with(@target, 'Equation|')]"); if (String.IsNullOrEmpty(_mathNumFormat)) { if (_mathNumIncludePage) { _mathNumFormat = "({0}.{1})"; } else { _mathNumFormat = "({0})"; } } } CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController != null) { _codeApply = true; // This works for Vs2005... _codeSelector = XPathExpression.Compile( "//pre/span[@name='SandAssist' and @class='tgtSentence']"); _spanSelector = XPathExpression.Compile( "span[@name='SandAssist' and @class='tgtSentence']"); } _tokensSelector = XPathExpression.Compile( "//span[@name='SandTokens' and @class='tgtSentence']"); } catch (Exception ex) { this.WriteMessage(MessageLevel.Error, ex); } }
public void CodeController_BadModel() { //Arrange var mockService = new Mock <ICodeService>(); var controller = new CodeController(mockService.Object); controller.ModelState.AddModelError("error", "error"); //Act var result = controller.RedeemCode(vm: null); //Assert Assert.IsType <BadRequestResult>(result); }
public void CodeController_RedeemCode() { //Arrange var vm = new CodeRedeemViewModel { UserAccountId = "1", Code = "1" }; var mockService = new Mock <ICodeService>(); mockService.Setup(serv => serv.RedeemCode(vm)) .Returns(true); var controller = new CodeController(mockService.Object); //Act var result = controller.RedeemCode(vm: vm); //Assert Assert.IsType <OkResult>(result); }
public async Task <IHttpActionResult> WebHook(Update update) { long chatId = 0; try { var bot = new BotBrains(Request.Headers.Host); Telegram = new TelegramBotClient(bot.BotToken); if (update.Type == UpdateType.MessageUpdate) { var message = update.Message; chatId = message.Chat.Id; var parser = ParserChoser.GetParser(chatId, bot); if (message.Type == MessageType.TextMessage || message.Type == MessageType.PhotoMessage || message.Type == MessageType.SuccessfulPayment) { var cmd = parser.ParseForCommand(update); switch (cmd) { case CmdTypes.Start: { var greetings = "Здравствуйте, меня зовут ДайнерБот! Я помогу вам сделать заказ. " + "Для того, чтобы ознакомиться с меню нажмите \"Меню\", чтобы " + "сделать заказ нажмите \"Заказать\"."; await Telegram.SendTextMessageAsync( chatId, bot.GreetingsText ?? greetings, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Greetings: { var responce = bot.Greetings(chatId); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Restrunt: { var responce = bot.Restrunt(chatId, message.Text); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.TableNumber: { var responce = bot.AssignTableNumber(chatId, message.Text); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.RequestPayment: { var responce = bot.PaymentRequest(chatId); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.InputSumm: { var response = bot.InputSumm(chatId, message.Text, message.Chat.Username); if (response.InvoiceReady) { var prices = new LabeledPrice[1]; prices[0] = new LabeledPrice { Amount = response.Invoice.SummInCents, Label = "Итого" }; await Telegram.SendInvoiceAsync( chatId, response.Invoice.Title, response.Invoice.Description, response.Invoice.Id.ToString(), bot.PaymentToken, "startP", response.Invoice.Currency, prices); } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.Menu: { var responce = bot.ShowMenuCategories(chatId); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : new MenuCategorySessionParser(bot.GetMenuCategoriesByChatId(chatId)).Keyboard); break; } case CmdTypes.RequestFeedback: { var responce = bot.FeedbackRequest(chatId); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.LeaveFeedback: { var responce = bot.LeaveFeedback(chatId, message.Chat.Username, message.Text); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.RequestBooking: { var responce = bot.BookingRequest(chatId); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.LeaveBooking: { var responce = bot.LeaveBooking(chatId, message.Text); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.CancelTable: { var responce = bot.CancelTable(chatId); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Category: { var response = bot.SnowMenuByCategory(chatId, message.Text); if (response.Dishes != null) { await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : InlineKeyBoardManager.MenuKeyBoard(response.Dishes)); } else { await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.CloseMenu: { var response = bot.CloseMenu(chatId); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.SuccessfulPayment: { var payment = message.SuccessfulPayment; var responce = bot.SuccessPayment(chatId, payment.InvoicePayload, payment.TotalAmount, payment.TelegramPaymentChargeId, payment.Currency); await Telegram.SendTextMessageAsync( chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Cart: { var responce = bot.ShowCart(chatId); if (responce.NeedInlineKeeyboard) { var keyboard = InlineKeyBoardManager.GetByCmnd(CmdTypes.Cart); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : keyboard); } else { await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.MyOrders: { var responce = bot.ShowAllOrders(chatId); await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Remark: { var response = bot.AddRemark(chatId, message.Text); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.CloseTimeArriving: { var response = bot.CloseTimeArriving(chatId); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Waiter: { var response = bot.CallWaiter(chatId); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Remove: { var response = bot.RemoveFromOrder(chatId); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.RemoveByNum: { var response = bot.RemoveFromOrderByNum(chatId, message.Text); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Unknown: { await Telegram.SendTextMessageAsync( chatId, "Извините, не понял вашей просьбы.", parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.QRCode: { var code = ""; var file = await Telegram.GetFileAsync(message.Photo.LastOrDefault()?.FileId); var filename = bot.PicturePath + chatId + "." + file.FilePath.Split('.').Last(); using (var saveImageStream = System.IO.File.Open(filename, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite)) { await file.FileStream.CopyToAsync(saveImageStream); saveImageStream.Position = 0; saveImageStream.Close(); } file.FileStream.Position = 0; file.FileStream.Close(); code = CodeController.ReadCode(filename); if (System.IO.File.Exists(filename)) { System.IO.File.Delete(filename); } if (code != null) { var response = bot.QRCode(chatId, code); await Telegram.SendTextMessageAsync( chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } else { await Telegram.SendTextMessageAsync( chatId, "Не удалось распознать код! Попробуйте еще раз или выберите ресторан и номер стола через меню!", parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.Actions: { await Telegram.SendTextMessageAsync( chatId, bot.Actions, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Description: { await Telegram.SendTextMessageAsync( chatId, bot.Description, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Location: { var responce = bot.GetAllRestaurants(chatId); if (responce.IsOk) { foreach (var restaurant in responce.RestaurantsInfo) { await Telegram.SendTextMessageAsync(chatId, restaurant.Info, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); await Telegram.SendLocationAsync(chatId, restaurant.Latitude, restaurant.Longitude, replyMarkup : InlineKeyBoardManager.TaxiKeyboard()); } } else { await Telegram.SendTextMessageAsync(chatId, responce.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } } } } else if (update.Type == UpdateType.CallbackQueryUpdate) { chatId = update.CallbackQuery.Message.Chat.Id; var parser = ParserChoser.GetParser(chatId, bot); var cmd = parser.ParseForCommand(update); switch (cmd) { case CmdTypes.AddToOrder: { var response = bot.OrderMeal(chatId, update.CallbackQuery.Data); if (response.IsOk) { var keyboard = InlineKeyBoardManager.RemarkKeyBoard(response.Modificators); await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : keyboard); } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.AddMod: { var response = bot.AddModificator(chatId, update.CallbackQuery.Data); if (response.IsOk) { if (response.Modificators.Any()) { var keyboard = InlineKeyBoardManager.RemarkKeyBoard(response.Modificators); await Telegram.EditMessageTextAsync(chatId, update.CallbackQuery.Message.MessageId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : keyboard); } else { await Telegram.EditMessageTextAsync(chatId, update.CallbackQuery.Message.MessageId, response.ResponceText, parseMode : ParseMode.Html); } } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.BackToMenu: { var response = bot.ShowMenuCategories(chatId); await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : new MenuCategorySessionParser(bot.GetMenuCategoriesByChatId(chatId)).Keyboard); break; } case CmdTypes.DishDetails: { var response = bot.GetMenuItem(chatId, update.CallbackQuery.Data); if (response.NeedInlineKeyboard) { var keyboard = InlineKeyBoardManager.DescriptionKeyBoard(response.DishId); await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : keyboard); } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.ArrivingTime: { var response = bot.ArrivingTime(chatId); if (response.OkToChangeTime) { await Telegram.EditMessageTextAsync(chatId, update.CallbackQuery.Message.MessageId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : InlineKeyBoardManager.GetByCmnd(CmdTypes.ArrivingTime)); } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.TimeInput: { var timeResp = bot.ChangeArrivingTime(chatId, update.CallbackQuery.Data); if (!timeResp.OkToChangeTime) { await Telegram.SendTextMessageAsync(chatId, timeResp.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } else { var orderResp = bot.ShowCart(chatId); if (orderResp.NeedInlineKeeyboard) { var keyboard = InlineKeyBoardManager.GetByCmnd(CmdTypes.Cart); await Telegram.EditMessageTextAsync(chatId, update.CallbackQuery.Message.MessageId, orderResp.ResponceText, parseMode : ParseMode.Html, replyMarkup : keyboard); } else { await Telegram.SendTextMessageAsync(chatId, orderResp.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } } break; } case CmdTypes.CreateInvoice: { var response = bot.CreateInvoice(chatId); if (response.InvoiceReady) { var prices = new LabeledPrice[1]; prices[0] = new LabeledPrice { Amount = response.Invoice.SummInCents, Label = "Итого" }; await Telegram.SendInvoiceAsync( chatId, response.Invoice.Title, response.Invoice.Description, response.Invoice.Id.ToString(), bot.PaymentToken, "startP", response.Invoice.Currency, prices); } else { await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); } break; } case CmdTypes.PayCash: { var response = bot.PayCash(chatId); await Telegram.SendTextMessageAsync(chatId, response.ResponceText, parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } case CmdTypes.Unknown: { await Telegram.SendTextMessageAsync( chatId, "Извините, не понял вашей просьбы.", parseMode : ParseMode.Html, replyMarkup : ParserChoser.GetParser(chatId, bot).Keyboard); break; } } } else if (update.Type == UpdateType.PreCheckoutQueryUpdate) { chatId = update.PreCheckoutQuery.From.Id; var preCheck = update.PreCheckoutQuery; var response = bot.PreCheckout(chatId, preCheck.TotalAmount, preCheck.Currency, preCheck.InvoicePayload); if (!response.IsError) { await Telegram.AnswerPreCheckoutQueryAsync(preCheck.Id, true); } else { await Telegram.AnswerPreCheckoutQueryAsync(preCheck.Id, false, errorMessage : response.ResponceText); } } } catch (Exception ex) { new LogWriter().WriteException(ex.Message); if (chatId != 0 && Telegram != null) { if (ex.Message.Contains("429")) { var excResponce = Responce.UnknownResponce(chatId); await Telegram.SendTextMessageAsync( chatId, "К сожалению Телеграм не позволяет нам так часто вам отвечать 😔, подождите пару минут пожалуйста.", parseMode : ParseMode.Html); } else { var excResponce = Responce.UnknownResponce(chatId); await Telegram.SendTextMessageAsync( chatId, excResponce.ResponceText, parseMode : ParseMode.Html); } } } return(Ok()); }
private void ApplyMultiSnippetInfo(XPathNavigator navigator, SnippetInfo[] arrayInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } IList <SnippetItem> listItems = null; int infoCount = arrayInfo.Length; Dictionary <string, List <SnippetItem> > dicLangItems = new Dictionary <string, List <SnippetItem> >(); // We group the various snippets by the languages... for (int i = 0; i < infoCount; i++) { SnippetInfo snippetInfo = arrayInfo[i]; listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { int itemCount = listItems.Count; for (int j = 0; j < itemCount; j++) { SnippetItem snippet = listItems[j]; List <SnippetItem> list; if (!dicLangItems.TryGetValue(snippet.Language, out list)) { list = new List <SnippetItem>(); dicLangItems.Add(snippet.Language, list); } list.Add(snippet); } } } XmlWriter xmlWriter = navigator.InsertAfter(); xmlWriter.WriteStartElement("snippets"); xmlWriter.WriteAttributeString("reference", input); foreach (KeyValuePair <string, List <SnippetItem> > pair in dicLangItems) { listItems = pair.Value; int itemCount = listItems.Count; xmlWriter.WriteStartElement("snippet"); string codeLang = pair.Key; Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, codeLang); if (highlightMode == CodeHighlightMode.None) { for (int j = 0; j < itemCount; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteString(listItems[j].Text); } } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(codeLang); xmlWriter.WriteEndElement(); for (int j = 0; j < itemCount; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "srcSentence"); xmlWriter.WriteValue(codeController.Count); xmlWriter.WriteEndElement(); codeController.Register(listItems[j]); } } else { if (highlighter != null) { xmlWriter.WriteStartElement("markup"); // start - markup for (int j = 0; j < listItems.Count; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } StringReader textReader = new StringReader(listItems[j].Text); highlighter.Highlight(textReader, xmlWriter); } xmlWriter.WriteEndElement(); // end - markup } else { for (int j = 0; j < listItems.Count; j++) { if (j > 0) { xmlWriter.WriteString(_codeRefSeparator); } xmlWriter.WriteString(listItems[j].Text); } } } xmlWriter.WriteEndElement(); } xmlWriter.WriteEndElement(); xmlWriter.Close(); navigator.DeleteSelf(); }
private void ApplyCodes(XmlDocument document, string key) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } XPathNavigator docNavigator = document.CreateNavigator(); XPathNodeIterator iterator = docNavigator.Select(_codeSelector); XPathNavigator navigator = null; XPathNavigator[] arrNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(iterator); if (arrNavigator == null || arrNavigator.Length == 0) { return; } int tabSize = this.TabSize; int itemCount = arrNavigator.Length; for (int i = 0; i < itemCount; i++) { navigator = arrNavigator[i]; if (navigator == null) // not likely! { continue; } string codeText = navigator.Value; if (String.IsNullOrEmpty(codeText)) { this.WriteMessage(MessageLevel.Warn, "CodeHighlightComponent: source code is null/empty."); continue; } StringBuilder inputText = CodeFormatter.StripLeadingSpaces( codeText, tabSize); if (inputText == null || inputText.Length == 0) { continue; } string codeLang = navigator.GetAttribute("language", String.Empty); if (String.IsNullOrEmpty(codeLang)) { navigator.SetValue(inputText.ToString()); continue; } inputText.Replace("<codeFeaturedElement>", String.Empty); inputText.Replace("<codeFeaturedElement/>", String.Empty); inputText.Replace("<placeholder>", String.Empty); inputText.Replace("<placeholder/>", String.Empty); inputText.Replace("<comment>", String.Empty); inputText.Replace("<comment/>", String.Empty); inputText.Replace("<legacyItalic>", String.Empty); inputText.Replace("<legacyItalic/>", String.Empty); _codeCount++; XmlWriter xmlWriter = navigator.InsertAfter(); xmlWriter.WriteStartElement("snippets"); // start - snippets xmlWriter.WriteAttributeString("reference", _codeCount.ToString()); xmlWriter.WriteStartElement("snippet"); // start - snippet Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, codeLang); if (highlightMode == CodeHighlightMode.None) { xmlWriter.WriteString(inputText.ToString()); } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(codeLang); xmlWriter.WriteEndElement(); xmlWriter.WriteString(inputText.ToString()); } else { if (highlighter != null) { if (highlightMode == CodeHighlightMode.DirectIris) { xmlWriter.WriteStartElement("markup"); // start - markup } StringReader textReader = new StringReader( inputText.ToString()); highlighter.Highlight(textReader, xmlWriter); if (highlightMode == CodeHighlightMode.DirectIris) { xmlWriter.WriteEndElement(); // end - markup } } else { xmlWriter.WriteString(inputText.ToString()); } } xmlWriter.WriteEndElement(); // end - snippet xmlWriter.WriteEndElement(); // end - snippets xmlWriter.Close(); navigator.DeleteSelf(); } }
private void Awake() { instance = this; }
private void ApplyCode(XPathNavigator docNavigator) { CodeController codeController = CodeController.GetInstance("reference"); if (codeController == null || codeController.Mode != CodeHighlightMode.IndirectIris) { return; } XPathNodeIterator iterator = docNavigator.Select(_codeSelector); if (iterator == null || iterator.Count == 0) { return; } XPathNavigator navigator = null; XPathNavigator[] arrNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(iterator); int itemCount = arrNavigator.Length; for (int i = 0; i < itemCount; i++) { navigator = arrNavigator[i]; if (navigator == null) { continue; } string codeLang = navigator.Value; if (navigator.MoveToParent() && String.Equals(navigator.Name, "pre")) { XPathNavigator placeHolder = navigator.SelectSingleNode( "span[@name='SandAssist' and @class='tgtSentence']"); if (placeHolder != null) { placeHolder.DeleteSelf(); } Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); XPathNodeIterator snipIterator = navigator.Select( "span[@name='SandAssist' and @class='srcSentence']"); XPathNavigator[] arrSnipNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(snipIterator); if (arrSnipNavigator == null || arrSnipNavigator.Length == 0) { string codeText = navigator.Value; if (String.IsNullOrEmpty(codeText) == false) { if (highlighter != null) { XmlWriter xmlWriter = navigator.InsertAfter(); StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); // For the two-part or indirect, we add extra line-break // since this process delete the last extra line. xmlWriter.WriteStartElement("br"); // start - br xmlWriter.WriteEndElement(); // end - br xmlWriter.Close(); navigator.DeleteSelf(); } } } else { XPathNavigator snipNavigator = null; int snipCount = arrSnipNavigator.Length; for (int j = 0; j < snipCount; j++) { snipNavigator = arrSnipNavigator[j]; if (snipNavigator == null) { continue; } int snipIndex = snipNavigator.ValueAsInt; SnippetItem item = codeController[snipIndex]; if (item == null) { this.WriteMessage(MessageLevel.Warn, "A code snippet specified could not be found. See next message for details."); snipNavigator.DeleteSelf(); continue; } string codeText = item.Text; if (String.IsNullOrEmpty(codeText) == false) { XmlWriter xmlWriter = snipNavigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); snipNavigator.DeleteSelf(); } } } } } }
public IActionResult SubmitCodeSnippet(int id, int?assignmentId, int?categoryId) { //we need to grab the code form the text area string code = Request.Form["Code"]; //create instance of codecontroller to reuse code for compiling and running code CodeController codeController = new CodeController(); string results = codeController.GetResults(code).Trim(); //we want to trim it from escape characters ex: \n \r, only works if they are @ end or beginning, which works perfectly with what we want //grab the specific assignment var assignment = _context.CodeSnippets.Where(c => c.CodeSnippetId == assignmentId).First(); //check if the results is equal to the answer in the specific assignment bool isCorrect = false; if (assignment.Answer == results) { isCorrect = true; } //get userEmail string userEmail = User.Identity.Name; //create new instance of submission CodeSnippetSubmission newSubmission = new CodeSnippetSubmission { AssignmentId = (int)assignmentId, UserEmail = userEmail, UserCode = code, IsCorrect = isCorrect }; _context.Add(newSubmission); _context.SaveChanges(); //create new submission to be used for report Submission newSub = new Submission { AssignmentId = (int)assignmentId, CategoryId = 2, CourseId = id, UserEmail = User.Identity.Name }; _context.Add(newSub); _context.SaveChanges(); TempData["Success"] = "Assignment Successfully Submitted!"; return(RedirectToRoute(new { controller = "Course", action = "Show", id = id })); }
private void ApplyCode(XPathNavigator docNavigator, XPathExpression codeSelector) { CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null || codeController.Mode != CodeHighlightMode.IndirectIris) { return; } XPathNodeIterator iterator = docNavigator.Select(codeSelector); if (iterator == null || iterator.Count == 0) { return; } XPathNavigator navigator = null; XPathNavigator[] arrNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(iterator); int itemCount = arrNavigator.Length; string spanNamespace = "http://ddue.schemas.microsoft.com/authoring/2003/5"; string attrName = String.Empty; string attrClass = String.Empty; for (int i = 0; i < itemCount; i++) { navigator = arrNavigator[i]; if (navigator == null) { continue; } string codeLang = null; XPathNodeIterator nodeIterator = navigator.SelectChildren("span", spanNamespace); XPathNavigator placeHolder = null; if (nodeIterator == null || nodeIterator.Count == 0) { continue; } XPathNavigator[] arrSnipNavigator = BuildComponentUtilities.ConvertNodeIteratorToArray(nodeIterator); int nodeCount = arrSnipNavigator.Length; XPathNavigator tempHolder = arrSnipNavigator[0]; attrName = tempHolder.GetAttribute("name", String.Empty); attrClass = tempHolder.GetAttribute("class", String.Empty); if (String.Equals(attrName, "SandAssist") && String.Equals(attrClass, "tgtSentence")) { placeHolder = tempHolder; } if (placeHolder != null) { codeLang = placeHolder.Value; placeHolder.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Info, "No code language found."); continue; } Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); if (nodeCount == 1) { string codeText = navigator.Value; if (!String.IsNullOrEmpty(codeText)) { codeText = codeText.Trim(); XmlWriter xmlWriter = navigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); // For the two-part or indirect, we add extra line-break // since this process delete the last extra line. xmlWriter.WriteStartElement("br"); // start - br xmlWriter.WriteEndElement(); // end - br } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); navigator.DeleteSelf(); } } else { XPathNavigator snipNavigator = null; for (int j = 1; j < nodeCount; j++) { snipNavigator = arrSnipNavigator[j]; if (snipNavigator == null) { base.WriteMessage(MessageLevel.Warn, "Null navigator!"); continue; } attrName = snipNavigator.GetAttribute("name", String.Empty); attrClass = snipNavigator.GetAttribute("class", String.Empty); if (String.Equals(attrName, "SandAssist") == false || String.Equals(attrClass, "srcSentence") == false) { base.WriteMessage(MessageLevel.Warn, attrName); base.WriteMessage(MessageLevel.Warn, attrClass); continue; } int snipIndex = snipNavigator.ValueAsInt; SnippetItem item = codeController[snipIndex]; string codeText = item.Text; if (!String.IsNullOrEmpty(codeText)) { codeText = codeText.Trim(); XmlWriter xmlWriter = snipNavigator.InsertAfter(); if (highlighter != null) { StringReader textReader = new StringReader(codeText); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(codeText); } xmlWriter.Close(); snipNavigator.DeleteSelf(); } } } } }
public CodeTest() { _codeController = new CodeController(); }
private void ApplySnippetInfo(XPathNavigator navigator, SnippetInfo snippetInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("conceptual"); if (codeController == null) { return; } IList <SnippetItem> listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { XmlWriter xmlWriter = navigator.InsertAfter(); xmlWriter.WriteStartElement("snippets"); // start - snippets xmlWriter.WriteAttributeString("reference", input); int itemCount = listItems.Count; for (int i = 0; i < itemCount; i++) { SnippetItem snippet = listItems[i]; xmlWriter.WriteStartElement("snippet"); // start - snippet Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, snippet.Language); if (highlightMode == CodeHighlightMode.None) { xmlWriter.WriteString(snippet.Text); } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(snippet.Language); xmlWriter.WriteEndElement(); xmlWriter.WriteString(snippet.Text); } else { if (highlighter != null) { xmlWriter.WriteStartElement("markup"); // start - markup StringReader textReader = new StringReader( snippet.Text); highlighter.Highlight(textReader, xmlWriter); xmlWriter.WriteEndElement(); // end - markup } else { xmlWriter.WriteString(snippet.Text); } } xmlWriter.WriteEndElement(); // end - snippet } xmlWriter.WriteEndElement(); // end - snippets xmlWriter.Close(); navigator.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Warn, String.Format( "The snippet with identifier '{0}' is was found.", snippetInfo)); } }
public CodeControllerTests() { _mockLogger = new Mock <ILogger <CodeController> >(MockBehavior.Loose); _mockServico = new Mock <IServicoCodigo>(MockBehavior.Strict); _controller = new CodeController(_mockLogger.Object, _mockServico.Object); }
private void ApplySnippetInfo(XPathNavigator navigator, SnippetInfo snippetInfo, string input) { CodeHighlightMode highlightMode = this.Mode; CodeController codeController = CodeController.GetInstance("reference"); if (codeController == null) { return; } IList <SnippetItem> listItems = _codeRefProvider[snippetInfo]; if (listItems != null) { XmlWriter xmlWriter = navigator.InsertAfter(); int itemCount = listItems.Count; for (int i = 0; i < itemCount; i++) { SnippetItem snippet = listItems[i]; string codeLang = snippet.Language; if (highlightMode == CodeHighlightMode.None) { xmlWriter.WriteStartElement("code"); // start - code xmlWriter.WriteAttributeString("language", CodeController.GetCodeAttribute(codeLang)); xmlWriter.WriteString(snippet.Text); xmlWriter.WriteEndElement(); // end - code } else if (highlightMode == CodeHighlightMode.DirectIris) { Highlighter highlighter = codeController.ApplyLanguage( null, codeLang); codeController.BeginDirect(xmlWriter, codeLang); if (highlighter != null) { StringReader textReader = new StringReader(snippet.Text); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(snippet.Text); } codeController.EndDirect(xmlWriter, codeLang); } else if (highlightMode == CodeHighlightMode.IndirectIris) { xmlWriter.WriteStartElement("code"); // start - code xmlWriter.WriteAttributeString("language", CodeController.GetCodeAttribute(codeLang)); // <xsl:when test="@class='tgtSentence' or @class='srcSentence'"> xmlWriter.WriteStartElement("span"); xmlWriter.WriteAttributeString("name", "SandAssist"); xmlWriter.WriteAttributeString("class", "tgtSentence"); xmlWriter.WriteString(snippet.Language); xmlWriter.WriteEndElement(); xmlWriter.WriteString(snippet.Text); xmlWriter.WriteEndElement(); // end - code } else { Highlighter highlighter = codeController.ApplyLanguage( xmlWriter, snippet.Language); if (highlighter != null) { StringReader textReader = new StringReader( snippet.Text); highlighter.Highlight(textReader, xmlWriter); } else { xmlWriter.WriteString(snippet.Text); } } } xmlWriter.Close(); navigator.DeleteSelf(); } else { base.WriteMessage(MessageLevel.Warn, String.Format( "The snippet with identifier '{0}' is was found.", snippetInfo)); } }