Esempio n. 1
0
        private static async Task BlockItems(InventoryInputDetails itemcount, Activity replyActivity)
        {
            var addItems = await DocumentDBRepository <Product> .GetItemsAsync(d => d.PrdouctId == Convert.ToInt32(itemcount.ProductId));

            if (addItems.Count() > 0)
            {
                try
                {
                    var list = addItems.FirstOrDefault();
                    foreach (var loc in list.locationList)
                    {
                        if (itemcount.Location.ToLower() == loc.Location.ToLower())
                        {
                            loc.Committed = Convert.ToInt32(loc.Committed) + Convert.ToInt32(itemcount.newItemCount);
                            if (loc.Quantity - loc.Committed > 0)
                            {
                                var itemsList = await DocumentDBRepository <Product> .UpdateItemAsync(list.Id, list);

                                var replyCard = O365CardHelper.GetAdativeCard(addItems.FirstOrDefault(), itemcount.ActionId);
                                replyActivity.Attachments.Add(replyCard);
                            }
                            else
                            {
                                replyActivity.Text = "Items are not availbile";
                            }
                        }
                    }
                }
                catch (Exception e)
                {
                    replyActivity.Text = e.Message.ToString();
                }
            }
        }
Esempio n. 2
0
        private async Task HandleInvoke(IDialogContext context, IMessageActivity message)
        {
            var activity        = (Activity)message;
            var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl));
            //string savedMessageId;
            // Get O365 connector card query data.
            O365ConnectorCardActionQuery o365CardQuery = activity.GetO365ConnectorCardActionQueryData();
            Activity replyActivity = activity.CreateReply();

            switch (o365CardQuery.ActionId)
            {
            case Constants.newInventoryCount:
                InventoryInputDetails itemCount = Newtonsoft.Json.JsonConvert.DeserializeObject <InventoryInputDetails>(o365CardQuery.Body);
                await AddItems(itemCount, replyActivity);

                break;

            case Constants.BlockInventory:
                InventoryInputDetails blockItem = Newtonsoft.Json.JsonConvert.DeserializeObject <InventoryInputDetails>(o365CardQuery.Body);
                await BlockItems(blockItem, replyActivity);

                break;

            case Constants.RetireInventory:
                InventoryInputDetails retireitemcount = Newtonsoft.Json.JsonConvert.DeserializeObject <InventoryInputDetails>(o365CardQuery.Body);
                await RetireItems(retireitemcount, replyActivity);

                break;

            case Constants.RequestNewStock:
                await AttachNewStock(replyActivity);

                context.ConversationData.RemoveValue(LastMessageIdKey);
                break;

            default:
                break;
            }

            if (context.ConversationData.TryGetValue(LastMessageIdKey, out savedMessageId))
            {
                try
                {
                    var resource = await connectorClient.Conversations.UpdateActivityAsync(replyActivity.Conversation.Id, savedMessageId, replyActivity);

                    savedMessageId = resource.Id;
                }
                catch (Exception e)
                {
                    var resource = e.Message.ToString();
                }
            }
            else
            {
                var resource = await connectorClient.Conversations.ReplyToActivityWithRetriesAsync(replyActivity);

                savedMessageId = resource.Id;
            }
            context.ConversationData.SetValue(LastMessageIdKey, savedMessageId);
        }
Esempio n. 3
0
        private async Task HandleMessage(IDialogContext context, IMessageActivity message)
        {
            if (message.Text != null && message.Text.Contains("Show details of product"))
            {
                var      reply         = (Activity)message;
                Activity replyActivity = reply.CreateReply();
                var      actionId      = Guid.NewGuid().ToString();
                var      productid     = System.Text.RegularExpressions.Regex.Match(message.Text, @"\(([^)]*)\)").Groups[1].Value;
                var      list          = await DocumentDBRepository <Product> .GetItemsAsync(d => d.PrdouctId == Convert.ToInt32(productid));

                var productResultCard = O365CardHelper.GetAdativeCard(list.FirstOrDefault(), actionId);
                replyActivity.Attachments.Add(productResultCard);
                try
                {
                    ConnectorClient connector   = new ConnectorClient(new Uri(message.ServiceUrl));
                    var             msgToUpdate = await connector.Conversations.ReplyToActivityAsync(replyActivity);

                    context.ConversationData.SetValue(actionId, msgToUpdate.Id);
                    privateStorage.Add(actionId, msgToUpdate.Id);
                }
                catch (Exception e)
                {
                    await context.PostAsync((replyActivity));
                }
            }
            else if (message.Value != null)
            {
                var activity = (Activity)message;
                InventoryInputDetails itemCount = Newtonsoft.Json.JsonConvert.DeserializeObject <InventoryInputDetails>(activity.Value.ToString());

                var      connector     = new ConnectorClient(new Uri(activity.ServiceUrl));
                Activity replyActivity = activity.CreateReply();
                switch (itemCount.Type)
                {
                case Constants.newInventoryCount:
                    await AddItems(itemCount, replyActivity);


                    break;

                case Constants.BlockInventory:
                    await BlockItems(itemCount, replyActivity);

                    break;

                case Constants.RetireInventory:
                    await RetireItems(itemCount, replyActivity);

                    break;

                case Constants.RequestNewStock:
                    await AttachNewStock(replyActivity);

                    await connector.Conversations.ReplyToActivityAsync(replyActivity);

                    break;

                default:
                    break;
                }
                if (itemCount.Type != Constants.RequestNewStock)
                {
                    var lastMessageId = context.ConversationData.GetValueOrDefault <string>(itemCount.ActionId);
                    if (lastMessageId == null && privateStorage.ContainsKey(itemCount.ActionId))
                    {
                        lastMessageId = privateStorage[itemCount.ActionId];
                    }
                    if (!string.IsNullOrEmpty(lastMessageId))
                    {
                        // Update existing item.
                        await connector.Conversations.UpdateActivityAsync(replyActivity.Conversation.Id, lastMessageId, replyActivity);

                        context.ConversationData.RemoveValue(itemCount.ActionId);
                    }
                    else
                    {
                        await connector.Conversations.SendToConversationAsync(replyActivity);
                    }
                }
            }
            else
            {
                var             messageText = message.Text.ToLower();
                var             reply       = context.MakeMessage();
                List <Industry> lst         = new List <Industry>();
                Industry        obj         = new Industry();
                obj.IndsutryCode = "air";
                obj.IndustryName = "Airlines";
                lst.Add(obj);
                Industry obj1 = new Industry();
                obj1.IndsutryCode = "ret";
                obj1.IndustryName = "Retail";
                lst.Add(obj1);
                Industry obj2 = new Industry();
                obj2.IndsutryCode = "mft";
                obj2.IndustryName = "Manufacturing";
                lst.Add(obj2);
                var industryNames = lst;
                reply.Attachments.Add(GetCardsInformation(industryNames));

                await context.PostAsync((reply));

                context.Wait(MessageReceivedAsync);
            }
        }