using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sleis.Models; using NHibernate; using NHibernate.Linq; using Spring.Data.Common; using System.Data; namespace Sleis.Data { public class AgencyReleasePointData : ReleasePointData, IReleasePointData { public ReleasePoint GetReleasePoint(int id) { return GetSession().Query().SingleOrDefault(r => r.Id == id); } public List GetReleasePointsByFacility(int facilityId) { using (ISession session = GetSession()) { return session.Query().Where(r=>r.FacilityId==facilityId).ToList(); } } /// /// Will fetch Release Points based on AgencyReport Id. /// /// Agency Report Id /// public List GetReleasePointsByReport(int agencyReportId) { using (ISession session = GetSession()) { return (from rp in GetSession().Query() join f in GetSession().Query() on rp.FacilityId equals f.Id where f.ReportId == agencyReportId select rp).Distinct().ToList(); } } public List GetReleasePointsByUnitProcess(int unitProcessId) { using (ISession session = GetSession()) { return (from uprp in session.Query() join rp in session.Query() on uprp.ReleasePointId equals rp.Id where uprp.UnitProcessId == unitProcessId select rp).Distinct().ToList(); } } public List GetReleasePointsByEmissionUnit(int emissionUnitId) { using (ISession session = GetSession()) { return (from uprp in session.Query() join rp in session.Query() on uprp.ReleasePointId equals rp.Id join up in session.Query() on uprp.UnitProcessId equals up.Id where up.EmissionUnitId == emissionUnitId select rp).Distinct().ToList(); } } public bool CanDelete(int id) { string query = @"SELECT COUNT(*) FROM M_REL_PT WHERE REL_PT_ID IN (SELECT REL_PT_ID FROM P_REL_PT WHERE MSTR_REL_PT_ID = {0}) OR REL_PT_ID IN (SELECT REL_PT_ID FROM M_REL_PT WHERE MSTR_REL_PT_ID = {0})"; query = String.Format(query, CreateParameterName("release_point_id")); IDbParameters args = AdoTemplate.CreateDbParameters(); args.Add("release_point_id", DbType.Int32).Value = id; return Convert.ToInt32(AdoTemplate.ExecuteScalar(CommandType.Text, query, args)) == 0; } public bool IsIdentifierUnique(ReleasePoint releasePoint) { using (ISession session = GetSession()) { return (from rp in session.Query() where rp.Identifier == releasePoint.Identifier && rp.Id != releasePoint.Id && rp.FacilityId == releasePoint.FacilityId select rp).Count() == 0; } } } }