Пример #1
0
            private static StatusItem GetStatusItem(ItemInterval <double> interval, string name)
            {
                interval.Calculate();
                var item = new StatusItem {
                    Name = name
                };

                item.Values.Add("Calls", interval.CallsQuantity, true);
                item.Values.Add("Value",
                                new StatusItemValueItem("Lowest", interval.LowestValue.Value, StatusItemValueStatus.Ok, true),
                                new StatusItemValueItem("Lowest Date", interval.LowestValue.ValueDate),
                                new StatusItemValueItem("Highest", interval.HighestValue.Value, StatusItemValueStatus.Ok, true),
                                new StatusItemValueItem("Highest Date", interval.HighestValue.ValueDate),
                                new StatusItemValueItem("Average", interval.AverageValue, true),
                                new StatusItemValueItem("Standard Deviation", interval.StandardDeviation, true)
                                );
                foreach (var percentile in interval.Percentiles)
                {
                    item.Values.Add($"Percentile {percentile.Percentil * 100}%",
                                    new StatusItemValueItem("Calls", percentile.Calls),
                                    new StatusItemValueItem("Call Diff", percentile.CallDiff),
                                    new StatusItemValueItem("Min", percentile.Min),
                                    new StatusItemValueItem("Max", percentile.Max)
                                    );
                }
                return(item);
            }
Пример #2
0
        public static string ParseDataTableToJsonAndWriteToFile(DataTable dataTable)
        {
            string resultFile = string.Empty;

            Dictionary <long, ItemDoctor> doctorList = new Dictionary <long, ItemDoctor>();

            if (dataTable == null)
            {
                return(resultFile);
            }

            try {
                foreach (DataRow row in dataTable.Rows)
                {
                    long   dcode = (long)row["dcode"];
                    string date  = ((DateTime)row["date"]).ToShortDateString();

                    if (!doctorList.ContainsKey(dcode))
                    {
                        doctorList.Add(dcode, new ItemDoctor {
                            DCode = dcode
                        });
                    }

                    if (!doctorList[dcode].DaysCheck.ContainsKey(date))
                    {
                        doctorList[dcode].DaysCheck.Add(date, new Dictionary <string, ItemInterval>());
                    }

                    if (row["start"] == null || string.IsNullOrEmpty(row["start"].ToString()) ||
                        row["end"] == null || string.IsNullOrEmpty(row["end"].ToString()) ||
                        row["status"] == null || string.IsNullOrEmpty(row["status"].ToString()))
                    {
                        continue;
                    }

                    TimeSpan start        = (TimeSpan)row["start"];
                    TimeSpan end          = (TimeSpan)row["end"];
                    string   startTime    = start.ToString("hh\\:mm");
                    string   endTime      = end.ToString("hh\\:mm");
                    string   status       = (string)row["status"];
                    int      statusResult = status.Equals("Свободное время") || status.Equals("Резерв с возможностью записи") ? 1 : 2;

                    ItemInterval interval = new ItemInterval {
                        TStart = startTime,
                        TEnd   = endTime,
                        Status = statusResult
                    };

                    string intervalKey = startTime + "-" + endTime;

                    if (!doctorList[dcode].DaysCheck[date].ContainsKey(intervalKey))
                    {
                        doctorList[dcode].DaysCheck[date].Add(intervalKey, interval);
                    }
                    else
                    {
                        if (doctorList[dcode].DaysCheck[date][intervalKey].Status == 1)
                        {
                            if (interval.Status == 1)
                            {
                                doctorList[dcode].DaysCheck[date][intervalKey] = interval;
                            }
                        }
                    }
                }
            } catch (Exception e) {
                Logging.ToLog(e.Message + Environment.NewLine + e.StackTrace);
            }

            foreach (ItemDoctor doc in doctorList.Values)
            {
                foreach (string date in doc.DaysCheck.Keys)
                {
                    doctorList[doc.DCode].Days.Add(date, doc.DaysCheck[date].Values.ToList());
                }
            }

            string json = JsonConvert.SerializeObject(doctorList.Values);

            resultFile = ExcelGeneral.GetResultFilePath("FreeCellsToSiteJSON", isPlainText: true).Replace(".txt", ".json");
            try {
                File.WriteAllText(resultFile, json);
            } catch (Exception e) {
                Logging.ToLog(e.Message + Environment.NewLine + e.StackTrace);
            }

            return(resultFile);
        }