/////////////////////////////////////////////////////////// // Bool.cs // Implementation of Class GuidFetcher // CSLA type: Read-only object // Created on: 20-May-2010 // Object design: John // Coded: John 20-May-2010 /////////////////////////////////////////////////////////// using System; using System.Data; using CSLA.Data; using GZTW.Data; using CSLA; using System.Threading; using CSLA.Security; namespace GZTW.AyaNova.BLL { /// /// Used to quickly fetch a single Guid record from the db /// [Serializable] public class GuidFetcher : ReadOnlyBase { #pragma warning disable 1591 #region Attributes private Guid mGuidValue; #endregion #region Constructor /// /// Private constructor to prevent direct instantiation /// private GuidFetcher() { } #endregion #region Business properties public Guid GuidValue { get { return mGuidValue; } } #endregion #region System.Object overrides public override string ToString() { return mGuidValue.ToString(); } /// /// public override bool Equals(Object obj) { if (obj == null || GetType() != obj.GetType()) return false; GuidFetcher c = (GuidFetcher)obj; return mGuidValue == c.mGuidValue; } public override int GetHashCode() { return ("Guid" + mGuidValue.ToString()).GetHashCode(); } #endregion #region Static methods /// /// Fetch Guid based on unique text value /// e.g. a Client's Name or a Unit's unique Serial number /// (Table's ID column is assumed to be AID when calling this method) /// /// /// /// /// public static Guid GetItem(string Table, string UniqueTextFieldName, string sUniqueTextValue) { return ((GuidFetcher)DataPortal.Fetch(new Criteria(Table, UniqueTextFieldName, sUniqueTextValue))).GuidValue; } #endregion #region DAL DATA ACCESS protected override void DataPortal_Fetch(object Criteria) { Criteria crit = (Criteria)Criteria; try { if (string.IsNullOrEmpty(crit.UniqueTextValue)) { mGuidValue = Guid.Empty; return; } DBCommandWrapper dbCommandWrapper = DBUtil.DB.GetSqlStringCommandWrapper( "SELECT aID FROM " + AyaBizUtils.ToDBName(crit.Table) + " WHERE " + "(" + AyaBizUtils.ToDBName(crit.FieldName) + " = @ANAME)" ); dbCommandWrapper.AddInParameter("@ANAME", DbType.String, crit.UniqueTextValue); mGuidValue = DBUtil.ToGuid(DBUtil.DB.ExecuteScalar(dbCommandWrapper)); } catch (Exception ex) { throw new System.ArgumentException( string.Format(LocalizedTextTable.GetLocalizedTextDirect("Error.Object.NameFetcherNotFound")/*Name/bool Fetcher: Field {0} in table {1} with record ID {2} not found!*/, crit.FieldName, crit.Table, crit.UniqueTextValue) + "\r\n(" + ex.Message + ")"); } } #endregion #region criteria /// /// Criteria for identifying existing object /// [Serializable] private class Criteria { public string Table; public string FieldName; public string UniqueTextValue; public Criteria(string _Table, string _FieldName, string _UniqueTextValue) { if (_Table == "User") _Table = "aUser"; Table = _Table; FieldName = _FieldName; UniqueTextValue = _UniqueTextValue; } } #endregion #pragma warning restore 1591 }//end Bool }//end Boolspace GZTW.AyaNova.BLL