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); }
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); }