using System; using System.Configuration; using System.Collections; using System.Data; using System.Data.OracleClient; namespace sst.classes { /// /// Liste de sociétés. /// public class companyList { public struct companyItem { public string compName, repName, compActivity; public decimal note, notePrev, indiceYear, lostWorkday, severityRate; } protected ArrayList _items; /// /// Constructeur /// public companyList() { _items = new ArrayList(); } /// /// Indexeur /// public companyItem this [int index] { get { return (companyItem)_items[index]; } } /// /// Accesseur /// public int count { get { return _items.Count; } } /// /// Charge toutes les sociétés externes /// /// Chargement des activités correspondantes /// Nombre de sociétés / -1 si erreur public int loadExt(bool withInfos) { OracleConnection cn = new OracleConnection(ConfigurationSettings.AppSettings["CS_SST"]); OracleCommand cm = new OracleCommand("", cn); OracleDataReader dr = null; int iRet = 0; companyItem ci; _items.Clear(); try { if (withInfos) cm.CommandText = "SELECT SST_SSOCEXT, SST_DERNIERREPR, SST_SACTSOCEXT, TRUNC(NOTE), TRUNC(NOTE_PREV), SST_NINDSEC, SST_NTXFREQACC, SST_NTXGRAV FROM SST_V_SOCEXT WHERE SST_NSITE = " + user.siteID + " ORDER BY SST_SSOCEXT"; else cm.CommandText = "SELECT DISTINCT SST_SSOCEXT FROM SST_PLANPREV WHERE SST_NSITE = " + user.siteID + " ORDER BY SST_SSOCEXT"; cn.Open(); dr = cm.ExecuteReader(); while (dr.Read()) { if (!dr.IsDBNull(0)) { ci = new companyItem(); ci.compName = dr.GetString(0); if (withInfos) { ci.repName = dr.IsDBNull(1) ? "" : dr.GetString(1); ci.compActivity = dr.IsDBNull(2) ? "" : dr.GetString(2); ci.note = dr.IsDBNull(3) ? 0 : dr.GetOracleNumber(3).Value; ci.notePrev = dr.IsDBNull(4) ? 0 : dr.GetOracleNumber(4).Value; ci.indiceYear = dr.IsDBNull(5) ? 0 : dr.GetOracleNumber(5).Value; ci.lostWorkday = dr.IsDBNull(6) ? 0 : dr.GetOracleNumber(6).Value; ci.severityRate = dr.IsDBNull(7) ? 0 : dr.GetOracleNumber(7).Value; } _items.Add(ci); } } iRet = _items.Count; } catch //(Exception err) { iRet = -1; } finally { if (dr != null) if (!dr.IsClosed) dr.Close(); if (cn.State == ConnectionState.Open) cn.Close(); } return iRet; } /// /// Charge les activités des sociétés externes /// /// Nombre d'activités / -1 si erreur public int loadActivities() { OracleConnection cn = new OracleConnection(ConfigurationSettings.AppSettings["CS_SST"]); OracleCommand cm = new OracleCommand("", cn); OracleDataReader dr = null; int iRet = 0; companyItem ci; _items.Clear(); try { cm.CommandText = "SELECT DISTINCT SST_SACTSOCEXT FROM SST_PLANPREV WHERE SST_NSITE = " + user.siteID + " ORDER BY SST_SACTSOCEXT"; cn.Open(); dr = cm.ExecuteReader(); while (dr.Read()) { if (!dr.IsDBNull(0)) { ci = new companyItem(); ci.compActivity = dr.GetString(0); _items.Add(ci); } } iRet = _items.Count; } catch { iRet = -1; } finally { if (dr != null) if (!dr.IsClosed) dr.Close(); if (cn.State == ConnectionState.Open) cn.Close(); } return iRet; } /// /// Recherche des sociétés par leur activité /// /// Activité /// Nombre de sociétés / -1 si erreur public int searchByAct(string sAct) { OracleConnection cn = new OracleConnection(ConfigurationSettings.AppSettings["CS_SST"]); OracleCommand cm = new OracleCommand("", cn); OracleDataReader dr = null; int iRet = 0; companyItem ci; _items.Clear(); try { cm.CommandText = "SELECT SST_SSOCEXT, SST_SACTSOCEXT, NOTE, NOTE_PREV FROM SST_V_SOCEXTNOTE WHERE SST_SACTSOCEXT='" + sAct + "' AND SST_NSITE = " + user.siteID + " ORDER BY NOTE DESC"; cn.Open(); dr = cm.ExecuteReader(); while (dr.Read()) { if (!dr.IsDBNull(0)) { ci = new companyItem(); ci.compName = dr.GetString(0); ci.compActivity = dr.IsDBNull(1) ? "" : dr.GetString(1); ci.note = dr.IsDBNull(2) ? 0 : dr.GetOracleNumber(2).Value; ci.notePrev = dr.IsDBNull(3) ? 0 : dr.GetOracleNumber(3).Value; _items.Add(ci); } } iRet = _items.Count; } catch { iRet = -1; } finally { if (dr != null) if (!dr.IsClosed) dr.Close(); if (cn.State == ConnectionState.Open) cn.Close(); } return iRet; } } }