Ejemplo n.º 1
0
        public void AnalyzeSales(VkAnalyseSalesModel model, string accessToken, string userId)
        {
            AccessToken = accessToken;

            var listOfBuyers = model.ListOfBuyers != null?ConvertstringToList(model.ListOfBuyers).ToList() : null;

            //Список постов для анализа
            var analyzeModels = GetPostsForAnalyze(model.GroupId, model.StartDate, model.EndDate, listOfBuyers, false);

            if (listOfBuyers != null)
            {
                var result = _cohortAnalyser.Analyze(analyzeModels, model.Step, model.StartDate,
                                                     model.EndDate, model.GroupId);

                _vkDbService.SaveAnalyzeOfSalesWithList(result, userId, model.Name, model.GroupId);
            }
            else
            {
                //Создание групп ретаргета для каждого поста
                if (analyzeModels.Any())
                {
                    var retargetsInfo = _vkSalesAnalysisService.CreateRetargets(analyzeModels, model.AccountId, model.ClientId, model.ExcludeTargetGroup, AccessToken).ToList();
                    var result        = _cohortAnalyser.AnalyzeAcitivitySalesWithRetargetsInfo(retargetsInfo, model.Step, model.StartDate, model.EndDate, model.GroupId);

                    _vkDbService.SaveAnalyzeOfSalesWithRetarget(result, userId, model.Name, model.GroupId);
                }
            }
        }
        public ActionResult Analyze(VkAnalyseSalesModel model)
        {
            if (ModelState.IsValid)
            {
                var accessToken = GetCurrentUserAccessToken();
                var userId      = User.Identity.GetUserId();
                BackgroundJob.Enqueue(() => _vkService.AnalyzeSales(model, accessToken, userId));

                ViewBag.Message = "Когортный анализ продаж";

                return(View("~/Views/Vk/InProgress.cshtml"));
            }

            return(RedirectToAction("Index"));
        }