public void Delete(StatisticsEntry entry)
 {
     using (var context = new MillionaireContext())
     {
         context.Entry(entry).State = EntityState.Deleted;
     }
 }
Пример #2
0
        /// <summary>
        /// Tworzy zestaw informacji niezbędnych do odnotowania w statystykach informacji o requeście klienta i o wysłanym do niego w odpowiedzi obiekcie multimedialnym.
        /// </summary>
        /// <param name="selectionParams">Parametry opisujące request, na podstawie których został wybrany odpowiedni obiekt multimedialny</param>
        /// <param name="multimediaObject">Wybrany obiekt multimedialny (który zostanie zwrócony klientowi jako odpowiedź na jego request)</param>
        /// <param name="clicked">Stat wpisu - przekierowanie / wyswietlenie</param>
        public StatisticsEntry CreateStatisticsEntry(MultimediaObjectsSelectionParams selectionParams, AdFile multimediaObject, bool clicked = false)
        {
            if (selectionParams == null || multimediaObject == null)
            {
                return(null);
            }

            var result     = new StatisticsEntry();
            var userId     = _repositories.DeviceRepository.Devices.Single(it => it.Id == selectionParams.ID).UserId;
            var statistics = new Statistic
            {
                DeviceId           = selectionParams.ID,
                UserId             = userId,
                RequestDate        = selectionParams.RequestDate,
                ResponseDate       = DateTime.Now,
                SessionId          = selectionParams.SessionId,
                Data1              = selectionParams.Data0,
                Data2              = selectionParams.Data1,
                Data3              = selectionParams.Data2,
                Data4              = selectionParams.Data3,
                MultimediaObjectId = multimediaObject.ID,
                RequestSource      = selectionParams.RequestSource,
                CampaignId         = multimediaObject.CmpId,
                RequestIP          = selectionParams.RequestIP
            };

            result.Statistics = statistics;

            var now = DateTime.Now;
            // szukamy kampanii, do których należy obiekt multimedialny
            var mmObject = _repositories.MultimediaObjectRepository.MultimediaObjects.Single(it => it.Id == multimediaObject.ID);

            var cmps = mmObject.Campaigns.Select(it => new SelectedMultimediaObjectCampaign
            {
                CampaignId        = it.Id,
                IsActiveCampaign  = it.IsActive,
                PriorityCode      = it.Priority.Code,
                CampaignStartDate = it.StartDate,
                CampaignEndDate   = it.EndDate
            });

            var campaignsId = cmps.Select(it => it.CampaignId);

            // bierzemy tylko te kategorie, do których należą wybrane kampanie
            var categories = mmObject.Campaigns
                             .SelectMany(it => it.Categories)
                             .Distinct();

            result.Categories = categories.Select(it => new { it.Code, it.Id }).ToDictionary(it => it.Code, it => it.Id);

            var cmp = mmObject.Campaigns.FirstOrDefault();

            if (cmp != null)
            {
                result.Statistics.AdPoints = clicked ? cmp.ClickValue : cmp.ViewValue;
            }
            result.Statistics.Clicked = clicked;
            return(result);
        }
Пример #3
0
        private void AddToDatabase(StatisticsEntry newStatistic)
        {
            using (DatabaseContext dbContext = new DatabaseContext())
            {
                Statistics newEntity = Mapper.Map <StatisticsEntry, Statistics>(newStatistic);

                dbContext.Statistics.Add(newEntity);

                dbContext.SaveChanges();
            }
        }
Пример #4
0
 public void Write(StatisticsEntry statistics)
 {
     lock (LockObject)
     {
         try
         {
             _buffer.AppendLine(statistics.Title + " : " + statistics.Message);
         }
         catch (Exception ex)
         {
             EventLog.WriteEntry("ListLogStatisticsWriter", ex.Message + Environment.NewLine + ex, EventLogEntryType.Warning);
         }
     }
 }
 private StatisticsEntry GetAddStatisticsEntry(string userName)
 {
     if (!statistics.ContainsKey(userName))
     {
         StatisticsEntry entry = new StatisticsEntry();
         entry.userName = userName;
         statistics.Add(userName, entry);
         return(entry);
     }
     else
     {
         return(statistics[userName]);
     }
 }
 public void Update(StatisticsEntry entry)
 {
     using (var context = new MillionaireContext())
     {
         var question = context.Questions.Where(q => q.QuestionID == entry.QuestionID)
                        .Include(q => q.Answers).FirstOrDefault();
         int i = 0;
         foreach (var child in question.Answers)
         {
             context.Entry(child).Entity.TimesSelected = entry.Question.Answers[i++].TimesSelected;
             context.Entry(child).State = EntityState.Modified;
         }
         context.SaveChanges();
     }
 }
Пример #7
0
        public void RequestParamsAreCompleteAndOK()
        {
            var repositories = CreateMocks();
            ///zmienna przechowująca poprzednio pobrany obiekt
            AdFile previousMultimediaObject = null;
            ///zmienna przechowująca poprzednio wygenerowaną statystykę
            StatisticsEntry previousStatisticsEntry = null;
            ///request dla metody wyszukującej obiekt multimedialny
            var request   = CreateRequest();
            var itemCount = 4;

            for (var i = 0; i < itemCount; i++)
            {
                CheckMethods(repositories, ref previousMultimediaObject, ref previousStatisticsEntry, request);
            }
        }
Пример #8
0
        public void Run([NotNull] string directory, [NotNull] string districtDefinitionJsonPath)
        {
            DirectoryInfo          di      = new DirectoryInfo(directory);
            var                    subdirs = di.GetDirectories();
            List <StatisticsEntry> entries = new List <StatisticsEntry>();

            foreach (var subdir in subdirs)
            {
                var files = subdir.GetFiles("*.json");
                foreach (var file in files)
                {
                    string json = File.ReadAllText(file.FullName);
                    HouseCreationAndCalculationJob jcs = JsonConvert.DeserializeObject <HouseCreationAndCalculationJob>(json);
                    var e = new StatisticsEntry(file.FullName, jcs, subdir.Name);
                    entries.Add(e);
                }

                var database = subdir.GetFiles("*.db3").ToList();
                if (database.Count != 1)
                {
                    throw new LPGException("No database found");
                }

                //string connectionString = "Data Source=" + database[0].FullName;
                //Simulator sim = new Simulator(connectionString);
//todo: fix
                //foreach (StatisticsEntry entry in entries) {
                //    var house = sim.Houses.FindByJsonReference(entry.hou);
                //    if (house != null) {
                //        entry.HouseholdCount = house.Households.Count;
                //        entry.TotalPersonCount = house.Households.Sum(x => x.CalcObject?.AllPersons.Count ?? 0);
                //    }
                //}
            }
            //ReadSourceData(entries, districtDefinitionJsonPath);
            StreamWriter sw = new StreamWriter(di.CombineName("Statistics.csv"));

            sw.WriteLine("Calc Definition;Name;HouseGuid;Directory;Real Persons;Real Households;Planned Persons;Planned Households;Source File");
            foreach (StatisticsEntry statisticsEntry in entries)
            {
                sw.WriteLine(statisticsEntry.GetCsvLine());
            }
            sw.Close();
        }
        private static StatisticsEntry[] ReadStatisticsEntryArray(PacketDataReader reader, int length = 0)
        {
            if (length == 0)
            {
                length = reader.Read <VarInt>();
            }

            var array = new StatisticsEntry[length];

            for (var i = 0; i < array.Length; i++)
            {
                array[i] = new StatisticsEntry
                {
                    StatisticsName = reader.Read <string>(),
                    Value          = reader.Read <VarInt>()
                }
            }
            ;
            return(array);
        }
Пример #10
0
        public void RequestParamIsIncomplete()
        {
            ///przypadek, kiedy w obiekcie requesta są wypełnione tylko niezbędne pola
            var request = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection.MultimediaObjectsSelectionParams();
            //request.CategoryCodes = new string[] { "MED", "MTR" };
            //request.Width = 250;
            //request.Height = 250;
            //request.SessionId = Guid.NewGuid().ToString();

            var repositories = CreateMocks();
            ///zmienna przechowująca poprzednio pobrany obiekt
            AdFile previousMultimediaObject = null;
            ///zmienna przechowująca poprzednio wygenerowaną statystykę
            StatisticsEntry previousStatisticsEntry = null;
            var             mos = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection(repositories);

            var itemCount = 4;

            for (var i = 0; i < itemCount; i++)
            {
                CheckMethods(repositories, ref previousMultimediaObject, ref previousStatisticsEntry, request);
            }
        }
Пример #11
0
        public void ProcessRequest(MIGClientRequest request, MIGInterfaceCommand migcmd)
        {
            //SQLiteCommand dbcmd = _dbconnection.CreateCommand();
            switch (migcmd.command)
            {
            case "Global.CounterTotal":
                migcmd.response = JsonHelper.GetSimpleResponse(_hg.Statistics.GetTotalCounter(migcmd.GetOption(0), 3600).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture));
                break;

            case "Global.TimeRange":
                StatisticsEntry totalrange = _hg.Statistics.GetStartDate();
                migcmd.response = "[{ StartTime : '" + ((totalrange.TimeStart.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "', EndTime : '" + ((totalrange.TimeEnd.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "' }]";
                break;

            case "Database.Reset":
                _hg.Statistics.DatabaseReset();
                break;

            case "Parameter.List":
                var pdomain  = "";
                var paddress = "";
                var pfilter  = migcmd.GetOption(0).Split(':');
                if (pfilter.Length == 2)
                {
                    pdomain  = pfilter[0];
                    paddress = pfilter[1];
                }
                migcmd.response = "[";
                foreach (string sp in _hg.Statistics.GetParametersList(pdomain, paddress))
                {
                    migcmd.response += "	'"+ sp + "',\n";
                }
                migcmd.response  = migcmd.response.TrimEnd(',', '\n');
                migcmd.response += "\n]";
                break;

            case "Parameter.Counter":
                var cdomain  = "";
                var caddress = "";
                var cfilter  = migcmd.GetOption(1).Split(':');
                if (cfilter.Length == 2)
                {
                    cdomain  = cfilter[0];
                    caddress = cfilter[1];
                }
                //
                migcmd.response  = "[";
                migcmd.response += "[ ";
                //
                List <StatisticsEntry> hoursaverage = new List <StatisticsEntry>();
                hoursaverage = _hg.Statistics.GetHourlyCounter(cdomain, caddress, migcmd.GetOption(0), 3600);;
                //
                for (int h = 0; h < 24; h++)
                {
                    StatisticsEntry firstentry = null;
                    if (hoursaverage != null && hoursaverage.Count > 0)
                    {
                        firstentry = hoursaverage.Find(se => se.TimeStart.ToLocalTime().Hour == h);
                    }
                    //
                    if (firstentry != null)
                    {
                        double sum = 0;
                        sum = (double)(hoursaverage.FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Sum(se => se.Value));
                        // date is normalized to the current date, time info is preserved from original data entry
                        DateTime d = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migcmd.response += "[" + ((d.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                    }
                    else
                    {
                        DateTime d = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migcmd.response += "[" + ((d.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                    }
                }
                migcmd.response  = migcmd.response.TrimEnd(',');
                migcmd.response += " ]";
                migcmd.response += "]";
                break;

            case "Parameter.StatsHour":
                var domain  = "";
                var address = "";
                var filter  = migcmd.GetOption(1).Split(':');
                if (filter.Length == 2)
                {
                    domain  = filter[0];
                    address = filter[1];
                }
                //
                migcmd.response = "[";
                //
                List <StatisticsEntry>[] hoursaverages = new List <StatisticsEntry> [5];
                hoursaverages[0] = _hg.Statistics.GetHourlyStats(domain, address, migcmd.GetOption(0), "Min");
                hoursaverages[1] = _hg.Statistics.GetHourlyStats(domain, address, migcmd.GetOption(0), "Max");
                hoursaverages[2] = _hg.Statistics.GetHourlyStats(domain, address, migcmd.GetOption(0), "Avg");
                hoursaverages[3] = _hg.Statistics.GetHourlyStats24(domain, address, migcmd.GetOption(0), "Avg");
                if (migcmd.GetOption(0) == Properties.METER_WATTS)
                {
                    hoursaverages[4] = _hg.Statistics.GetTodayDetail(domain, address, migcmd.GetOption(0), "Sum");
                }
                else
                {
                    hoursaverages[4] = _hg.Statistics.GetTodayDetail(domain, address, migcmd.GetOption(0), "Avg");
                }
                //
                for (int x = 0; x < 4; x++)
                {
                    migcmd.response += "[ ";
                    for (int h = 0; h < 24; h++)
                    {
                        StatisticsEntry firstentry = null;
                        if (hoursaverages[x] != null && hoursaverages[x].Count > 0)
                        {
                            if (migcmd.GetOption(0) == Properties.METER_WATTS)
                            {
                                firstentry = hoursaverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0);
                            }
                            else
                            {
                                firstentry = hoursaverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h);
                            }
                        }
                        //
                        if (firstentry != null)
                        {
                            double sum = 0;
                            switch (x)
                            {
                            case 0:
                                if (migcmd.GetOption(0) == Properties.METER_WATTS)
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Min(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Min(se => se.Value));
                                }
                                break;

                            case 1:
                                sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Max(se => se.Value));
                                break;

                            case 2:
                                if (migcmd.GetOption(0) == Properties.METER_WATTS)
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;

                            case 3:
                                if (migcmd.GetOption(0) == Properties.METER_WATTS)
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursaverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;
                            }
                            // date is normalized to the current date, time info is preserved from original data entry
                            DateTime d = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migcmd.response += "[" + ((d.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                        }
                        else
                        {
                            DateTime d = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migcmd.response += "[" + ((d.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                        }
                    }
                    migcmd.response  = migcmd.response.TrimEnd(',');
                    migcmd.response += " ],";
                }
                //
                migcmd.response += "[ ";
                foreach (StatisticsEntry se in hoursaverages[4])
                {
                    DateTime d = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + se.TimeStart.ToLocalTime().ToString("HH:mm:ss.ffffff"));
                    migcmd.response += "[" + ((d.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + se.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                migcmd.response  = migcmd.response.TrimEnd(',');
                migcmd.response += " ]";
                //
                migcmd.response += "]";
                break;
            }
        }
Пример #12
0
        public void ProcessRequest(MIGClientRequest request, MIGInterfaceCommand migCommand)
        {
            string   domain = "";
            string   address = "";
            int      domainSeparator = 0;
            DateTime dateStart, dateEnd;

            switch (migCommand.Command)
            {
            case "Global.CounterTotal":
                var counter = homegenie.Statistics.GetTotalCounter(migCommand.GetOption(0), 3600);
                migCommand.Response = JsonHelper.GetSimpleResponse(counter.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture));
                break;

            case "Global.TimeRange":
                var totalRange = homegenie.Statistics.GetDateRange();
                migCommand.Response = "[{ StartTime : '" + DateToJavascript(totalRange.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "', EndTime : '" + DateToJavascript(totalRange.TimeEnd).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "' }]";
                break;

            case "Database.Reset":
                homegenie.Statistics.ResetDatabase();
                break;

            case "Configuration.Get":
                // Just one at the moment.
                migCommand.Response = "[{ StatisticsUIRefreshSeconds : '" + homegenie.SystemConfiguration.HomeGenie.Statistics.StatisticsUIRefreshSeconds + "' }]";
                break;

            case "Parameter.List":
                domainSeparator = migCommand.GetOption(0).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(0).Substring(0, domainSeparator);
                    address = migCommand.GetOption(0).Substring(domainSeparator + 1);
                }
                migCommand.Response = "[";
                foreach (string statParameter in homegenie.Statistics.GetParametersList(domain, address))
                {
                    migCommand.Response += "	'"+ statParameter + "',\n";
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',', '\n');
                migCommand.Response += "\n]";
                break;

            case "Parameter.Counter":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                migCommand.Response  = "[";
                migCommand.Response += "[ ";
                //
                var hoursAverage = new List <StatisticsEntry>();
                dateStart    = JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd      = JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                hoursAverage = homegenie.Statistics.GetHourlyCounter(domain, address, migCommand.GetOption(0), 3600, dateStart, dateEnd);
                //
                for (int h = 0; h < 24; h++)
                {
                    StatisticsEntry firstEntry = null;
                    if (hoursAverage != null && hoursAverage.Count > 0)
                    {
                        firstEntry = hoursAverage.Find(se => se.TimeStart.ToLocalTime().Hour == h);
                    }
                    //
                    if (firstEntry != null)
                    {
                        double sum = 0;
                        sum = (double)(hoursAverage.FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Sum(se => se.Value));
                        // date is normalized to the current date, time info is preserved from original data entry
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migCommand.Response += "[" + DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                    }
                    else
                    {
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migCommand.Response += "[" + DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                    }
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',');
                migCommand.Response += " ]";
                migCommand.Response += "]";
                break;

            case "Parameter.StatsHour":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                migCommand.Response = "[";
                //
                dateStart = JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd   = JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                var hoursAverages = new List <StatisticsEntry> [5];
                hoursAverages[0] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Min", dateStart, dateEnd);
                hoursAverages[1] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Max", dateStart, dateEnd);
                hoursAverages[2] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Avg", dateStart, dateEnd);
                hoursAverages[3] = homegenie.Statistics.GetHourlyStatsToday(domain, address, migCommand.GetOption(0), "Avg");
                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Sum");
                }
                else
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Avg");
                }
                //
                for (int x = 0; x < 4; x++)
                {
                    migCommand.Response += "[ ";
                    for (int h = 0; h < 24; h++)
                    {
                        StatisticsEntry firstEntry = null;
                        if (hoursAverages[x] != null && hoursAverages[x].Count > 0)
                        {
                            if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0);
                            }
                            else
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h);
                            }
                        }
                        //
                        if (firstEntry != null)
                        {
                            double sum = 0;
                            switch (x)
                            {
                            case 0:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Min(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Min(se => se.Value));
                                }
                                break;

                            case 1:
                                sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Max(se => se.Value));
                                break;

                            case 2:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;

                            case 3:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;
                            }
                            // date is normalized to the current date, time info is preserved from original data entry
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migCommand.Response += "[" + DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                        }
                        else
                        {
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migCommand.Response += "[" + DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                        }
                    }
                    migCommand.Response  = migCommand.Response.TrimEnd(',');
                    migCommand.Response += " ],";
                }
                //
                migCommand.Response += "[ ";
                foreach (var entry in hoursAverages[4])
                {
                    var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + entry.TimeStart.ToLocalTime().ToString("HH:mm:ss.ffffff"));
                    migCommand.Response += "[" + DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',');
                migCommand.Response += " ]";
                //
                migCommand.Response += "]";
                break;

            case "Parameter.StatsDay":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                migCommand.Response = "[";
                //
                dateStart = JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd   = JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                var daysAverages = new List <StatisticsEntry> [1];
                daysAverages[0]      = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "", dateStart, dateEnd);
                migCommand.Response += "[ ";
                foreach (var entry in daysAverages[0])
                {
                    migCommand.Response += "[" + DateToJavascriptLocal(entry.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',');
                migCommand.Response += " ]";
                //
                migCommand.Response += "]";
                break;

            case "Parameter.StatDelete":
                migCommand.Response = "[";
                var dateText = migCommand.GetOption(0).Replace('.', ',');
                dateStart = JavascriptToDateUtc(double.Parse(dateText));
                var responseDelete = homegenie.Statistics.DeleteStat(dateStart, migCommand.GetOption(1));
                migCommand.Response += "[Response," + responseDelete + "]";
                migCommand.Response += "]";
                break;
            }
        }
Пример #13
0
        private void CheckMethods(RepositorySet repositories,
                                  ref AdFile previousMultimediaObject,
                                  ref StatisticsEntry previousStatisticsEntry,
                                  ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection.MultimediaObjectsSelectionParams request)
        {
            var           now = DateTime.Now;
            var           mos = new ADEngineMultimediaSelectionAlgorythm.MultimediaObjectSelection(repositories);
            List <string> validationErrors = null;
            ///wyszukanie i pobranie obiektu do wyświetlenia
            var mo1 = mos.FindMultimediaObject(request, FILESTREAM_OPTION, out validationErrors);

            ///pobranie wygenerowanej statystyki
            var se1 = mos.CreateStatisticsEntry(request, mo1);

            ///zapis statystyki do "bazy"
            //MockData.Statistics.Add(se1.Statistics);
            repositories = CreateMocks();

            if (fetchedFiles == null)
            {
                fetchedFiles = new List <AdFile>();
            }
            ///zapamietujemy otrzymany obiekt
            fetchedFiles.Add(mo1);

            ///czy obiekt nie jest nullem
            Assert.IsNotNull(mo1);
            Assert.IsNotNull(se1);

            if (mo1 != null && se1 != null)
            {
                ///czy zgadza się rozmiar
                //Assert.AreEqual(request.Width, mo1.Width);
                //Assert.AreEqual(request.Height, mo1.Height);
                ///czy zgadza się nośnik
                //Assert.AreEqual(request.Referrer, se1.Statistics.Referrer);
                ///czy kampanie i kategorie nie są nullem
                Assert.IsNotNull(se1.SelectedMultimediaObjectCampaigns);
                Assert.IsNotNull(se1.Categories);
                ///czy obiekt jest różny od poprzednio pobranego obiektu
                if (previousMultimediaObject != null)
                {
                    Assert.AreNotEqual(mo1.ID, previousMultimediaObject.ID);
                }

                if (se1.SelectedMultimediaObjectCampaigns != null)
                {
                    foreach (var c in se1.SelectedMultimediaObjectCampaigns)
                    {
                        Assert.IsTrue(c.IsActiveCampaign);
                        Assert.IsTrue(c.CampaignStartDate <= now);
                        Assert.IsTrue(c.CampaignEndDate >= now);
                    }
                }

                if (se1.Categories != null)
                {
                    //if (request.CategoryCodes.Length <= se1.Categories.Count)
                    //{
                    //	for (var i = 0; i < request.CategoryCodes.Length; i++)
                    //	{
                    //		Assert.IsTrue(se1.Categories.ContainsKey(request.CategoryCodes[i]));
                    //	}
                    //}
                    //else
                    //{
                    //	foreach (var c in se1.Categories)
                    //	{
                    //		Assert.IsTrue(request.CategoryCodes.ToList().Contains(c.Key));
                    //	}
                    //}
                }

                if (firstObject == null)
                {
                    firstObject = mo1;
                }
                else
                {
                    var previousStatus = previousStatisticsEntry.SelectedMultimediaObjectCampaigns.Max(x => x.PriorityCode);
                    var currentStatus  = se1.SelectedMultimediaObjectCampaigns.Max(x => x.PriorityCode);
                    if (mo1.ID != firstObject.ID)
                    {
                        Assert.IsTrue(previousStatus >= currentStatus);
                    }
                }

                previousMultimediaObject = mo1;
                previousStatisticsEntry  = se1;
            }
        }
Пример #14
0
        public HttpResponseMessage PostNewStatistic(StatisticsEntry newStatistic)
        {
            AddToDatabase(newStatistic);

            return(Request.CreateResponse(HttpStatusCode.Created));
        }
Пример #15
0
        public void ProcessRequest(MIGClientRequest request, MIGInterfaceCommand migCommand)
        {
            string domain  = "";
            string address = "";

            string[] filterList;

            switch (migCommand.Command)
            {
            case "Global.CounterTotal":
                migCommand.Response = JsonHelper.GetSimpleResponse(homegenie.Statistics.GetTotalCounter(migCommand.GetOption(0), 3600).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture));
                break;

            case "Global.TimeRange":
                var totalRange = homegenie.Statistics.GetStartDate();
                migCommand.Response = "[{ StartTime : '" + ((totalRange.TimeStart.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "', EndTime : '" + ((totalRange.TimeEnd.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "' }]";
                break;

            case "Database.Reset":
                homegenie.Statistics.DatabaseReset();
                break;

            case "Parameter.List":
                filterList = migCommand.GetOption(0).Split(':');
                if (filterList.Length == 2)
                {
                    domain  = filterList[0];
                    address = filterList[1];
                }
                migCommand.Response = "[";
                foreach (string statParameter in homegenie.Statistics.GetParametersList(domain, address))
                {
                    migCommand.Response += "	'"+ statParameter + "',\n";
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',', '\n');
                migCommand.Response += "\n]";
                break;

            case "Parameter.Counter":
                filterList = migCommand.GetOption(1).Split(':');
                if (filterList.Length == 2)
                {
                    domain  = filterList[0];
                    address = filterList[1];
                }
                //
                migCommand.Response  = "[";
                migCommand.Response += "[ ";
                //
                var hoursAverage = new List <StatisticsEntry>();
                hoursAverage = homegenie.Statistics.GetHourlyCounter(domain, address, migCommand.GetOption(0), 3600);;
                //
                for (int h = 0; h < 24; h++)
                {
                    StatisticsEntry firstEntry = null;
                    if (hoursAverage != null && hoursAverage.Count > 0)
                    {
                        firstEntry = hoursAverage.Find(se => se.TimeStart.ToLocalTime().Hour == h);
                    }
                    //
                    if (firstEntry != null)
                    {
                        double sum = 0;
                        sum = (double)(hoursAverage.FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Sum(se => se.Value));
                        // date is normalized to the current date, time info is preserved from original data entry
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migCommand.Response += "[" + ((date.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                    }
                    else
                    {
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        migCommand.Response += "[" + ((date.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                    }
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',');
                migCommand.Response += " ]";
                migCommand.Response += "]";
                break;

            case "Parameter.StatsHour":
                filterList = migCommand.GetOption(1).Split(':');
                if (filterList.Length == 2)
                {
                    domain  = filterList[0];
                    address = filterList[1];
                }
                //
                migCommand.Response = "[";
                //
                var hoursAverages = new List <StatisticsEntry> [5];
                hoursAverages[0] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Min");
                hoursAverages[1] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Max");
                hoursAverages[2] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Avg");
                hoursAverages[3] = homegenie.Statistics.GetHourlyStats24(domain, address, migCommand.GetOption(0), "Avg");
                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Sum");
                }
                else
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Avg");
                }
                //
                for (int x = 0; x < 4; x++)
                {
                    migCommand.Response += "[ ";
                    for (int h = 0; h < 24; h++)
                    {
                        StatisticsEntry firstEntry = null;
                        if (hoursAverages[x] != null && hoursAverages[x].Count > 0)
                        {
                            if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0);
                            }
                            else
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h);
                            }
                        }
                        //
                        if (firstEntry != null)
                        {
                            double sum = 0;
                            switch (x)
                            {
                            case 0:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Min(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Min(se => se.Value));
                                }
                                break;

                            case 1:
                                sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Max(se => se.Value));
                                break;

                            case 2:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;

                            case 3:
                                if (migCommand.GetOption(0).StartsWith(Properties.METER_ANY))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;
                            }
                            // date is normalized to the current date, time info is preserved from original data entry
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migCommand.Response += "[" + ((date.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                        }
                        else
                        {
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            migCommand.Response += "[" + ((date.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                        }
                    }
                    migCommand.Response  = migCommand.Response.TrimEnd(',');
                    migCommand.Response += " ],";
                }
                //
                migCommand.Response += "[ ";
                foreach (var entry in hoursAverages[4])
                {
                    var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + entry.TimeStart.ToLocalTime().ToString("HH:mm:ss.ffffff"));
                    migCommand.Response += "[" + ((date.Ticks - 621355968000000000) / 10000D).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                migCommand.Response  = migCommand.Response.TrimEnd(',');
                migCommand.Response += " ]";
                //
                migCommand.Response += "]";
                break;
            }
        }
Пример #16
0
        public void ProcessRequest(MigClientRequest request)
        {
            var migCommand = request.Command;

            string   response = "";
            string   domain = "";
            string   address = "";
            int      domainSeparator = 0;
            DateTime dateStart, dateEnd;

            switch (migCommand.Command)
            {
            case "Global.CounterTotal":
                var counter = homegenie.Statistics.GetTotalCounter(migCommand.GetOption(0), 3600);
                request.ResponseData = new ResponseText(counter.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture));
                break;

            case "Global.TimeRange":
                var totalRange = homegenie.Statistics.GetDateRange();
                request.ResponseData = "{ \"StartTime\" : \"" + Utility.DateToJavascript(totalRange.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "\", \"EndTime\" : \"" + Utility.DateToJavascript(totalRange.TimeEnd).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "\" }";
                break;

            case "Database.Reset":
                homegenie.Statistics.ResetDatabase();
                break;

            case "Configuration.Get":
                // Just one at the moment.
                request.ResponseData = "{ \"StatisticsUiRefreshSeconds\" : \"" + homegenie.SystemConfiguration.HomeGenie.Statistics.StatisticsUiRefreshSeconds + "\" }";
                break;

            case "Parameter.List":
                domainSeparator = migCommand.GetOption(0).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(0).Substring(0, domainSeparator);
                    address = migCommand.GetOption(0).Substring(domainSeparator + 1);
                }
                response = "[";
                foreach (string statParameter in homegenie.Statistics.GetParametersList(domain, address))
                {
                    response += "	\""+ statParameter + "\",\n";
                }
                response             = response.TrimEnd(',', '\n');
                response            += "\n]";
                request.ResponseData = response;
                break;

            case "Parameter.Counter":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                response  = "[";
                response += "[ ";
                //
                var hoursAverage = new List <StatisticsEntry>();
                dateStart    = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd      = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                hoursAverage = homegenie.Statistics.GetHourlyCounter(domain, address, migCommand.GetOption(0), 3600, dateStart, dateEnd);
                //
                for (int h = 0; h < 24; h++)
                {
                    StatisticsEntry firstEntry = null;
                    if (hoursAverage != null && hoursAverage.Count > 0)
                    {
                        firstEntry = hoursAverage.Find(se => se.TimeStart.ToLocalTime().Hour == h);
                    }
                    //
                    if (firstEntry != null)
                    {
                        double sum = 0;
                        sum = (double)(hoursAverage.FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Sum(se => se.Value));
                        // date is normalized to the current date, time info is preserved from original data entry
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        response += "[" + Utility.DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                    }
                    else
                    {
                        var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                        response += "[" + Utility.DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                    }
                }
                response             = response.TrimEnd(',');
                response            += " ]";
                response            += "]";
                request.ResponseData = response;
                break;

            case "Parameter.StatsHour":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                response = "[";
                //
                dateStart = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd   = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                var hoursAverages = new List <StatisticsEntry> [5];
                hoursAverages[0] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Min", dateStart, dateEnd);
                hoursAverages[1] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Max", dateStart, dateEnd);
                hoursAverages[2] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "Avg", dateStart, dateEnd);
                hoursAverages[3] = homegenie.Statistics.GetHourlyStatsToday(domain, address, migCommand.GetOption(0), "Avg");
                if (migCommand.GetOption(0).StartsWith(Properties.MeterAny))
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Sum");
                }
                else
                {
                    hoursAverages[4] = homegenie.Statistics.GetTodayDetail(domain, address, migCommand.GetOption(0), "Avg");
                }
                //
                for (int x = 0; x < 4; x++)
                {
                    response += "[ ";
                    for (int h = 0; h < 24; h++)
                    {
                        StatisticsEntry firstEntry = null;
                        if (hoursAverages[x] != null && hoursAverages[x].Count > 0)
                        {
                            if (migCommand.GetOption(0).StartsWith(Properties.MeterAny))
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0);
                            }
                            else
                            {
                                firstEntry = hoursAverages[x].Find(se => se.TimeStart.ToLocalTime().Hour == h);
                            }
                        }
                        //
                        if (firstEntry != null)
                        {
                            double sum = 0;
                            switch (x)
                            {
                            case 0:
                                if (migCommand.GetOption(0).StartsWith(Properties.MeterAny))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Min(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Min(se => se.Value));
                                }
                                break;

                            case 1:
                                sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Max(se => se.Value));
                                break;

                            case 2:
                                if (migCommand.GetOption(0).StartsWith(Properties.MeterAny))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;

                            case 3:
                                if (migCommand.GetOption(0).StartsWith(Properties.MeterAny))
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h && se.Value > 0).Average(se => se.Value));
                                }
                                else
                                {
                                    sum = (double)(hoursAverages[x].FindAll(se => se.TimeStart.ToLocalTime().Hour == h).Average(se => se.Value));
                                }
                                break;
                            }
                            // date is normalized to the current date, time info is preserved from original data entry
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            response += "[" + Utility.DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + sum.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                        }
                        else
                        {
                            var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + h.ToString("00") + ":00:00");
                            response += "[" + Utility.DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + ",0.000],";
                        }
                    }
                    response  = response.TrimEnd(',');
                    response += " ],";
                }
                //
                response += "[ ";
                foreach (var entry in hoursAverages[4])
                {
                    var date = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + entry.TimeStart.ToLocalTime().ToString("HH:mm:ss.ffffff"));
                    response += "[" + Utility.DateToJavascript(date).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                response  = response.TrimEnd(',');
                response += " ]";
                //
                response            += "]";
                request.ResponseData = response;
                break;

            case "Parameter.StatsDay":
                domainSeparator = migCommand.GetOption(1).LastIndexOf(":");
                if (domainSeparator > 0)
                {
                    domain  = migCommand.GetOption(1).Substring(0, domainSeparator);
                    address = migCommand.GetOption(1).Substring(domainSeparator + 1);
                }
                //
                response = "[";
                //
                dateStart = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd   = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                var daysAverages = new List <StatisticsEntry> [1];
                daysAverages[0] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "", dateStart, dateEnd);
                response       += "[ ";
                foreach (var entry in daysAverages[0])
                {
                    response += "[" + Utility.DateToJavascriptLocal(entry.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                response  = response.TrimEnd(',');
                response += " ]";
                //
                response            += "]";
                request.ResponseData = response;
                break;

            case "Parameter.StatsMultiple":
                response = "[";
                //
                dateStart = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(2)));
                dateEnd   = Utility.JavascriptToDate(long.Parse(migCommand.GetOption(3)));
                var daysMultiples = new List <StatisticsEntry> [1];
                daysMultiples[0] = homegenie.Statistics.GetHourlyStats(domain, address, migCommand.GetOption(0), "All", dateStart, dateEnd);
                response        += "[ ";
                var moduleName = "";
                foreach (var entry in daysMultiples[0])
                {
                    if (entry.CustomData == "")
                    {
                        entry.CustomData = entry.Domain + ":" + entry.Address;
                    }
                    if (moduleName != entry.CustomData)
                    {
                        if (moduleName != "")
                        {
                            response  = response.TrimEnd(',');
                            response += " ],[ ";
                        }
                        response  += "[\"" + entry.CustomData + "\"] ],[ ";
                        moduleName = entry.CustomData;
                    }
                    response += "[" + Utility.DateToJavascriptLocal(entry.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                }
                response  = response.TrimEnd(',');
                response += " ]";

                /*response += "[ ";
                *  var moduleName = "";
                *  foreach (var entry in daysMultiples[0])
                *  {
                *   if (entry.CustomData == "")
                *       entry.CustomData = entry.Domain + ":" + entry.Address;
                *   if(moduleName != entry.CustomData)
                *   {
                *       if(moduleName != "")
                *       {
                *           response = response.TrimEnd(',');
                *           response += " ] ],[ ";
                *       }
                *       response += "[ \""+entry.CustomData + "\" ],[ ";
                *       moduleName = entry.CustomData;
                *   }
                *   response += "[" + DateToJavascriptLocal(entry.TimeStart).ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "," + entry.Value.ToString("0.000", System.Globalization.CultureInfo.InvariantCulture) + "],";
                *  }
                *  response = response.TrimEnd(',');
                *  response += " ]";
                *  if(moduleName != "")
                *   response += " ]";*/
                //
                response            += "]";
                request.ResponseData = response;
                break;

            case "Parameter.StatRemove":
                var dateText = migCommand.GetOption(0).Replace('.', ',');
                dateStart = Utility.JavascriptToDateUtc(double.Parse(dateText));
                homegenie.Statistics.DeleteData(dateStart, migCommand.GetOption(1));
                request.ResponseData = new ResponseText("OK");
                break;
            }
        }
Пример #17
0
        /// <summary>
        /// Zapisuje w statystykach informacje o requeście klienta i o wysłanym do niego w odpowiedzi obiekcie multimedialnym.
        /// </summary>
        /// <param name="selectionParams">Parametry opisujące request, na podstawie których został wybrany odpowiedni obiekt multimedialny</param>
        /// <param name="multimediaObject">Wybrany obiekt multimedialny (który zostanie zwrócony klientowi jako odpowiedź na jego request)</param>
        /// <param name="statisticsEntry">Wpis statystyk</param>
        public void SaveStatisticsEntry(MultimediaObjectsSelectionParams selectionParams, AdFile multimediaObject, StatisticsEntry statisticsEntry)
        {
            if (selectionParams == null || multimediaObject == null)
            {
                return;
            }

            if (statisticsEntry == null)
            {
                throw new Exception("Nie udało się zapisać do statystyk informacji o requeście, ponieważ nie powiodło się generowanie takiego obiektu.");
            }

            try
            {
                var host      = _repositories.UserRepository.Users.First(it => it.Devices.Any(dev => dev.Id == selectionParams.ID));
                var cmpid     = multimediaObject.CmpId;
                var campUp    = _repositories.CampaignRepository.Campaigns.First(it => it.Id == cmpid);
                var cmpUserId = campUp.UserId;
                var user      = _repositories.UserRepository.Users.First(it => it.Id == cmpUserId);
                if (user.Role.RoleType != "Admin")
                {
                    campUp.AdPoints -= statisticsEntry.Statistics.Clicked ? campUp.ClickValue : campUp.ViewValue;
                    _repositories.CampaignRepository.SaveCampaign(campUp, true);
                }
                host.AdPoints += (statisticsEntry.Statistics.Clicked ? campUp.ClickValue : campUp.ViewValue) * host.Role.Commission * (decimal)0.01;
                _repositories.UserRepository.Save(host);
            }
            catch (Exception)
            {
                throw new Exception("Nie udało się wykonć zmian AdPoints'ów");
            }


            var response = _repositories.StatisticsRepository.Save(statisticsEntry);

            if (response.Accepted)
            {
                return;
            }

            var fullMessage = new List <string>();

            if (response.Errors != null && response.Errors.Count > 0)
            {
                fullMessage.AddRange(response.Errors.Select(e => e.Message));
            }

            var thrownError = "Nie udało się zapisać do statystyk informacji o requeście. Nie można przesłać obiektu multimedialnego.";

            if (fullMessage.Count <= 0)
            {
                throw new Exception(thrownError);
            }
            thrownError += (Environment.NewLine + Environment.NewLine) + string.Join(Environment.NewLine, fullMessage);

            fullMessage.Clear();

            throw new Exception(thrownError);
        }
Пример #18
0
        public void UpdateStatics(StatisticsEntry staticsEntry)
        {
            switch (staticsEntry)
            {
            case StatisticsEntry.MessageSent:
                if (LblMessagSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblMessagSent.Text = ClientStatistics.MessagesSent.ToString();
                    }));
                }
                else
                {
                    LblMessagSent.Text = ClientStatistics.MessagesSent.ToString();
                }
                break;

            case StatisticsEntry.MessageReceied:
                if (LblMessagSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblMessagReceived.Text = ClientStatistics.MessagesReceived.ToString();
                    }));
                }
                else
                {
                    LblMessagReceived.Text = ClientStatistics.MessagesReceived.ToString();
                }
                break;

            case StatisticsEntry.MessagePrivateSent:
                if (LblMessagSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblPrivateMessagSent.Text = ClientStatistics.MessagesPrivateSent.ToString();
                    }));
                }
                else
                {
                    LblPrivateMessagSent.Text = ClientStatistics.MessagesPrivateSent.ToString();
                }
                break;

            case StatisticsEntry.MessagePrivateReceived:
                if (LblMessagSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblPrivateMessagReceived.Text = ClientStatistics.MessagesPrivateReceived.ToString();
                    }));
                }
                else
                {
                    LblPrivateMessagReceived.Text = ClientStatistics.MessagesPrivateReceived.ToString();
                }
                break;

            case StatisticsEntry.ImagesSent:
                if (LblImageSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblImageSent.Text = ClientStatistics.ImagesSent.ToString();
                    }));
                }
                else
                {
                    LblImageSent.Text = ClientStatistics.ImagesSent.ToString();
                }
                break;

            case StatisticsEntry.ImagesReceived:
                if (LblImageReceived.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblImageReceived.Text = ClientStatistics.ImagesReceived.ToString();
                    }));
                }
                else
                {
                    LblImageReceived.Text = ClientStatistics.ImagesReceived.ToString();
                }
                break;

            case StatisticsEntry.ImagesPrivateSent:
                if (LblPrivateImageSent.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblPrivateImageSent.Text = ClientStatistics.ImagesPrivateSent.ToString();
                    }));
                }
                else
                {
                    LblPrivateImageSent.Text = ClientStatistics.ImagesPrivateSent.ToString();
                }
                break;

            case StatisticsEntry.ImagesPrivateReceived:
                if (LblPrivateImageReceived.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblPrivateImageReceived.Text = ClientStatistics.ImagesPrivateReceived.ToString();
                    }));
                }
                else
                {
                    LblPrivateImageReceived.Text = ClientStatistics.ImagesPrivateReceived.ToString();
                }
                break;

            case StatisticsEntry.ServerMessage:
                if (LblServerMessages.InvokeRequired)
                {
                    Invoke(new MethodInvoker(delegate
                    {
                        LblServerMessages.Text = ClientStatistics.ServerMessage.ToString();
                    }));
                }
                else
                {
                    LblServerMessages.Text = ClientStatistics.ServerMessage.ToString();
                }
                break;
            }
            if (LblMessagSent.InvokeRequired)
            {
                Invoke(new MethodInvoker(delegate
                {
                    LblTotalMessagSent.Text     = (ClientStatistics.MessagesSent + ClientStatistics.MessagesPrivateSent).ToString();
                    LblTotalMessagReceived.Text = (ClientStatistics.MessagesReceived + ClientStatistics.MessagesPrivateReceived).ToString();
                    LblTotalImagesSent.Text     = (ClientStatistics.ImagesPrivateSent + ClientStatistics.ImagesSent).ToString();
                    LblTotalImagesReceived.Text = (ClientStatistics.ImagesPrivateReceived + ClientStatistics.ImagesReceived).ToString();
                }));
            }
            else
            {
                LblTotalMessagSent.Text     = (ClientStatistics.MessagesSent + ClientStatistics.MessagesPrivateSent).ToString();
                LblTotalMessagReceived.Text = (ClientStatistics.MessagesReceived + ClientStatistics.MessagesPrivateReceived).ToString();
                LblTotalImagesSent.Text     = (ClientStatistics.ImagesPrivateSent + ClientStatistics.ImagesSent).ToString();
                LblTotalImagesReceived.Text = (ClientStatistics.ImagesPrivateReceived + ClientStatistics.ImagesReceived).ToString();
            }
        }
Пример #19
0
        public void UpdateStatics(StatisticsEntry staticsEntry)
        {
            switch (staticsEntry)
            {
                case StatisticsEntry.MessageSent:
                    if (LblMessagSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblMessagSent.Text = ClientStatistics.MessagesSent.ToString();
                        }));
                    }
                    else
                    {
                        LblMessagSent.Text = ClientStatistics.MessagesSent.ToString();
                    }
                    break;

                case StatisticsEntry.MessageReceied:
                    if (LblMessagSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblMessagReceived.Text = ClientStatistics.MessagesReceived.ToString();
                        }));
                    }
                    else
                    {
                        LblMessagReceived.Text = ClientStatistics.MessagesReceived.ToString();
                    }
                    break;

                case StatisticsEntry.MessagePrivateSent:
                    if (LblMessagSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblPrivateMessagSent.Text = ClientStatistics.MessagesPrivateSent.ToString();
                        }));
                    }
                    else
                    {
                        LblPrivateMessagSent.Text = ClientStatistics.MessagesPrivateSent.ToString();
                    }
                    break;

                case StatisticsEntry.MessagePrivateReceived:
                    if (LblMessagSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblPrivateMessagReceived.Text = ClientStatistics.MessagesPrivateReceived.ToString();
                        }));
                    }
                    else
                    {
                        LblPrivateMessagReceived.Text = ClientStatistics.MessagesPrivateReceived.ToString();
                    }
                    break;

                case StatisticsEntry.ImagesSent:
                    if (LblImageSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblImageSent.Text = ClientStatistics.ImagesSent.ToString();
                        }));
                    }
                    else
                    {
                        LblImageSent.Text = ClientStatistics.ImagesSent.ToString();
                    }
                    break;

                case StatisticsEntry.ImagesReceived:
                    if (LblImageReceived.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblImageReceived.Text = ClientStatistics.ImagesReceived.ToString();
                        }));
                    }
                    else
                    {
                        LblImageReceived.Text = ClientStatistics.ImagesReceived.ToString();
                    }
                    break;

                case StatisticsEntry.ImagesPrivateSent:
                    if (LblPrivateImageSent.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblPrivateImageSent.Text = ClientStatistics.ImagesPrivateSent.ToString();
                        }));
                    }
                    else
                    {
                        LblPrivateImageSent.Text = ClientStatistics.ImagesPrivateSent.ToString();
                    }
                    break;

                case StatisticsEntry.ImagesPrivateReceived:
                    if (LblPrivateImageReceived.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblPrivateImageReceived.Text = ClientStatistics.ImagesPrivateReceived.ToString();
                        }));
                    }
                    else
                    {
                        LblPrivateImageReceived.Text = ClientStatistics.ImagesPrivateReceived.ToString();
                    }
                    break;

                case StatisticsEntry.ServerMessage:
                    if (LblServerMessages.InvokeRequired)
                    {
                        Invoke(new MethodInvoker(delegate
                        {
                            LblServerMessages.Text = ClientStatistics.ServerMessage.ToString();
                        }));
                    }
                    else
                    {
                        LblServerMessages.Text = ClientStatistics.ServerMessage.ToString();
                    }
                    break;
            }
            if (LblMessagSent.InvokeRequired)
            {
                Invoke(new MethodInvoker(delegate
                {
                    LblTotalMessagSent.Text = (ClientStatistics.MessagesSent + ClientStatistics.MessagesPrivateSent).ToString();
                    LblTotalMessagReceived.Text = (ClientStatistics.MessagesReceived + ClientStatistics.MessagesPrivateReceived).ToString();
                    LblTotalImagesSent.Text = (ClientStatistics.ImagesPrivateSent + ClientStatistics.ImagesSent).ToString();
                    LblTotalImagesReceived.Text = (ClientStatistics.ImagesPrivateReceived + ClientStatistics.ImagesReceived).ToString();
                }));
            }
            else
            {
                LblTotalMessagSent.Text = (ClientStatistics.MessagesSent + ClientStatistics.MessagesPrivateSent).ToString();
                LblTotalMessagReceived.Text = (ClientStatistics.MessagesReceived + ClientStatistics.MessagesPrivateReceived).ToString();
                LblTotalImagesSent.Text = (ClientStatistics.ImagesPrivateSent + ClientStatistics.ImagesSent).ToString();
                LblTotalImagesReceived.Text = (ClientStatistics.ImagesPrivateReceived + ClientStatistics.ImagesReceived).ToString();
            }
        }