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 Spring.Data.Common; using System.Data; namespace Sleis.Data { public class AgencyEmissionUnitData : BaseData, IEmissionUnitData { /* public List GetEmissionUnits(int facilityId) { return (from d in GetSession().Query() where d.FacilityId == facilityId select d).ToList(); } */ public List GetEmissionUnitsByFacility(int facilityId) { using (ISession session = GetSession()) { return (from d in session.Query() where d.FacilityId == facilityId select d).ToList(); } } public List GetEmissionUnitsByReport(int reportId) { using (ISession session = GetSession()) { return (from d in session.Query() join g in session.Query() on d.FacilityId equals g.Id where g.ReportId == reportId select d).ToList(); } } public List GetEmissionUnitIdentifiers(int controlDeviceId, int reportId) { using(ISession session =GetSession ()) { return (from d in session.Query() join e in session.Query() on d.Id equals e.EmissionUnitId join f in session.Query() on e.Id equals f.ControlApproachId join g in session.Query() on d.FacilityId equals g.Id where f.ControlDeviceId == controlDeviceId select d.Identifier).Distinct().ToList(); } } public List GetEmissionUnitsByControlDevice(int controlDeviceId) { using (ISession session = GetSession()) { return (from d in session.Query() join e in session.Query() on d.Id equals e.EmissionUnitId join f in session.Query() on e.Id equals f.ControlApproachId join g in session.Query() on d.FacilityId equals g.Id where f.ControlDeviceId == controlDeviceId select d).Distinct().ToList(); } } public bool CanDelete(int id) { string query = @"SELECT COUNT(*) FROM M_EMIS_UNIT WHERE EMIS_UNIT_ID IN (SELECT EMIS_UNIT_ID FROM P_EMIS_UNIT WHERE MSTR_EMIS_UNIT_ID = {0}) OR EMIS_UNIT_ID IN (SELECT EMIS_UNIT_ID FROM M_EMIS_UNIT WHERE MSTR_EMIS_UNIT_ID = {0})"; query = String.Format(query, CreateParameterName("emission_unit_id")); IDbParameters args = AdoTemplate.CreateDbParameters(); args.Add("emission_unit_id", DbType.Int32).Value = id; return Convert.ToInt32(AdoTemplate.ExecuteScalar(CommandType.Text, query, args)) == 0; } public bool IsIdentifierUnique(EmissionUnit emissionUnit) { using (ISession session = GetSession()) { return (from eu in session.Query() where eu.Identifier == emissionUnit.Identifier && eu.Id != emissionUnit.Id && eu.FacilityId == emissionUnit.FacilityId select eu).Count() == 0; } } /* public EmissionUnit GetEmissionUnit(int emissionUnitId) { return (from d in GetSession().Query() where d.Id == emissionUnitId select d).FirstOrDefault().As(); } */ } }