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; using NHibernate.Criterion; namespace Sleis.Data { public class ProcessEmissionData : BaseData { public List GetProcessEmissions(int reportId) { using (ISession session = GetSession()) { ISQLQuery query = session.CreateSQLQuery(@"SELECT rp.RPT_PRD_ID ,up.UNIT_PROC_ID ,rp.E_RPT_PRD_TYPE_CD ,rp.E_EMIS_OPER_TYPE_CD ,rp.UNIT_PROC_REPORTED_IND ,rp.UNIT_PROC_CBI_IND ,rp.[START_DATE] ,rp.END_DATE ,rp.E_CALC_PARM_TYPE_CD ,rp.CALC_PARM_VAL ,rp.E_CALC_PARM_UOM_CD ,rp.E_CALC_MTRL_TYPE_CD ,rp.CALC_PARM_JAN_VAL ,rp.CALC_PARM_FEB_VAL ,rp.CALC_PARM_MAR_VAL ,rp.CALC_PARM_APR_VAL ,rp.CALC_PARM_MAY_VAL ,rp.CALC_PARM_JUN_VAL ,rp.CALC_PARM_JUL_VAL ,rp.CALC_PARM_AUG_VAL ,rp.CALC_PARM_SEP_VAL ,rp.CALC_PARM_OCT_VAL ,rp.CALC_PARM_NOV_VAL ,rp.CALC_PARM_DEC_VAL ,rp.ACTL_HOURS_PER_PRD ,rp.AVG_DAYS_PER_WEEK ,rp.AVG_HOURS_PER_DAY ,rp.AVG_WEEKS_PER_PRD ,rp.PCT_WINTER_ACT ,rp.PCT_SPRING_ACT ,rp.PCT_SUMMER_ACT ,rp.PCT_FALL_ACT ,rp.ACTL_OZONE_SEAS_DAYS ,rp.ACTL_CO_SEAS_DAYS ,rp.PCT_ASH_CONT ,rp.PCT_SULFUR_CONT ,rp.HEAT_CONT ,rp.RPT_PRD_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 ar.AGN_RPT_ID = :reportId"); query.SetInt32("reportId", reportId); query.AddEntity(typeof(ProcessEmission)); return query.List().ToList(); //obsolete /*var tmp = (from d in session.Query() where d.Id == reportId join e in session.Query() on d.Id equals e.ReportId join f in session.Query() on e.Id equals f.ReportId join g in session.Query() on e.Id equals g.FacilityId join h in session.Query() on g.Id equals h.EmissionUnitId join i in session.Query() on h.Id equals i.UnitProcessId where g.StatusCode == EmissionUnitCode.OP.ToString() || (g.StatusCode == EmissionUnitCode.TS.ToString() && g.StatusEffectiveDate == null) || (g.StatusCode == EmissionUnitCode.TS.ToString() && g.StatusEffectiveDate != null && g.StatusEffectiveDate.Value.Year == d.Number) || (g.StatusCode == EmissionUnitCode.PS.ToString() && g.StatusEffectiveDate == null) || (g.StatusCode == EmissionUnitCode.PS.ToString() && g.StatusEffectiveDate != null && g.StatusEffectiveDate.Value.Year == d.Number) select new ProcessEmission() { Id = i.Id , UnitProcessId = h.Id , UnitProcess = h , Description = g.Description , ValueUomCode = i.ValueUomCode , ValueTypeCode = i.ValueTypeCode , Value = i.Value , MaterialTypeCode = i.MaterialTypeCode } ); return tmp.ToList() .Distinct() .ToList(); * */ } } public ProcessEmission GetProcessEmission(int reportId, int unitProcessId) { using (ISession session = GetSession()) { ISQLQuery query = session.CreateSQLQuery(@"SELECT rp.RPT_PRD_ID ,up.UNIT_PROC_ID ,rp.E_RPT_PRD_TYPE_CD ,rp.E_EMIS_OPER_TYPE_CD ,rp.UNIT_PROC_REPORTED_IND ,rp.UNIT_PROC_CBI_IND ,rp.[START_DATE] ,rp.END_DATE ,rp.E_CALC_PARM_TYPE_CD ,rp.CALC_PARM_VAL ,rp.E_CALC_PARM_UOM_CD ,rp.E_CALC_MTRL_TYPE_CD ,rp.CALC_PARM_JAN_VAL ,rp.CALC_PARM_FEB_VAL ,rp.CALC_PARM_MAR_VAL ,rp.CALC_PARM_APR_VAL ,rp.CALC_PARM_MAY_VAL ,rp.CALC_PARM_JUN_VAL ,rp.CALC_PARM_JUL_VAL ,rp.CALC_PARM_AUG_VAL ,rp.CALC_PARM_SEP_VAL ,rp.CALC_PARM_OCT_VAL ,rp.CALC_PARM_NOV_VAL ,rp.CALC_PARM_DEC_VAL ,rp.ACTL_HOURS_PER_PRD ,rp.AVG_DAYS_PER_WEEK ,rp.AVG_HOURS_PER_DAY ,rp.AVG_WEEKS_PER_PRD ,rp.PCT_WINTER_ACT ,rp.PCT_SPRING_ACT ,rp.PCT_SUMMER_ACT ,rp.PCT_FALL_ACT ,rp.ACTL_OZONE_SEAS_DAYS ,rp.ACTL_CO_SEAS_DAYS ,rp.PCT_ASH_CONT ,rp.PCT_SULFUR_CONT ,rp.HEAT_CONT ,rp.RPT_PRD_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 ar.AGN_RPT_ID = :reportId AND up.UNIT_PROC_ID = :unitProcessId"); query.SetInt32("reportId", reportId); query.SetInt32("unitProcessId", unitProcessId); query.AddEntity(typeof(ProcessEmission)); return query.UniqueResult(); } } } }