/////////////////////////////////////////////////////////// // UserCertificationAssigned.cs // Implementation of Class UserCertificationAssigned // CSLA type: Editable Child // Created on: 07-Jun-2004 8:41:41 AM // Object design: Joyce // Coded: John 20-July-2004 /////////////////////////////////////////////////////////// using System; using System.Data; using CSLA.Data; using GZTW.Data; using CSLA; using System.Threading; using CSLA.Security; namespace GZTW.AyaNova.BLL { /// /// A assigned to a specific /// [Serializable] public class UserCertificationAssigned : BusinessBase { #region Attributes private bool bReadOnly; //Used only for keyword indexing //and assigned docs collection //primary key is user and certification ID combo private Guid mID; private Guid mCreator; private Guid mModifier; private SmartDate mCreated; private SmartDate mModified; private Guid mUserCertificationID; private Guid mUserID; private SmartDate mValidStartDate; private SmartDate mValidStopDate; #endregion #region Constructor private UserCertificationAssigned() { //Set to read / write initially so that properties //can be set bReadOnly=false; //New ID - For assigned Docs list only mID = Guid.NewGuid(); //Child object MarkAsChild(); mValidStartDate=new SmartDate(); mValidStopDate=new SmartDate(); //Set record history to defaults mCreated = new SmartDate(DBUtil.CurrentWorkingDateTime); mModified=new SmartDate(); mCreator=Guid.Empty; mModifier=Guid.Empty; } #endregion #region BusinessProperties //---Common properties /// /// Initial created date of this object /// public string Created { get { return mCreated.ToString(); } } /// /// User ID of who initially created this object /// public Guid Creator { get { return mCreator; } } /// /// Last modified date of this object /// public string Modified { get { return mModified.ToString(); } } /// /// User ID of who last modified this object /// public Guid Modifier { get { return mModifier; } } /// /// Unique ID of this object /// public Guid ID { get { return mID; } } //---UserCertificationAssigned specific properties /// /// Certification ID /// public Guid UserCertificationID { get { return mUserCertificationID; } set { if(bReadOnly) ThrowSetError(); else { if(mUserCertificationID!=value) { mUserCertificationID = value; MarkDirty(); } } } } /// /// User ID /// public Guid UserID { get { return mUserID; } set { if(bReadOnly) ThrowSetError(); else { if(mUserID!=value) { mUserID = value; MarkDirty(); } } } } /// /// Date certificate or training validation begins /// public object ValidStartDate { get { return mValidStartDate.DBValue; } set { if(bReadOnly) ThrowSetError(); else { if (!AyaBizUtils.SmartDateEquals(mValidStartDate, value)) //Case 298 { mValidStartDate.DBValue = value; MarkDirty(); } } } } /// /// Date certificate or training is valid until /// public object ValidStopDate { get { return mValidStopDate.DBValue; } set { if(bReadOnly) ThrowSetError(); else { if (!AyaBizUtils.SmartDateEquals(mValidStopDate, value)) //Case 298 { mValidStopDate.DBValue = value; MarkDirty(); } } } } // /// // /// Documents assigned to this object // /// // public AssignedDocs Docs // { // get // { // return mDocs; // } // // } /// /// Throw an error when a read only user /// tries to set a property /// (this should normally never be called unless someone is using the developer api since the UI /// should prevent it from happening initially) /// private void ThrowSetError() { throw new System.Security.SecurityException ( string.Format ( LocalizedTextTable.GetLocalizedTextDirect("Error.Security.NotAuthorizedToChange"), LocalizedTextTable.GetLocalizedTextDirect("O.UserCertificationAssigned") ) ); } #endregion #region System.object overrides /// /// /// /// public override string ToString() { return "UserCertificationAssigned" + mUserCertificationID.ToString()+mUserID.ToString(); } /// /// /// /// /// public override bool Equals(Object obj) { if ( obj == null || GetType ( ) != obj.GetType ( ) ) return false; UserCertificationAssigned c=(UserCertificationAssigned)obj; return ( (mUserCertificationID==c.UserCertificationID) && (mUserID==c.UserID) ); } /// /// /// /// public override int GetHashCode() { return ("UserCertificationAssigned" + mUserCertificationID.ToString() + mUserID.ToString()).GetHashCode(); } #endregion #region Static methods /// /// NewItem /// /// /// internal static UserCertificationAssigned NewItem(User obj) { if(AyaBizUtils.Right("Object.UserCertificationAssigned")>(int)SecurityLevelTypes.ReadOnly) { UserCertificationAssigned child=new UserCertificationAssigned(); child.UserCertificationID=Guid.Empty; child.UserID=obj.ID; return child; } else throw new System.Security.SecurityException( string.Format( LocalizedTextTable.GetLocalizedTextDirect("Error.Security.NotAuthorizedToCreate"), LocalizedTextTable.GetLocalizedTextDirect("O.UserCertificationAssigned"))); } /// /// Retrieve item /// /// Data reader /// item from database internal static UserCertificationAssigned GetItem(SafeDataReader dr) { //case 1186 //if(AyaBizUtils.Right("Object.UserCertificationAssigned")>(int)SecurityLevelTypes.NoAccess) //{ UserCertificationAssigned child = new UserCertificationAssigned(); child.Fetch(dr); return child; //} //else // throw new System.Security.SecurityException( // string.Format( // LocalizedTextTable.GetLocalizedTextDirect("Error.Security.NotAuthorizedToRetrieve"), // LocalizedTextTable.GetLocalizedTextDirect("O.UserCertificationAssigned"))); } #endregion #region DAL Data Access /// /// Fetch from db /// /// private void Fetch(SafeDataReader dr) { //Standard items mCreated=DBUtil.ToLocal(dr.GetSmartDate("aCreated")); mCreator=dr.GetGuid("aCreator"); mModified=DBUtil.ToLocal(dr.GetSmartDate("aModified")); mModifier=dr.GetGuid("aModifier"); //UserCertificationAssigned specific parameters mUserCertificationID=dr.GetGuid("aUserCertificationID"); mUserID=dr.GetGuid("aUserID"); mValidStartDate=DBUtil.ToLocal(dr.GetSmartDate("aValidStartDate")); mValidStopDate=DBUtil.ToLocal(dr.GetSmartDate("aValidStopDate")); //required for assigned docs and //keyword indexing mID=dr.GetGuid("aID"); //Retrieve read only assigned docs list object //mDocs=AssignedDocs.GetList(mID,RootObjectTypes.UserCertificationAssigned); //Get access rights level bReadOnly=AyaBizUtils.Right("Object.UserCertificationAssigned")<(int)SecurityLevelTypes.ReadWrite; MarkOld(); } /// /// Update /// /// /// internal void Update(User obj,IDbTransaction tr) { //No need to update if there is nothing changed if(!this.IsDirty) return; // If not a new record, check if record was modified //by another user since original retrieval: if(!IsNew) DBUtil.CheckSafeToUpdate(this.mModified.Date,this.mID,"aUserCertificationAssigned"); #region Delete if(IsDeleted) { if(!IsNew) { DBCommandWrapper cmDelete = DBUtil.GetCommandFromSQL("DELETE FROM aUserCertificationAssigned WHERE aID = @ID;"); cmDelete.AddInParameter("@ID",DbType.Guid,this.mID); DBUtil.DB.ExecuteNonQuery(cmDelete, tr); } MarkNew(); return; } #endregion #region Add / Update //get modification time temporarily, if update succeeds then //set to this time System.DateTime dtModified = DBUtil.CurrentWorkingDateTime; DBCommandWrapper cm = null; if(IsNew)//Add or update? cm=DBUtil.GetCommandFromSQL( "INSERT INTO aUserCertificationAssigned (aUserID, aUserCertificationID, aID, aValidStartDate, aValidStopDate, aCreated, aModified, aCreator,aModifier) " + "VALUES (@UserID,@UserCertificationID,@ID,@ValidStartDate,@ValidStopDate,@Created, @Modified, @CurrentUserID,@CurrentUserID)" ); else cm=DBUtil.GetCommandFromSQL( "UPDATE aUserCertificationAssigned SET aUserID=@UserID, " + "aUserCertificationID=@UserCertificationID, aID=@ID, " + "aValidStartDate=@ValidStartDate, aValidStopDate=@ValidStopDate, " + "aModifier=@CurrentUserID, " + "aModified=@Modified WHERE aID=@ID" ); cm.AddInParameter("@ID",DbType.Guid, mID); cm.AddInParameter("@UserID",DbType.Guid, mUserID); cm.AddInParameter("@UserCertificationID",DbType.Guid, this.mUserCertificationID); cm.AddInParameter("@ValidStartDate",DbType.DateTime, DBUtil.ToUTC(mValidStartDate).DBValue); cm.AddInParameter("@ValidStopDate",DbType.DateTime, DBUtil.ToUTC(mValidStopDate).DBValue); cm.AddInParameter("@CurrentUserID",DbType.Guid, CurrentUserID); cm.AddInParameter("@Created",DbType.DateTime, DBUtil.ToUTC(mCreated).DBValue); cm.AddInParameter("@Modified",DbType.DateTime, DBUtil.ToUTC(dtModified)); DBUtil.DB.ExecuteNonQuery(cm, tr); MarkOld();//db is now synched with object //Successful update so //change modification time to match this.mModified.Date=dtModified; #endregion } #endregion }//end UserCertificationAssigned }//end namespace GZTW.AyaNova.BLL