using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using NHibernate; using NHibernate.Linq; using Sleis.Models; using Sleis.Infrastructure; namespace Sleis.Data { public class UnitProcessData : BaseData, Sleis.Data.IUnitProcessData { public List GetUnitProcesses(int facilityId) { using(ISession session= GetSession()) { var tmp = (from d in session.Query() join r in session.Query() on d.Id equals r.EmissionUnitId where d.FacilityId == facilityId select r); List list = tmp.Distinct().ToList(); return list; } } public UnitProcessModel GetUnitProcess(int id) { using (ISession session = GetSession()) { return (from d in session.Query() where d.Id == id select d).FirstOrDefault(); } } public List GetRelatedUnitProcessIdentifiers(int controlDeviceId) { using (ISession session = GetSession()) { return (from d in session.Query() join e in session.Query() on d.Id equals e.EntityId join f in session.Query() on e.Id equals f.DeviceApproachId join g in session.Query() on d.EmissionUnitId equals g.Id join h in session.Query() on g.FacilityId equals h.Id where f.ControlDevice.DeviceId == controlDeviceId select d.Identifier).Distinct().ToList(); } } public List GetUnitProcessIdentifiers(int emissionUnitId) { return (from d in GetSession().Query() where d.EmissionUnitId == emissionUnitId select d.Identifier).Distinct().ToList(); } public List GetReleasePointUnitProcesses(int reportId, int releasePointId) { /* --RELATED UNIT PROCESSES TO RELEASE POINTS ON REPORT SELECT up.UNIT_PROC_IDEN,rp.REL_PT_IDEN, rp.REL_PT_ID FROM P_UNIT_PROC_REL_PT uprp INNER JOIN P_UNIT_PROC up ON uprp.UNIT_PROC_ID = up.UNIT_PROC_ID INNER JOIN P_REL_PT rp ON uprp.REL_PT_ID = rp.REL_PT_ID INNER JOIN P_EMIS_UNIT eu ON up.EMIS_UNIT_ID = eu.EMIS_UNIT_ID INNER JOIN P_FAC_SITE fs ON (eu.FAC_SITE_ID = fs.FAC_SITE_ID AND rp.FAC_SITE_ID = fs.FAC_SITE_ID) INNER JOIN P_FAC_EMIS_RPT fp ON fs.FAC_EMIS_RPT_ID = fp.FAC_EMIS_RPT_ID INNER JOIN M_AGN_RPT mp ON fp.AGN_RPT_ID = mp.AGN_RPT_ID WHERE mp.AGN_RPT_ID = 200005 --use whatever the m_agn_rpt_id is currently in context and rp.REL_PT_ID = 200009 --use whatever rel_pt_id is currently in context ORDER BY up.UNIT_PROC_IDEN */ using (ISession session = GetSession()) { return (from uprp in session.Query() join up in session.Query() on uprp.UnitProcessId equals up.Id join rp in session.Query() on uprp.ReleasePointId equals rp.Id join eu in session.Query() on up.EmissionUnitId equals eu.Id join f in session.Query() on eu.FacilityId equals f.Id join pr in session.Query() on f.ReportId equals pr.Id join mr in session.Query() on pr.ReportId equals mr.Id where mr.Id == reportId && rp.Id == releasePointId select up).Distinct().ToList(); } } public UnitProcessModel GetByIdentifierAndEmissionUnitIdentifier(string identifier, string emissionUnitIdentifier) { using (ISession session = GetSession()) { ISQLQuery query = session.CreateSQLQuery(@"SELECT up.UNIT_PROC_ID ,up.EMIS_UNIT_ID ,up.IS_ADD_IND ,up.UNIT_PROC_IDEN ,up.E_SRC_CLASS_CD ,up.PROC_DESC ,up.PROC_CMNT FROM P_UNIT_PROC up INNER JOIN P_EMIS_UNIT eu ON up.EMIS_UNIT_ID = eu.EMIS_UNIT_ID INNER JOIN P_FAC_SITE fs ON eu.FAC_SITE_ID = fs.FAC_SITE_ID INNER JOIN P_FAC_EMIS_RPT fer ON fs.FAC_EMIS_RPT_ID = fer.FAC_EMIS_RPT_ID INNER JOIN M_AGN_RPT ar ON fer.AGN_RPT_ID = ar.AGN_RPT_ID INNER JOIN P_RPT_PRD rp ON up.UNIT_PROC_ID = rp.UNIT_PROC_ID WHERE eu.EMIS_UNIT_IDEN = :emissionUnitIdentifier AND up.UNIT_PROC_IDEN = :unitProcessIden"); query.SetString("emissionUnitIdentifier", emissionUnitIdentifier); query.SetString("unitProcessIden", identifier); query.AddEntity(typeof(UnitProcessModel)); return query.UniqueResult(); } } } }