using System.Data; using System.Numerics; using System.Runtime.Intrinsics.Arm; using System.Text.RegularExpressions; using Microsoft.Data.SqlClient; using ReportingServices.Models.PlanningReport; using ReportingServices.ReportingObjects; namespace ReportingServices.HelperClasses { public class DBCaller { private SqlConnection _connection; public void OpenConnection() { if (_connection == null || _connection.State == ConnectionState.Closed) { _connection = new SqlConnection("Server=Messv01ec.ec.local\\PROD1,53959;Database=LSL2SQL;User Id=srpadmin;Password=0okm9ijn;TrustServerCertificate=true"); _connection.Open(); } } public void CloseConnection() { if (_connection.State != ConnectionState.Closed) _connection.Close(); } public List GetScrap(List outs) { List scrap = new(); string rdsNumbers = ""; foreach (ReactorOutsByRDS rout in outs) rdsNumbers = rdsNumbers + "'" + rout.RDS_NO + "', "; rdsNumbers = rdsNumbers.Substring(0, rdsNumbers.Length - 2); OpenConnection(); SqlCommand cmd = _connection.CreateCommand(); try { string query = "SELECT " + " DATE_OUT," + " SUM(CUST_TOT_REJ) AS TOT_REJ_CUST," + " SUM(LSL_TOT_REJ) AS TOT_REJ_MANU," + " SUM(TW_PROD) AS TW_PROD " + "FROM RDS " + "WHERE SEQ IN (" + rdsNumbers + ") " + "GROUP BY DATE_OUT " + "ORDER BY 1 DESC"; cmd.CommandText = query; using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read() && reader[0].ToString() != "1/1/1900 12:00:00 AM") scrap.Add(new ScrapByDay(reader[0].ToString(), reader[3].ToString(), reader[1].ToString(), reader[2].ToString())); } } catch (Exception ex) { } cmd.Dispose(); CloseConnection(); return scrap; } public List GetWeeklyPartChanges(string startDate, string endDate) { List weeklyPartChanges = new(); OpenConnection(); SqlCommand cmd = _connection.CreateCommand(); string query = "SELECT REACTOR, PROD_SPEC_ID, COUNT(WO) FROM RDS " + "WHERE DATE_OUT BETWEEN @startDate AND @endDate " + "GROUP BY REACTOR, PROD_SPEC_ID " + "ORDER BY 1"; cmd.CommandText = query; cmd.Parameters.AddWithValue("@startDate", startDate); cmd.Parameters.AddWithValue("@endDate", endDate); using (SqlDataReader reader = cmd.ExecuteReader()) { while (reader.Read()) weeklyPartChanges.Add(new WeeklyPartChanges(reader[0].ToString(), reader[1].ToString(), int.Parse(reader[2].ToString()))); } cmd.Dispose(); CloseConnection(); return weeklyPartChanges; } public int GetNumberOfPartChanges(string startDate, string endDate) { int result = 0; OpenConnection(); SqlCommand cmd = _connection.CreateCommand(); string query = "SELECT COUNT(*) FROM " + "(SELECT REACTOR, COUNT(PROD_SPEC_ID) - 1 AS PCHANGE FROM " + "(SELECT REACTOR, PROD_SPEC_ID, COUNT(WO) AS PSN_COUNT FROM RDS WHERE DATE_OUT BETWEEN @startDate AND @endDate GROUP BY REACTOR, PROD_SPEC_ID) AS t " + "GROUP BY REACTOR) AS l WHERE PCHANGE > 0"; cmd.CommandText = query; cmd.Parameters.AddWithValue("@startDate", startDate); cmd.Parameters.AddWithValue("@endDate", endDate); using (SqlDataReader reader = cmd.ExecuteReader()) { reader.Read(); result = int.Parse(reader[0].ToString()); } cmd.Dispose(); CloseConnection(); return result; } } }