Beispiel #1
0
 /// <summary>
 /// Запись IP в БД
 /// </summary>
 private void WriteIpInDb(string ip, SpyContext spyDB)
 {
     try {
         spyDB.Users.Add(new Users {
             IP = ip, CreateDate = DateTime.Now
         });
         spyDB.SaveChanges();
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #2
0
        /// <summary>
        /// Метод записывает факт прохождения теста и возвращает результаты для пользователя
        /// </summary>
        private List <string> TestResultsProcessing(string ip, Guid sessionId, int degreeSelect, int degreeRouteSelect, string organizationText, int innerRouteSelect)
        {
            string org    = "None";
            var    result = new List <string>();

            if (organizationText != "" && organizationText != "нет" && organizationText != null)
            {
                org = organizationText;
            }

            //сначала запишем в шпионскую базу данные и отдельно сам факт заполнения
            try {
                using (var spyDB = new SpyContext()) {
                    spyDB.Tests.Add(new Tests {
                        Date    = DateTime.Now, Degree = degreeSelect, Direction = innerRouteSelect, Organization = org,
                        Science = degreeRouteSelect, SessionId = sessionId, UserId = ip
                    });

                    spyDB.FormFills.Add(new FormFills {
                        FormName = "Test", UserId = ip, SessionId = sessionId, Date = DateTime.Now
                    });

                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }

            //теперь создадим список результатов из базы сайта
            try {
                using (var siteDB = new SiteContext()) {
                    var themes = siteDB.Themes.Where(x => x.DirectionId == innerRouteSelect).ToList();

                    foreach (var theme in themes)
                    {
                        //если тема подразумевает наличие организации и сама организация заполнена
                        if (theme.Organization && org != "None")
                        {
                            result.Add(theme.Name + " *название вашей организациии*");
                        }
                        else
                        {
                            result.Add(theme.Name);
                        }
                    }
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }

            return(result);
        }
Beispiel #3
0
 /// <summary>
 /// Запись события потери фокуса
 /// </summary>
 private void WriteFocusLostInDb(string page, string ip, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.FocusLost.Add(new FocusLost {
                 Page = page, SessionId = sessionId, UserId = ip, Date = DateTime.Now
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #4
0
 /// <summary>
 /// Приватный метод записи геолокации в БД
 /// </summary>
 private void WriteGeoInDb(string geo, string ip, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.Geolocations.Add(new Geolocations {
                 Location = geo, UserId = ip, Date = DateTime.Now, SessionId = sessionId
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #5
0
 /// <summary>
 /// Приватный метод записи браузера в базу
 /// </summary>
 private void WriteBrowserInDb(string browser, string ip, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.Browsers.Add(new Browsers {
                 Browser = browser, UserId = ip, Date = DateTime.Now, SessionId = sessionId
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #6
0
 /// <summary>
 /// Записываем сам факт записи в форму
 /// </summary>
 private void WriteFormFillInDb(string ip, Guid sessionId, string formName)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.FormFills.Add(new FormFills {
                 UserId = ip, Date = DateTime.Now, SessionId = sessionId, FormName = formName
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #7
0
 /// <summary>
 /// Запись содержимого "свободной" формы
 /// </summary>
 private void WriteFreeTextInDb(string ip, Guid sessionId, string freeText)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.FreeTextForms.Add(new FreeTextForms {
                 UserId = ip, Date = DateTime.Now, SessionId = sessionId, Text = freeText
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #8
0
 /// <summary>
 /// Запись согласия на куки в базу
 /// </summary>
 /// <param name="ip"></param>
 /// <param name="sessionId"></param>
 private void WriteCookieAgreeInDb(string ip, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.CookieAgree.Add(new CookieAgree {
                 SessionId = sessionId, UserId = ip, Date = DateTime.Now
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #9
0
 /// <summary>
 /// Запись времени загрузки страницы в БД
 /// </summary>
 private void WriteLoadInDb(int time, string page, string ip, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.PageLoadTimeLog.Add(new PageLoadTimeLog {
                 Page = page, UserId = ip, Date = DateTime.Now, Time = time, SessionId = sessionId
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #10
0
        /// <summary>
        /// Приватный метод проверки IP в БД
        /// </summary>
        private void CheckIpInDb(string ip)
        {
            try {
                using (var spyDB = new SpyContext()) {
                    var user = spyDB.Users.Where(x => x.IP == ip).ToList();

                    if (user.Count() == 0)
                    {
                        WriteIpInDb(ip, spyDB);
                    }
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #11
0
        /// <summary>
        /// Запись данных их формы с общими данными
        /// </summary>
        private void WriteCommonInDb(string ip, Guid sessionId, string yourName, string yourCity, int yourYear, int direction, int degreeSelect)
        {
            try {
                using (var spyDB = new SpyContext()) {
                    spyDB.CommonForms.Add(new CommonForms {
                        UserId = ip, Date = DateTime.Now, SessionId = sessionId,
                        City   = yourCity, DegreeSelect = degreeSelect, Direction = direction, Name = yourName, Year = yourYear
                    });

                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #12
0
 /// <summary>
 /// Запись клика по картинке в базу данных
 /// </summary>
 /// <param name="ip"></param>
 /// <param name="page"></param>
 /// <param name="source"></param>
 /// <param name="destination"></param>
 /// <param name="type"></param>
 /// <param name="sessionId"></param>
 private void WritePicsInDb(string ip, string name, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.Pics.Add(new Pics {
                 Name      = name,
                 SessionId = sessionId, UserId = ip,
                 Date      = DateTime.Now
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #13
0
 /// <summary>
 /// Логгирование переходов по ссылкам в базе
 /// </summary>
 /// <param name="ip"></param>
 /// <param name="page"></param>
 /// <param name="source"></param>
 /// <param name="destination"></param>
 /// <param name="type"></param>
 /// <param name="sessionId"></param>
 private void WriteLinksInDb(string ip, string page, string source, string destination, int type, Guid sessionId)
 {
     try {
         using (var spyDB = new SpyContext()) {
             spyDB.Links.Add(new Links {
                 Page      = page, Source = source,
                 Type      = type, Destination = destination,
                 SessionId = sessionId, UserId = ip,
                 Date      = DateTime.Now
             });
             spyDB.SaveChanges();
         }
     } catch (Exception ex) {
         SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
     }
 }
Beispiel #14
0
        /// <summary>
        /// Запись из формы о дизайне и user expirience
        /// </summary>
        private void WriteUiuxInDb(string ip, Guid sessionId, int averageUi, int correctWork, int trust, int modern, int pageLocations, int formPreference)
        {
            try {
                using (var spyDB = new SpyContext()) {
                    spyDB.UiuxForms.Add(new UiuxForms {
                        UserId    = ip, Date = DateTime.Now, SessionId = sessionId,
                        AverageUI = averageUi, CorrectWork = correctWork, Trust = trust,
                        Modern    = modern, PageLocation = pageLocations, FormPreference = formPreference
                    });

                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #15
0
        /// <summary>
        /// Запись данных из формы о функциональности сайта
        /// </summary>
        private void WriteFunctionalInDb(string ip, Guid sessionId, int average, int loadTime, int limitations, string oneThing, int somethingNew, int reccomend, int portrait, int trueData)
        {
            try {
                using (var spyDB = new SpyContext()) {
                    spyDB.FunctionalForms.Add(new FunctionalForms {
                        UserId    = ip, Date = DateTime.Now, SessionId = sessionId,
                        Average   = average, Limitations = limitations, LoadTime = loadTime, OneThing = oneThing, Portrait = portrait,
                        Reccomend = reccomend, SomethingNew = somethingNew, TrueData = trueData
                    });

                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #16
0
        /// <summary>
        /// Запись события покидания страницы в БД
        /// </summary>
        private void WriteExitInDb(int time, string page, string ip, Guid sessionId)
        {
            try {
                using (var spyDB = new SpyContext()) {
                    decimal timeDec = time / 1000;

                    time = Convert.ToInt32(Math.Round(timeDec));
                    spyDB.ExitLog.Add(new ExitLog {
                        Page = page, UserId = ip, Date = DateTime.Now, Time = time, SessionId = sessionId
                    });
                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #17
0
        /// <summary>
        /// Записываем в базу, откуда пришел пользователь
        /// </summary>
        private void WriteRefererInDb(string referer, string ip, Guid sessionId)
        {
            try {
                var refererLink = "";

                if (referer == null || referer == "")
                {
                    refererLink = "Straight or other";
                }

                using (var spyDB = new SpyContext()) {
                    spyDB.Referers.Add(new Referers {
                        UserId = ip, SessionId = sessionId, Referer = refererLink, Date = DateTime.Now
                    });
                    spyDB.SaveChanges();
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }
        }
Beispiel #18
0
        /// <summary>
        /// Приватный метод, работающий над заполнением модели портрета пользователя
        /// </summary>
        private PortraitModel CreatePortrait(string ip, Guid sessionId, PortraitModel model)
        {
            try {
                //ip-адрес
                model.Ip = ip;

                using (var spyDB = new SpyContext()) {
                    //смотрим текущий браузер
                    try {
                        var browser = spyDB.Browsers.Where(x => x.UserId == ip)
                                      .OrderByDescending(x => x.Date)
                                      .ToList();

                        if (browser != null && browser.Count() != 0)
                        {
                            model.Browser = browser[0].Browser;
                        }
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }


                    //предыдущие браузеры
                    try {
                        var previousBrowsers = spyDB.Browsers.Where(x => x.UserId == ip).ToList();
                        previousBrowsers.ForEach(x => model.PreviousBrowsers.Add(x.Browser));
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }


                    //геолокация
                    try {
                        var currentGeolocation = spyDB.Geolocations.Where(x => x.UserId == ip).OrderByDescending(x => x.Date).ToList();
                        if (currentGeolocation != null && currentGeolocation.Count() != 0)
                        {
                            model.Geolocation = currentGeolocation[0].Location;
                        }
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //время данного сеанса
                    try {
                        var thisSessionHistory = spyDB.ExitLog.Where(x => x.UserId == ip && x.SessionId == sessionId).ToList();

                        //и сразу историю сеанса
                        foreach (var page in thisSessionHistory)
                        {
                            model.SpendedTime += page.Time;
                            thisSessionHistory.OrderBy(x => x.Date);
                            model.History.Add(new HistoryClass {
                                Page = page.Page, Time = page.Time, Date = page.Date
                            });
                        }
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //среднее время загрузки страниц
                    try {
                        var loads         = spyDB.PageLoadTimeLog.Where(x => x.UserId == ip && x.SessionId == sessionId).ToList();
                        int totalLoadTime = 0;

                        loads.ForEach(x => totalLoadTime += x.Time);
                        model.AverageLoadTime             = totalLoadTime / (loads.Count + 1);
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //количество потерь фокуса
                    try {
                        var losts = spyDB.PageLoadTimeLog.Where(x => x.UserId == ip && x.SessionId == sessionId).ToList();

                        model.FocusLostCount = losts.Count - model.History.Count;
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //количество просмотренных картинок
                    try {
                        var views = spyDB.Pics.Where(x => x.UserId == ip && x.SessionId == sessionId).ToList();

                        model.PicsViewed = views.Count;
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //количество переходов по внешним ссылкам
                    try {
                        var externals = spyDB.Links.Where(x => x.UserId == ip && x.SessionId == sessionId
                                                          //тип ссылки 1 это внешняя ссылка, тип 2 это ссылка на источник в статье
                                                          && (x.Type == 1 || x.Type == 2)).ToList();

                        model.ExternalLinks = externals.Count;
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }

                    //количество предыдущих сессий
                    try {
                        var previousSessions = spyDB.Sessions.Where(x => x.UserId == ip).ToList();

                        model.PreviousSessions = (previousSessions.Count) / 6;
                    } catch (Exception ex) {
                        SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
                    }
                }
            } catch (Exception ex) {
                SiteService.WriteError(ex.Message, ex.Source, ex.StackTrace);
            }

            return(model);
        }