Exemplo n.º 1
0
 public static IList <AuditTrailDTO> GetAuditTrailDTOs <T>(this IPersonAuditable <T> auditable, Person target)
     where T : Entity
 {
     return((from row in auditable.GetRawRevisions(target)
             select new AuditTrailDTO()
     {
         Entity = (T)row[0],
         REVINFO = (REVINFO)row[1],
         RevisionType = (RevisionType)row[2]
     }).ToList <AuditTrailDTO>());
 }
Exemplo n.º 2
0
        public static IList <AuditTrailDTO> GetRevisions <T>(this IPersonAuditable <T> auditable, Person person)
            where T : Entity
        {
            IList <AuditTrailDTO> trail = auditable.GetAuditTrailDTOs <T>(person)
                                          .OrderByDescending(x => x.REVINFO.REVTSTMP)
                                          .ToList <AuditTrailDTO>();

            for (int i = 0; i < trail.Count; i++)
            {
                AuditTrailDTO current = trail[i];

                // HACK: ignoring changesets made before the BASE_REVISION, because Envers will occasionally throw ObjectNotFoundExceptions when it
                // needs to refer to a base entity whose revision id is 100 (i.e. 'newer' than the current entity).  PROF2-191.
                if (current.REVINFO.Id >= BASE_REVISION_ID)
                {
                    // find previous entity change to compare it with
                    AuditTrailDTO last = null;
                    for (int j = i + 1; j < trail.Count; j++)
                    {
                        if (trail[j].Entity.Id == current.Entity.Id)
                        {
                            last = trail[j];
                            break;
                        }
                    }

                    try
                    {
                        if (current.REVINFO.Id != BASE_REVISION_ID && last != null)  // don't show diffs for base revision
                        {
                            ComparisonResult result = auditable.CompareLogic.Compare(current.Entity, last.Entity);
                            if (!result.AreEqual)
                            {
                                trail[i].Differences = trail[i].Differences.Concat(result.Differences).ToList();
                            }
                        }
                    }
                    catch (ObjectNotFoundException e)
                    {
                        AuditableExtensions.log.Error("PersonID " + person.Id
                                                      + ": Object not found comparing revision " + trail[i].REVINFO.Id + " with " + (last != null ? last.REVINFO.Id.ToString() : "none")
                                                      + " for " + current.Entity.ToString() + ": " + e.Message);
                    }
                }
                else
                {
                    AuditableExtensions.log.Error("PersonID " + person.Id
                                                  + ": Encountered audit revision " + current.REVINFO.Id + " < " + BASE_REVISION_ID + ", skipping (see PROF2-191).");
                }
            }
            return(trail);
        }
Exemplo n.º 3
0
 public PersonStatisticTasks(IPersonStatisticsQuery personStatisticsQuery,
                             ICountsQuery countsQuery,
                             IEventRevisionsQuery eventRevisionsQuery,
                             IPersonAuditable <Career> auditCareerQuery,
                             IPersonTasks personTasks,
                             IAuditTasks auditTasks)
 {
     this.personStatisticsQuery = personStatisticsQuery;
     this.countsQuery           = countsQuery;
     this.eventRevisionsQuery   = eventRevisionsQuery;
     this.auditCareerQuery      = auditCareerQuery;
     this.personTasks           = personTasks;
     this.auditTasks            = auditTasks;
 }
Exemplo n.º 4
0
 public AuditTasks(IPersonTasks personTasks,
                   IEventTasks eventTasks,
                   IOrganizationTasks orgTasks,
                   IPersonChangeActivityQuery personChangeActivityQuery,
                   IPersonAuditable <Person> auditPersonQuery,
                   IPersonAuditable <Career> auditCareerQuery,
                   IPersonAuditable <PersonAlias> auditPersonAliasQuery,
                   IPersonAuditable <PersonSource> auditPersonSourceQuery,
                   IPersonAuditable <PersonPhoto> auditPersonPhotoQuery,
                   IPersonAuditable <PersonRelationship> auditPersonRelationshipQuery,
                   IPersonAuditable <ActionTaken> auditActionTakenQuery,
                   IPersonAuditable <PersonResponsibility> auditPersonResponsibilityQuery,
                   IPersonAuditable <PersonRestrictedNote> auditPersonRestrictedNoteQuery,
                   IDeletedProfilesStoredProcQuery oldDeletedProfilesQuery,
                   IAuditedEntityQuery auditedEntityQuery,
                   IModifiedProfilesStoredProcQuery oldModifiedProfilesQuery,
                   IAdminAuditQuery adminAuditQuery,
                   IEventRevisionsQuery eventRevisionsQuery,
                   IUnitRevisionsQuery unitRevisionsQuery,
                   IOperationRevisionsQuery operationRevisionsQuery)
 {
     this.personTasks = personTasks;
     this.eventTasks  = eventTasks;
     this.orgTasks    = orgTasks;
     this.personChangeActivityQuery      = personChangeActivityQuery;
     this.auditPersonQuery               = auditPersonQuery;
     this.auditCareerQuery               = auditCareerQuery;
     this.auditPersonAliasQuery          = auditPersonAliasQuery;
     this.auditPersonSourceQuery         = auditPersonSourceQuery;
     this.auditPersonPhotoQuery          = auditPersonPhotoQuery;
     this.auditPersonRelationshipQuery   = auditPersonRelationshipQuery;
     this.auditActionTakenQuery          = auditActionTakenQuery;
     this.auditPersonResponsibilityQuery = auditPersonResponsibilityQuery;
     this.auditPersonRestrictedNoteQuery = auditPersonRestrictedNoteQuery;
     this.oldDeletedProfilesQuery        = oldDeletedProfilesQuery;
     this.auditedEntityQuery             = auditedEntityQuery;
     this.oldModifiedProfilesQuery       = oldModifiedProfilesQuery;
     this.adminAuditQuery         = adminAuditQuery;
     this.eventRevisionsQuery     = eventRevisionsQuery;
     this.unitRevisionsQuery      = unitRevisionsQuery;
     this.operationRevisionsQuery = operationRevisionsQuery;
 }