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)); }
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); }