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