public ActionResult Result(int id)
        {
            var resultDb = _dbContext.VkCohortSalesAnalyseResults.FirstOrDefault(rest => rest.Id == id);
            var result   = new SalesActivitiesRetargetResult();

            try
            {
                var formatter = new BinaryFormatter();
                using (var ms = new MemoryStream(resultDb.Result))
                {
                    result = (SalesActivitiesRetargetResult)formatter.Deserialize(ms);
                }
            }
            catch (Exception ex)
            {
                Logger.Error(string.Format("Error: {0}", ex));
            }

            return(View(result));
        }
Exemple #2
0
        public void SaveAnalyzeOfSalesWithRetarget(SalesActivitiesRetargetResult result, string userId, string name, string groupId)
        {
            using (var ms = new MemoryStream())
            {
                var binaryFormatter = new BinaryFormatter();
                binaryFormatter.Serialize(ms, result);
                byte[] rr = ms.GetBuffer();

                var cntx = new BaseDb();
                cntx.VkCohortSalesAnalyseResults.Add(new VkCohortSalesAnalyseResults
                {
                    UserId         = userId,
                    Name           = name,
                    CollectionDate = DateTime.Now,
                    GroupId        = groupId,
                    Result         = rr
                });
                cntx.SaveChanges();
            }
        }
        public SalesActivitiesRetargetResult AnalyzeAcitivitySalesWithRetargetsInfo(List <VkAnalyseSalesResultModel> model, int step, DateTime dateOfTheBeginning, DateTime dateOfTheEnd, string groupId)
        {
            var result = new SalesActivitiesRetargetResult();

            result.GroupId = groupId;

            if (step == 1)
            {
                var ordered = model
                              .OrderBy(order => order.Date)
                              .GroupBy(data => data.Date.Day)
                              .Select(s => s.ToList())
                              .ToList();

                for (var dt = dateOfTheBeginning; dt < dateOfTheEnd; dt = dt.AddDays(1))
                {
                    var stepResults = new SalesActivitiesRetargetStepData
                    {
                        Date = dt.ToShortDateString()
                    };

                    foreach (var sr in ordered)
                    {
                        foreach (var resultModel in sr.Where(s => s.Date.ToShortDateString() == stepResults.Date))
                        {
                            stepResults.Values.Add(new SalesActivitiesRetargetPostResult
                            {
                                PostId = resultModel.PostId,
                                Result = resultModel.Result,
                            });
                        }
                    }
                    result.Results.Add(stepResults);
                }
            }
            if (step == 3)
            {
                var ordered = model
                              .OrderBy(order => order.Date)
                              .GroupBy(data => data.Date.Month)
                              .Select(s => s.ToList())
                              .ToList();

                const int st = 30;

                for (var i = 0; i < ordered.Count; i++)
                {
                    var stepResults = new SalesActivitiesRetargetStepData();

                    var startDate = dateOfTheBeginning.AddDays(i * st);
                    var endDate   = dateOfTheBeginning.AddDays((i + 1) * st);
                    if (endDate > dateOfTheEnd)
                    {
                        endDate = dateOfTheEnd;
                    }
                    stepResults.Date = $"{startDate.ToShortDateString()} - {endDate.ToShortDateString()}";
                    foreach (var sr in ordered[i])
                    {
                        stepResults.Values.Add(new SalesActivitiesRetargetPostResult
                        {
                            PostId = sr.PostId,
                            Result = sr.Result
                        });
                    }
                    result.Results.Add(stepResults);
                }
            }

            return(result);
        }