Ejemplo n.º 1
0
        /// <summary>
        /// Delete any auditing entries from AuditObjects collection.
        /// WARNING:  Source item MUST exist in order to delete from auditing using this method.
        /// To delete auditing history for a non-existant object, us the DeleteFromAuditing(DocumentAuditEnum, ID) overload.
        /// </summary>
        /// <param name="auditType"></param>
        /// <param name="criteria"></param>
        public void DeleteFromAuditing(DocumentAuditEnum auditType, Expression <Func <T, bool> > criteria)
        {
            string colName = MongoUtil.GetCollectioNameFromInterface <T>();

            if (colName == "AuditObjects")
            {
                throw new Exception(
                          "RepositoryMongo.DeleteFromAuditing cannot be used for audit objects themselves.  To delete an AuditOjbect, use the Delete method");
            }

            var audit = typeof(T).GetCustomAttributes(typeof(DocumentAuditAttr), false).SingleOrDefault();

            if (audit != null)
            {
                var sourceObjects = All(criteria);

                if (((audit as DocumentAuditAttr).AuditEnum & DocumentAuditEnum.Edit) == DocumentAuditEnum.Edit)
                {
                    foreach (var soureObject in sourceObjects)
                    {
                        Repositories.Instance.Repository <AuditObject>(_mongoConfig).Delete(x => x.Action == "UPD" && x.Source == colName && x.OriginalId == soureObject._id);
                    }
                }
                if (((audit as DocumentAuditAttr).AuditEnum & DocumentAuditEnum.Delete) == DocumentAuditEnum.Delete)
                {
                    //delete where action = "DEL";
                    foreach (var soureObject in sourceObjects)
                    {
                        Repositories.Instance.Repository <AuditObject>(_mongoConfig).Delete(x => x.Action == "DEL" && x.Source == colName && x.OriginalId == soureObject._id);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void DeleteFromAuditing(DocumentAuditEnum auditType, string id)
 {
     if ((auditType & DocumentAuditEnum.Edit) == DocumentAuditEnum.Edit)
     {
         Repositories.Instance.Repository <AuditObject>(_mongoConfig).Delete(x => x.Action == "UPD" && x.Source == MongoUtil.GetCollectioNameFromInterface <T>() && x.OriginalId == id);
     }
     if ((auditType & DocumentAuditEnum.Delete) == DocumentAuditEnum.Delete)
     {
         Repositories.Instance.Repository <AuditObject>(_mongoConfig).Delete(x => x.Action == "DEL" && x.Source == MongoUtil.GetCollectioNameFromInterface <T>() && x.OriginalId == id);
     }
 }