Exemple #1
0
        private SingleSlaTable AddTime_Normal(SingleSlaTable info, TimeSpan ts)
        {
            if (ts.Hours > 8)
            {
                DateTime dt1 = new DateTime(2018, 1, 1, 9, 0, 0);
                DateTime dt2 = new DateTime(2018, 1, 1, 0, 0, 0);
                ts = dt1 - dt2;
            }

            info.sla_time_second += ts.Seconds;
            if (info.sla_time_second > 59)
            {
                info.sla_time_second -= 60;
                info.sla_time_minute += 1;
                if (info.sla_time_minute > 59)
                {
                    info.sla_time_minute -= 60;
                    info.sla_time_hour   += 1;
                }
            }

            info.sla_time_minute += ts.Minutes;
            if (info.sla_time_minute > 59)
            {
                info.sla_time_minute -= 60;
                info.sla_time_hour   += 1;
            }
            info.sla_time_hour += ts.Hours;
            return(info);
        }
Exemple #2
0
        private List <SingleSlaTable> NormalizedSla(List <SlaTable> slaList)
        {
            List <SingleSlaTable> singleSla = new List <SingleSlaTable>();

            for (int i = 0; i < slaList.Count; i++)
            {
                bool flag = false;
                for (int j = 0; j < singleSla.Count; j++)
                {
                    if (slaList[i].id == singleSla[j].id)
                    {
                        flag = true;
                        break;
                    }
                }
                if (!flag)
                {
                    SingleSlaTable temp = new SingleSlaTable();
                    temp.id         = slaList[i].id;
                    temp.project_id = slaList[i].project_id;
                    temp.created_on = slaList[i].created_on;
                    temp.closed_on  = slaList[i].closed_on;
                    temp.rate       = slaList[i].rate;
                    singleSla.Add(temp);
                }
            }
            return(singleSla);
        }
Exemple #3
0
        private SingleSlaTable CalculateSlaTime_Normal(SingleSlaTable sla)
        {
            DateTime temp_date = sla.start_time;

            while (temp_date.Date <= sla.end_time.Date)
            {
                if (temp_date.DayOfWeek.ToString() != "Saturday" && temp_date.DayOfWeek.ToString() != "Sunday")
                {
                    if (temp_date.Date == sla.start_time.Date && temp_date.Hour >= sla.rate.work_start_time.Hour && temp_date.Hour < sla.rate.work_end_time.Hour)   // oluşturulan tarih başlangıç tarihi ise, günlük 9 saat değil, request başlangıç saatinden itibaren günün bitiş saatine kadar hesaplar.
                    {
                        TimeSpan ts;
                        sla.rate.work_end_time = new DateTime(sla.start_time.Year, sla.start_time.Month, sla.start_time.Day, sla.rate.work_end_time.Hour, sla.rate.work_end_time.Minute, sla.rate.work_end_time.Second); // Amaç sadece work_and time'ın date kısmını başlangıç tarihi yapmak.

                        if (sla.end_time < sla.rate.work_end_time)                                                                                                                                                       // bitiş saati mesai saatinden önceyse son zaman olarak bitiş saatini alır.
                        {
                            ts = sla.end_time.TimeOfDay - sla.start_time.TimeOfDay;
                        }
                        else
                        {
                            ts = sla.rate.work_end_time.TimeOfDay - sla.start_time.TimeOfDay;  // sla_time eklenecek saat hesaplaması, elde işlemleri
                        }
                        SingleSlaTable temp = new SingleSlaTable();
                        temp = AddTime_Normal(sla, ts);
                        sla.sla_time_hour   = temp.sla_time_hour;
                        sla.sla_time_minute = temp.sla_time_minute;
                        sla.sla_time_second = temp.sla_time_second;
                    }
                    else if (temp_date.Date == sla.start_time.Date && temp_date.Hour > sla.rate.work_end_time.Hour)
                    {
                        // haftaiçi gün ama mesai saati geçmiş durumudur.
                    }
                    else if (temp_date.Date == sla.end_time.Date)  // request bitiş tarihindeki son günün saatini hesaplar.
                    {
                        if (sla.end_time.Hour >= sla.rate.work_start_time.Hour)
                        {
                            TimeSpan ts = sla.end_time.TimeOfDay - sla.rate.work_start_time.TimeOfDay;

                            SingleSlaTable temp = new SingleSlaTable();
                            temp = AddTime_Normal(sla, ts);
                            sla.sla_time_hour   = temp.sla_time_hour;
                            sla.sla_time_minute = temp.sla_time_minute;
                            sla.sla_time_second = temp.sla_time_second;
                        }
                    }
                    else
                    {
                        sla.sla_time_hour += sla.rate.total_time;
                    }
                }
                temp_date = temp_date.AddDays(1);
            }
            return(sla);
        }
Exemple #4
0
        private SingleSlaTable CalculateSlaTime_Immediate(SingleSlaTable sla)
        {
            TimeSpan ts = new TimeSpan();

            ts = sla.end_time - sla.start_time;

            SingleSlaTable temp = new SingleSlaTable();

            temp = AddTime_Immediate(sla, ts);

            return(sla);
        }
Exemple #5
0
 private SingleSlaTable AddTime_Immediate(SingleSlaTable info, TimeSpan ts)
 {
     info.sla_time_second += ts.Seconds;
     if (info.sla_time_second > 59)
     {
         info.sla_time_second -= 60;
         info.sla_time_minute += 1;
         if (info.sla_time_minute > 59)
         {
             info.sla_time_minute -= 60;
             info.sla_time_hour   += 1;
         }
     }
     info.sla_time_minute += ts.Minutes;
     if (info.sla_time_minute > 59)
     {
         info.sla_time_minute -= 60;
         info.sla_time_hour   += 1;
     }
     info.sla_time_hour += ts.Hours;
     info.sla_time_hour += ts.Days * 24;
     return(info);
 }
Exemple #6
0
        private Slas MainReport(List <SlaTable> slaTable, SingleSlaTable singleSlaTable)
        {
            int slaIdCount = 0;                      // Aynı id'deki ticketların kaç tane olduğunu saklar.

            for (int i = 0; i < slaTable.Count; i++) // slaTable'daki en üstteki aynı id'li veri sayısını bulur.
            {
                if (slaTable[i].id == singleSlaTable.id)
                {
                    slaIdCount++;
                }
                else
                {
                    break;
                }
            }

            singleSlaTable.rate = slaTable[0].rate;
            List <int> slaActiveTime = new List <int> {
                0, 1, 2, 7, 10
            };                                                            // 0-null 1-yeni 2-çalışılıyor 7-efor bekleniyor 10-değişiklik bekleniyor
            bool start_time = false;

            if (slaActiveTime.Contains(slaTable[0].old_value))
            {
                singleSlaTable.start_time = slaTable[0].created_on;
                start_time = true;
            }

            for (int i = 0; i < slaIdCount; i++)
            {
                if (slaActiveTime.Contains(slaTable[i].value) && !start_time)
                {
                    singleSlaTable.start_time = slaTable[i].changed_on;
                    start_time = true;
                }
                else if (!slaActiveTime.Contains(slaTable[i].value) && start_time)
                {
                    singleSlaTable.end_time = slaTable[i].changed_on;

                    if (singleSlaTable.rate.Is_7_24 == 1)
                    {
                        singleSlaTable = CalculateSlaTime_Immediate(singleSlaTable);
                    }
                    else
                    {
                        singleSlaTable = CalculateSlaTime_Normal(singleSlaTable);
                    }

                    start_time = false;
                }
            }

            if (start_time)
            {
                singleSlaTable.end_time = DateTime.Now;

                if (singleSlaTable.rate.Is_7_24 == 1)
                {
                    singleSlaTable = CalculateSlaTime_Immediate(singleSlaTable);
                }
                else
                {
                    singleSlaTable = CalculateSlaTime_Normal(singleSlaTable);
                }
            }

            // success_rate hesaplaması:
            double tempSecond_past       = (singleSlaTable.sla_time_hour * 3600) + (singleSlaTable.sla_time_minute * 60) + singleSlaTable.sla_time_second; // yüzde hesaplama saniye üzerinden yapılması için gerekli dönüşüm yapıldı
            double tempSecond_time_limit = singleSlaTable.rate.time_limit * 3600;                                                                          // yüzde hesaplama saniye üzerinden yapılması için gerekli dönüşüm yapıldı

            singleSlaTable.success_rate = Math.Round((100 * tempSecond_past) / tempSecond_time_limit, 2);

            for (int i = 0; i < slaIdCount; i++)
            {
                slaTable.RemoveAt(0);
            }
            Slas all_of_them = new Slas();

            all_of_them.slaTable       = slaTable;
            all_of_them.singleSlaTable = singleSlaTable;
            return(all_of_them);
        }