コード例 #1
0
        public ActionResult <PredictionDTO> UserRecentPrediction(string twitter_nick)
        {
            if (twitter_nick == null)
            {
                return(BadRequest());
            }

            var analytics = UserRecentAnalytics(twitter_nick);

            if (analytics == null)
            {
                return(NotFound());
            }

            var response = new PredictionDTO()
            {
                ActivityChartPath    = $"/output/activity_{twitter_nick}.png",
                PieChartPath         = $"/output/piechart_{twitter_nick}.png",
                LastModified         = analytics.LastUpdated,
                TopPositiveWordsJson = analytics.TopPositiveWordsJson,
                TopNegativeWordsJson = analytics.TopNegativeWordsJson
            };

            return(Ok(response));
        }
コード例 #2
0
        public ActionResult <PredictionDTO> GetUserPrediction(string twitter_nick, int count)
        {
            if (string.IsNullOrEmpty(twitter_nick) || count == 0)
            {
                return(BadRequest());
            }

            var analytics = UserRecentAnalytics(twitter_nick);

            if (analytics != null)
            {
                var response = new PredictionDTO()
                {
                    ActivityChartPath    = $"/output/activity_{twitter_nick}.png",
                    PieChartPath         = $"/output/piechart_{twitter_nick}.png",
                    LastModified         = analytics.LastUpdated,
                    TopPositiveWordsJson = analytics.TopPositiveWordsJson,
                    TopNegativeWordsJson = analytics.TopNegativeWordsJson
                };

                return(Ok(response));
            }
            else
            {
                try
                {
                    string link = $"http://localhost:5000/api/analytics?twitter_nick={twitter_nick}&count={count}";
                    string predictionResponse = HttpSender.SendHttpRequest(new Uri(link), "POST");

                    dynamic parsedResponse = JsonConvert.DeserializeObject(predictionResponse);

                    TwitterUserStatistic statistic = CreateOrUpdateUserStatistic(
                        twitter_nick,
                        double.Parse(parsedResponse["good"].ToString()),
                        double.Parse(parsedResponse["bad"].ToString()));

                    var response = new PredictionDTO()
                    {
                        ActivityChartPath    = $"/output/activity_{twitter_nick}.png",
                        PieChartPath         = $"/output/activity_{twitter_nick}.png",
                        LastModified         = statistic.LastUpdated,
                        TopPositiveWordsJson = analytics.TopPositiveWordsJson,
                        TopNegativeWordsJson = analytics.TopNegativeWordsJson
                    };

                    return(Ok(response));
                }
                catch (Exception ex)
                {
                    return(BadRequest(ex.Message));
                }
            }
        }
コード例 #3
0
        public void AddPrediction(Prediction prediction)
        {
            lock (this.lockMe)
            {
                if (this.predictions == null)
                {
                    this.predictions = new List <PredictionDTO>();
                }

                PredictionDTO predictionDTO = Mapper.Map <Prediction, PredictionDTO>(prediction);
                this.predictions.Add(predictionDTO);
            }
        }
コード例 #4
0
        public async Task <PredictionResultDTO> MakePrediction(PredictionDTO model)
        {
            var transactions = (from t in DbContext.TransactionEnities
                                join c in DbContext.ContactDatas
                                on t.ContactDataId equals c.Id
                                where t.IsDeleted == null && t.UserDataId == model.UserId &&
                                t.CreatedAt.Day == model.PredictDate
                                select new TransactionPredictDTO()
            {
                Id = t.Id,
                Amount = t.Amount,
                ContactName = c.Name,
                Recurring = t.Recurring,
                RecurringType = t.RecurringType.ToString(),
                CreatedAt = t.CreatedAt,
                ContactType = c.Type
            }).ToList();

            if (transactions.Count > 0)
            {
                var datecounts        = transactions.GroupBy(d => d.CreatedAt.Date).Count();
                var groupTransactions = transactions.GroupBy(i => i.ContactType).Select(s => new TransactionCategory()
                {
                    Amount = s.Sum(t => t.Amount) / datecounts,
                    Count  = s.Count(),
                    Type   = s.First().ContactType
                }).ToList();

                return(new PredictionResultDTO()
                {
                    PredictExpence = groupTransactions.Where(s => s.Type == "Payee").Select(p => p.Amount).First(),
                    PredictIncome = groupTransactions.Where(s => s.Type == "Payer").Select(p => p.Amount).First(),
                });
            }
            else
            {
                return(new PredictionResultDTO()
                {
                    PredictExpence = 0,
                    PredictIncome = 0
                });
            }
        }