Example #1
0
        public List <SingleSlaTable> getSingleSlaTables(string project_state, int month, int year, string projectList)   // Açık projelerde month ve year parametreleri kullanılmadığı için rastgele int değer verilebilir.
        {
            MySqlCommand dbComm;

            if (project_state == "open")
            {
                dbComm = new MySqlCommand("itsmreporting_operations.slaOpenProject", dbConn);
            }
            else if (project_state == "close")
            {
                dbComm = new MySqlCommand("itsmreporting_operations.slaClosedProjectByDateByProjects", dbConn);
                dbComm.Parameters.AddWithValue("@monthvalue", month);
                dbComm.Parameters.AddWithValue("@yearvalue", year);
                dbComm.Parameters.AddWithValue("@projects_id", projectList);
            }
            else
            {
                List <SingleSlaTable> sst = new List <SingleSlaTable>();
                return(sst);
            }
            dbComm.CommandType = CommandType.StoredProcedure;

            var sla       = slaList(dbComm);
            var singleSla = NormalizedSla(sla);

            singleSla = getSlaRateInfos(singleSla);

            for (int i = 0; i < singleSla.Count; i++)
            {
                Slas temp = new Slas();
                temp         = MainReport(sla, singleSla[i]);
                singleSla[i] = temp.singleSlaTable;
                sla          = temp.slaTable;
            }

            return(singleSla);
        }
Example #2
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);
        }