public void TaskModuleTaskInfoInitsWithNoArgs() { var taskInfo = new TaskModuleTaskInfo(); Assert.NotNull(taskInfo); Assert.IsType <TaskModuleTaskInfo>(taskInfo); }
protected override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var asJobject = JObject.FromObject(taskModuleRequest.Data); var formname = asJobject["data"].ToString(); TaskModuleResponse taskModuleResponse = null; switch (formname) { case "alertform": { var taskInfo = new TaskModuleTaskInfo(); taskInfo.Url = taskUrl; taskInfo.Width = 510; taskInfo.Height = 500; taskInfo.Title = "Fetched from bot"; taskModuleResponse = new TaskModuleResponse { Task = new TaskModuleContinueResponse() { Value = taskInfo, }, }; } break; default: break; } return(Task.FromResult(taskModuleResponse)); }
protected override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var asJobject = JObject.FromObject(taskModuleRequest.Data); var value = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data; var taskInfo = new TaskModuleTaskInfo(); switch (value) { case TaskModuleIds.YouTube: taskInfo.Url = taskInfo.FallbackUrl = _baseUrl + "/" + TaskModuleIds.YouTube; SetTaskInfo(taskInfo, TaskModuleUIConstants.YouTube); break; case TaskModuleIds.CustomForm: taskInfo.Url = taskInfo.FallbackUrl = _baseUrl + "/" + TaskModuleIds.CustomForm; SetTaskInfo(taskInfo, TaskModuleUIConstants.CustomForm); break; case TaskModuleIds.AdaptiveCard: taskInfo.Card = CreateAdaptiveCardAttachment(); SetTaskInfo(taskInfo, TaskModuleUIConstants.AdaptiveCard); break; default: break; } return(Task.FromResult(taskInfo.ToTaskModuleResponse())); }
public static TaskModuleResponse CreateResponse(TaskModuleTaskInfo taskInfo) { return(new TaskModuleResponse { Task = new TaskModuleContinueResponse() { Value = taskInfo, }, }); }
public void TaskModuleContinueResponseInits() { var value = new TaskModuleTaskInfo(); var continueResponse = new TaskModuleContinueResponse(value); Assert.NotNull(continueResponse); Assert.IsType <TaskModuleContinueResponse>(continueResponse); Assert.Equal(value, continueResponse.Value); }
public async Task <TaskModuleResponse> GetModuleMenuData(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var TaskInfo = new TaskModuleTaskInfo(); var asJobject = JObject.FromObject(taskModuleRequest.Data); var Value = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data; string GetMenuJson = new OrganizeStructureService().GetFoodUrlStr(Value); TaskInfo.Card = new OrganizeStructureService().GetTaskModuleFetchCard(Value, GetMenuJson, TaskInfo); new OrderfoodServices().SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); }
//protected readonly OrderfoodServices _orderfoodServices; //protected readonly CreateCardService _createCardService; //public OrganizeStructureService(OrderfoodServices orderfoodServices, CreateCardService createCardService) //{ // _orderfoodServices = orderfoodServices; // _createCardService = createCardService; //} public Attachment GetTaskModuleFetchCard(string Value, string GetMenuJson, TaskModuleTaskInfo TaskInfo) { var StorName = new OrderfoodServices().GetStr(Value, "FoodData2468", true); var MenuurlOrderIdDueTime = new OrderfoodServices().GetStr(Value, "FoodData2468", false); var OrderIdDueTime = new OrderfoodServices().GetStr(MenuurlOrderIdDueTime, "GuidStr13579", false); var OrderId = new OrderfoodServices().GetStr(OrderIdDueTime, "DueTime13579", true); var DueTime = new OrderfoodServices().GetStr(OrderIdDueTime, "DueTime13579", false); var NameJson = new OrderfoodServices().ArrayPlusName(GetMenuJson, "Menuproperties"); TaskInfo.Card = new CreateCardService().CreateClickfoodModule(OrderId, StorName, NameJson, DueTime); return(TaskInfo.Card); }
public async Task <TaskModuleResponse> GetModifyModuleData(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var TaskInfo = new TaskModuleTaskInfo(); TeamsBuyContext context = new TeamsBuyContext(); var asJobject = JObject.FromObject(taskModuleRequest.Data); var Value = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data; var MenuOrderData = new MenuDetailService(context).GetMenuOrder(Value).ToList(); var MenuOrderStore = new MenuService(context).GetMenuOrder(Value).Store; TaskInfo.Card = new CreateCardService().GetCustomizedModification(MenuOrderStore, MenuOrderData, Value); SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); }
public async Task <TaskModuleResponse> FinishSelectDishesSubmit(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { TeamsBuyContext context = new TeamsBuyContext(); var TaskInfo = new TaskModuleTaskInfo(); JObject Data = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data)); var StoreAndGuidAndDueTime = Data.Property("data").Value.ToString(); new OrganizeStructureService().RemoveNeedlessStructure(Data); string SelectJson = ProcessAllSelect(Data); JObject o = new JObject(); o["SelectMenu"] = JArray.Parse(SelectJson); bool DecideQuanRem = true; bool Number = true; var AllSelectDatas = JsonConvert.DeserializeObject <SelectMenuDatagroup>(o.ToString()); foreach (var item in AllSelectDatas.SelectMenu) { if (item.Quantity == "0" && item.Remarks != "") { DecideQuanRem = false; } if (Math.Sign(decimal.Parse(item.Quantity)) < 0 || (decimal.Parse(item.Quantity) - Math.Floor(decimal.Parse(item.Quantity))) != 0) { Number = false; } } if (DecideQuanRem == true && Number == true) { //取完整資料 var OAllOrderDatasStr = ProcessUnifyData(o); var SelectObject = JsonConvert.DeserializeObject <SelectAllDataGroup>(OAllOrderDatasStr); SelectObject.UserID = turnContext.Activity.From.Id; var ExistGuid = Guid.Parse("cf1ed7b9-ae4a-4832-a9f4-fdee6e492085"); new OrderDetailService(context).CreateOrderDetail(SelectObject, SelectObject.SelectAllOrders, ExistGuid); TaskInfo.Card = new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), new OrganizeStructureService().GetDueTime(StoreAndGuidAndDueTime), turnContext.Activity.From.Name); SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard); await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetResultClickfood(new OrganizeStructureService().GetOrderID(StoreAndGuidAndDueTime), new OrganizeStructureService().GetStoreName(StoreAndGuidAndDueTime), o.ToString(), "12:00", turnContext.Activity.From.Name))); } else { TaskInfo.Card = new CreateCardService().GetError(turnContext.Activity.From.Name); SetTaskInfo(TaskInfo, TaskModuleUIConstants.AdaptiveCard); await turnContext.SendActivityAsync(MessageFactory.Attachment(new CreateCardService().GetError(turnContext.Activity.From.Name))); } return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); }
public void ModifyMenuData(TaskModuleRequest taskModuleRequest, TaskModuleTaskInfo TaskInfo) { TeamsBuyContext context = new TeamsBuyContext(); var asJobject = JObject.FromObject(taskModuleRequest.Data); var Value = asJobject.ToObject <CardTaskFetchValue <string> >()?.Data; JObject Data = JObject.Parse(JsonConvert.SerializeObject(taskModuleRequest.Data)); new OrganizeStructureService().ModifyRemoveNeedlessStructure(Data); var inputlist = new List <string>(); foreach (var item in Data) { inputlist.Add(item.Value.ToString()); } inputlist.Remove(inputlist[0]); var StoreName = inputlist[0]; inputlist.Remove(inputlist[0]); var Modify = new ModifyGroup(); var w = new List <ModifyMultiple>(); for (int i = 0; 2 * i < inputlist.Count(); i++) { w.Add(new ModifyMultiple() { ProductName = inputlist[2 * i], Amount = inputlist[2 * i + 1], MenuId = Value }); } Modify.AllModifyMultiple = w; Modify.StoreName = StoreName; for (var i = 0; i < Modify.AllModifyMultiple.Count; i++) { if (Modify.AllModifyMultiple[i].ProductName == "" || Modify.AllModifyMultiple[i].Amount.ToString() == "") { Modify.AllModifyMultiple.Remove(Modify.AllModifyMultiple[i]); } } new MenuService(context).UpdateMenuOrderStoreName(Value, Modify.StoreName); new MenuDetailService(context).DeleteMenuDetail(Value); new MenuDetailService(context).CreateMenuDetail(Modify); TaskInfo.Card = new CreateCardService().GetResultCustomizedModification(Modify.StoreName, Modify.AllModifyMultiple); SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu); }
public void TaskModuleTaskInfoInits() { var title = "chatty"; var height = "medium"; var width = "large"; var url = "https://example.com"; var card = new Attachment(); var fallbackUrl = "https://fallback-url-of-example.com"; var completionBotId = "0000-0000-0000-0000-0000"; var taskInfo = new TaskModuleTaskInfo(title, height, width, url, card, fallbackUrl, completionBotId); Assert.NotNull(taskInfo); Assert.IsType <TaskModuleTaskInfo>(taskInfo); Assert.Equal(title, taskInfo.Title); Assert.Equal(height, taskInfo.Height); Assert.Equal(width, taskInfo.Width); Assert.Equal(url, taskInfo.Url); Assert.Equal(card, taskInfo.Card); Assert.Equal(fallbackUrl, taskInfo.FallbackUrl); Assert.Equal(completionBotId, taskInfo.CompletionBotId); }
public TaskModuleTaskInfoResponse CreateCompetitionDetailTaskInfoResponse(Competition competition) { var localization = _localizationFactory.Create(competition.Locale); var body = new List <AdaptiveCard.AdaptiveBodyItem> { new AdaptiveCard.AdaptiveBodyItem { Type = "TextBlock", Text = localization["CompetitionDetail.Competitors"], Size = AdaptiveTextSize.Large }, }; body.AddRange(competition.Competitors.Select(c => new AdaptiveCard.AdaptiveBodyItem { Type = "TextBlock", Text = c.Name })); var taskInfo = new TaskModuleTaskInfo { Type = "continue", Value = new TaskModuleTaskInfo.TaskInfoValue { Title = string.Empty, Height = "medium", Width = "small", Card = new Attachment { ContentType = AdaptiveCard.ContentType, Content = new AdaptiveCard() { Body = body } } } }; return(new TaskModuleTaskInfoResponse { Task = taskInfo }); }
public static TaskModuleResponse ToTaskModuleResponse(this TaskModuleTaskInfo taskInfo) { return(CreateResponse(taskInfo)); }
public void SetTaskInfo(TaskModuleTaskInfo taskInfo, UISettings uIConstants) { taskInfo.Height = uIConstants.Height; taskInfo.Width = uIConstants.Width; taskInfo.Title = uIConstants.Title.ToString(); }
/// <summary> /// Handle request to fetch task module content. /// </summary> private async Task <HttpResponseMessage> HandleTaskModuleFetchRequest(Activity activity, string activityValue) { var action = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <ActionDetails> >(activityValue); var channelData = activity.GetChannelData <TeamsChannelData>(); var tenantId = channelData.Tenant.Id; // Default to common parameters for task module var taskInfo = new TaskModuleTaskInfo() { Title = ApplicationSettings.AppName, Height = 900, Width = 600, }; // Populate the task module content, based on the kind of dialog requested Attachment card = null; switch (action.Data.Data.ActionType) { case Constants.CreateOrEditAnnouncement: taskInfo.Title = "Create New"; card = await CardHelper.GetCreateNewAnnouncementCard(tenantId); break; case Constants.ShowMoreDetails: taskInfo.Title = "Details"; var showDetails = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <AnnouncementActionDetails> >(activityValue); card = await CardHelper.GetPreviewAnnouncementCard(showDetails.Data.Data.Id); taskInfo.Height = 900; taskInfo.Width = 600; break; case Constants.ShowEditAnnouncementTaskModule: taskInfo.Title = "Edit a message"; var editAnnouncement = JsonConvert.DeserializeObject <TaskModule.TaskModuleActionData <AnnouncementActionDetails> >(activityValue); var campaign = await Cache.Announcements.GetItemAsync(editAnnouncement.Data.Data.Id); if (campaign == null || campaign.Status == Status.Sent) { card = CardHelper.GetUpdateMessageCard($"This {Helper.ApplicationSettings.AppFeature} is already sent and not allowed to edit."); taskInfo.Height = 100; taskInfo.Width = 500; } else { card = await CardHelper.GetEditAnnouncementCard(editAnnouncement.Data.Data.Id, tenantId); } break; default: break; } taskInfo.Card = card; TaskModuleResponseEnvelope taskModuleEnvelope = new TaskModuleResponseEnvelope { Task = new TaskModuleContinueResponse { Type = "continue", Value = taskInfo } }; return(Request.CreateResponse(HttpStatusCode.OK, taskModuleEnvelope)); }
private TaskModuleTaskInfo CreateSignedInTaskModuleTaskInfo(string token = "") { var taskModuleTaskInfo = new TaskModuleTaskInfo { Card = new Attachment { Content = new AdaptiveCard { Body = new List <AdaptiveElement>() { new AdaptiveTextBlock("You are signed in!"), new AdaptiveTextBlock("Send 'Log out' or 'Sign out' to start over."), new AdaptiveTextBlock("(Or click the Sign Out button below.)"), }, Actions = new List <AdaptiveAction>() { new AdaptiveSubmitAction() { Title = "Close", Data = new JObject { { "key", "close" } } }, new AdaptiveSubmitAction() { Title = "Sign Out", Data = new JObject { { "key", "signout" } } }, }, }, ContentType = AdaptiveCard.ContentType, }, Height = 160, Width = 350, Title = "Messaging Extension Auth Example", }; if (!string.IsNullOrEmpty(token)) { var card = taskModuleTaskInfo.Card.Content as AdaptiveCard; // Embed a child Adaptive Card behind a AdaptiveShowCardAction to display the User's token card.Actions.Add(new AdaptiveShowCardAction() { Title = "Show Token", Card = new AdaptiveCard { Body = new List <AdaptiveElement>() { new AdaptiveTextBlock($"Your token is { token }") { Wrap = true }, }, }, }); taskModuleTaskInfo.Height = 300; taskModuleTaskInfo.Width = 500; } return(taskModuleTaskInfo); }
protected async override Task <TaskModuleResponse> OnTeamsTaskModuleFetchAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var TaskInfo = new TaskModuleTaskInfo(); var factory = new AdaptiveCardDataFactory(turnContext, taskModuleRequest); var fetchType = factory.GetCardActionType(); var service = new CreateCardService2(); var taskInfo = new TaskModuleTaskInfo(); //ting create Customized menu taskmodule if (fetchType?.Equals("createmenu") == true) { var activityId = factory.GetCardData <string>(); taskInfo.Card = service.GetCreateMenu(activityId); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } //create menu detail else if (fetchType?.Equals("CreateMenuDetail") == true) { var menu = factory.GetCardData <string>(); taskInfo.Card = service.GetCreateMenuDetail(menu); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } //Group Buy Open Menu if (fetchType?.Equals("OpenMenuTaskModule") == true) { taskInfo.Card = await service.CreateMenu(factory); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } // Customized Card if (fetchType?.Equals("Customized") == true) { var TenantId = turnContext.Activity.GetChannelData <TeamsChannelData>()?.Tenant?.Id; TaskInfo.Card = _menuOrderService.CreateMenuOrderAttachment(TenantId); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); } else if (fetchType?.Equals("GetCustomizedMenu") == true) { taskInfo.Card = await _menuOrderService.CreateMenu(factory); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } //家寶 if (fetchType?.Equals("GetStore") == true) { taskInfo.Card = await new GetStoreList().CreateStoresModule(factory, null); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } else if (fetchType.Equals("reserveStore")) { taskInfo.Card = await new GetStoreList().CreateStoresModule(factory, "reserveStore"); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } //育銨 else if (fetchType?.Equals("GetChosenFoodFromMenuData") == true) { TaskInfo.Card = new CreateCardService2().GetChosenFoodFromMenuModule(factory); service.SetTaskInfo(TaskInfo, TaskModuleUIConstants.ChosenData); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); } else if (fetchType?.Equals("GetResultTotalFromModule") == true) { TaskInfo.Card = new CreateCardService2().GetResultTotalFromMenuModule(factory); service.SetTaskInfo(TaskInfo, TaskModuleUIConstants.ChosenData); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); } else { taskInfo.Card = service.GetCustomizedModification(factory); service.SetTaskInfo(taskInfo, TaskModuleUIConstants.UpdateMenu); return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } }
protected override async Task <TaskModuleResponse> OnTeamsTaskModuleSubmitAsync(ITurnContext <IInvokeActivity> turnContext, TaskModuleRequest taskModuleRequest, CancellationToken cancellationToken) { var factory = new AdaptiveCardDataFactory(turnContext, taskModuleRequest); var fetchType = factory.GetCardActionType(); if (fetchType?.Equals("ResultStoreCard") == true) { //create group buy card var orderId = Guid.NewGuid().ToString(); var data = factory.GetGroupBuyCard(orderId); _orderService.CreateOrder(orderId, turnContext.Activity.ChannelId, data.StoreName); var cardService = new CreateCardService2(); await turnContext.SendActivityAsync(MessageFactory.Attachment(cardService.GetStore(data))); //create scheduler var services = await SchedulerFactory.GetAllSchedulers(); var scheduler = new ScheduleCreator(services[0], turnContext.Activity.From.Id, orderId); var dueTime = DateTime.Parse(data.DueTime); scheduler.CreateSingleGroupBuy(dueTime); AddConversationReference(turnContext.Activity as Activity); return(null); } if (fetchType?.Equals("FetchSelectedFoods") == true) { var card = new CreateCardService2().GetChosenFoodFromMenu(factory); if (card.Name?.Contains("error") == true) { var taskInfo = new TaskModuleTaskInfo(); taskInfo.Card = card; return(await Task.FromResult(taskInfo.ToTaskModuleResponse())); } else { await turnContext.SendActivityAsync(MessageFactory.Attachment(card)); new CreateCardService2().GetChosenFoodFromMenuCreateOrderDetail(factory, turnContext.Activity.From.Id); return(null); } } else if (fetchType?.Equals("GetCustomizedStore") == true) { //get order data var data = factory.GetCardData <StoreOrderDuetime>(); data.DueTime = JObject.FromObject(factory.Request.Data).GetValue("DueTime").ToString(); data.OrderID = Guid.NewGuid().ToString(); //create an order and group-buy card _orderService.CreateOrder(data.OrderID, turnContext.Activity.ChannelId, data.StoreName); await turnContext.SendActivityAsync(MessageFactory.Attachment(_menuOrderService.GetStore(factory, data.OrderID))); //create scheduler var services = await SchedulerFactory.GetAllSchedulers(); var scheduler = new ScheduleCreator(services[0], turnContext.Activity.From.Id, data.OrderID); var dueTime = DateTime.Parse(data.DueTime); scheduler.CreateSingleGroupBuy(dueTime); AddConversationReference(turnContext.Activity as Activity); return(null); } //ting 按下按鈕傳資料到data else if (fetchType?.Equals("GetCustomizedMenu") == true) { var teamsId = turnContext.Activity.GetChannelData <TeamsChannelData>()?.Tenant?.Id; var menu = _menuService.CreateMenu(factory, teamsId); if (menu == null) { await turnContext.SendActivityAsync(MessageFactory.Text("Please create your store first!")); } else { _menuService.CreateMenuDetail(factory, menu.MenuId); await turnContext.SendActivityAsync(MessageFactory.Text("Create Successfully!")); var NewId = factory.GetCardData <StoreInfoData>().Name; var CustomMenucard = _customMenuService.CallCustomeCard(NewId); var activity = MessageFactory.Attachment(CustomMenucard); activity.Id = NewId; //指定要更新的activity await turnContext.UpdateActivityAsync(activity, cancellationToken); } return(null); } else if (fetchType?.Equals("GetCustomizedMenuDetail") == true) { var menu = factory.GetCardData <StoreInfoData>().Guid; _menuService.CreateMenuDetail(factory, Guid.Parse(menu)); await turnContext.SendActivityAsync(MessageFactory.Text("Create Successfully!")); return(null); } else if (fetchType?.Equals("reserveStore") == true) { var orderId = Guid.NewGuid().ToString(); var data = factory.GetGroupBuyCard(orderId); turnContext.Activity.Value = JsonConvert.SerializeObject(data); turnContext.Activity.Type = "message"; await Dialog.RunAsync(turnContext, ConversationState.CreateProperty <DialogState>(nameof(DialogState)), cancellationToken); return(null); } //育銨 else { var TaskInfo = new TaskModuleTaskInfo(); TaskInfo.Card = new CreateCardService2().GetResultCustomizedModification(factory); new CreateCardService2().SetTaskInfo(TaskInfo, TaskModuleUIConstants.UpdateMenu); return(await Task.FromResult(TaskInfo.ToTaskModuleResponse())); } }