using System; using System.Collections.Generic; using System.Linq; using System.Web; using Sleis.Models; using NHibernate; using Sleis.Utility; using NHibernate.Transform; using System.Collections; namespace Sleis.Data { public class SimpleLookupItemData : BaseData //TODO: base is hack to inherit session for free :) { public Dictionary Queries { get; set; } public List GetByCustomQuery(string queryName, string searchTerm, int facilityId = 0, int reportId=0) { try { using (ISession session = GetSession()) { var sql = GetQuery(queryName); ISQLQuery query = session.CreateSQLQuery(sql); query.SetParameter("term", String.Format("{0}", searchTerm)); if (facilityId !=0 && sql.Contains(":facilityId")) { query.SetParameter("facilityId",facilityId ); } if (reportId !=0) { query.SetParameter("reportId", reportId); } query.AddEntity(typeof(SimpleLookupItem)); return query.List().ToList(); } } catch (Exception ex) { Log.Error(ex); throw ex; } } public List GetByCustomQueryForScc(string queryName, string levelOne, string levelTwo, string levelThree, int year) { try { using (ISession session = GetSession()) { var sql = Queries[queryName]; ISQLQuery query = session.CreateSQLQuery(sql); if (!String.IsNullOrEmpty(levelOne)) { query.SetParameter("levelOne", levelOne); } if (!String.IsNullOrEmpty(levelTwo)) { query.SetParameter("levelTwo", levelTwo); } if (!String.IsNullOrEmpty(levelThree)) { query.SetParameter("levelThree", levelThree); } query.SetParameter("year", year); //query.AddEntity(typeof(SimpleLookupItem)); query.SetResultTransformer(new SimpleLookupItemNonInventoryYearTransformer()); return query.List().ToList(); } } catch (Exception ex) { Log.Error(ex); throw ex; } } private string GetQuery(string name) { //get oracle specific query if it exists if (DbProviderType == DbProviderType.Oracle) { string key = String.Format("oracle_{0}", name); if (Queries.ContainsKey(key)) { return Queries[key]; } } //default query return Queries[name]; } } public class SimpleLookupItemNonInventoryYearTransformer : IResultTransformer { public SimpleLookupItemNonInventoryYearTransformer() { } #region IResultTransformer Members public IList TransformList(IList collection) { return collection; } public object TransformTuple(object[] tuple, string[] aliases) { return new SimpleLookupItem { Code = (string)tuple[0], Value = (string)tuple[1], }; } #endregion } }