Exemplo n.º 1
0
        public async Task <Boolean> AddStockDiscussion(Int32 stockId, DiscussionItem discussionItem)
        {
            var uri = _dns.Resolve(_serviceName).Result;

            string baseUrl = string.Format(_stockDiscussion, uri.OriginalString);

            var loggerFactory = new LoggerFactory();
            var logger        = loggerFactory.CreateLogger <StockDiscussionPublisher>();


            var connection = await ConnectAsync(baseUrl);

            try
            {
                var cts = new CancellationTokenSource();

                await connection.InvokeAsync <DiscussionItem>("addStockDiscussion", stockId, discussionItem, cts.Token);

                return(true);
            }
            catch (AggregateException aex) when(aex.InnerExceptions.All(e => e is OperationCanceledException))
            {
                return(false);
            }
            catch (OperationCanceledException)
            {
                return(false);
            }
            finally
            {
                await connection.DisposeAsync();
            }
        }
Exemplo n.º 2
0
        public async Task <Boolean> Execute(int memberId, int stockId, DiscussionItem discussionItem)
        {
            Logger.LogInformation($"Adding {discussionItem.Comment} of stock '{stockId}'");

            var result = await this.CommonStockRouteActor.Ask <CommonStockActor.CommonStockEvent>(new CommonStockActor.AddDiscussion(
                                                                                                      memberId,
                                                                                                      stockId,
                                                                                                      discussionItem.UserName,
                                                                                                      discussionItem.Comment,
                                                                                                      discussionItem.EnteredOn
                                                                                                      ));

            if (result is CommonStockActor.DiscussionAdded)
            {
                var e = result as CommonStockActor.DiscussionAdded;
                discussionItem.Id = e.DiscussionId;

                var res = await Pubisher.AddStockDiscussion(stockId, discussionItem);

                return(await Task.FromResult(res));
            }
            else
            {
                throw new NotSupportedException();
            }
        }
Exemplo n.º 3
0
        public CommonStockActor(CommonStockInfo commonStork, IActorRef eodStocksActor)
        {
            CommonStorkData = commonStork;
            Discussions     = new List <DiscussionItem>();


            Receive <GetStockInfo>(m =>
            {
                Sender.Tell(CommonStorkData);
            });

            Receive <GetDiscussion>(m => {
                Sender.Tell(new ReadOnlyCollection <DiscussionItem>(Discussions));
            });

            Receive <AddDiscussion>(m => {
                var discussionItem = new DiscussionItem {
                    Id        = Discussions.Count + 1,
                    UserName  = m.UserName,
                    Comment   = m.Comment,
                    EnteredOn = m.EnteredOn
                };
                Discussions.Add(discussionItem);
                Sender.Tell(new DiscussionAdded(discussionItem.Id));
            });
        }
Exemplo n.º 4
0
        public Task <Boolean> AddStockDiscussionItem(Int32 memberId, Int32 stockId, DiscussionItem discussionItem)
        {
            var client = new RestClient(_dns.Resolve(_serviceName).Result);

            string template = string.Format(_addStockDiscussionItem, stockId);

            var request = new RestRequest(template, Method.POST);

            request.AddHeader("Accept", "application/json");
            request.Parameters.Clear();
            request.AddJsonBody(discussionItem);


            var response = client.Execute(request);
            var content  = response.Content; // raw content as string

            var result = JsonConvert.DeserializeObject <Boolean>(content);

            return(Task.FromResult <Boolean>(result));
        }
Exemplo n.º 5
0
 public async Task AddStockDiscussion(int stockId, DiscussionItem discussionItem)
 {
     await Clients.Group(stockId.ToString()).InvokeAsync("addStockDiscussion", stockId, discussionItem);
 }
Exemplo n.º 6
0
        [HttpPost()] public async Task <Boolean> AddDiscussionItem(Int32 stockId, [FromBody] DiscussionItem discussionItem)
        {
            var result = await this.AddDiscussion.Execute(0, stockId, discussionItem);

            return(result);
        }
 /// <summary>
 /// Updates the properties of this row
 /// </summary>
 private void UpdateProperties()
 {
     this.ModifiedOn = this.Thing.ModifiedOn;
     this.ReplyTo    = this.Thing.ReplyTo;
 }