public void setup_organisation_is_added()
        {
            _organisationId = Guid.NewGuid();
            _updatedBy      = "test user";
            _fieldChanged   = "trading name 1";
            _previousValue  = "Trainer Trading Name";
            _newValue       = "ANDERSON TRAINING LTD";
            _repository     = new UpdateOrganisationRepository(_databaseService.WebConfiguration);
            var auditData = new AuditData
            {
                OrganisationId = _organisationId,
                UpdatedAt      = DateTime.Now,
                UpdatedBy      = _updatedBy,
                FieldChanges   = new List <AuditLogEntry>
                {
                    new AuditLogEntry
                    {
                        FieldChanged  = _fieldChanged,
                        PreviousValue = _previousValue,
                        NewValue      = _newValue
                    }
                }
            };

            _updateSuccessful = _repository.WriteFieldChangesToAuditLog(auditData).Result;
            _auditRecord      = AuditHandler.GetOrganisationFromOrganisationId(_organisationId);
        }
예제 #2
0
        public async Task ReadHandler_Pagination()
        {
            var logger = new Mock <ILogger <AuditHandler> >();
            var sp     = MockServiceProvider(logger);
            var am     = new Mock <IAuditManager>();

            sp.Setup(s => s.GetService(typeof(IAuditManager))).Returns(am.Object);
            var h = new AuditHandler(sp.Object);

            var o = new Pagination <string>
            {
                Data = new[] { "1", "2", "3" }
            };

            var uId = "u-id";
            var wc  = new WorkContext {
                CurrentUserId = uId
            };

            var ded = new DomainEvent
            {
                Data = o,
                PerformedByUserId = uId,
                WorkContext       = wc
            };
            await h.ReadEventHandler(ded);

            am.Verify(a => a.InsertAuditRecord(
                          It.Is <Type>(t => t == typeof(string)),
                          It.Is <string>(i => i == null),
                          It.Is <string>(art => art == AuditRecordTypes.READ),
                          It.Is <WorkContext>(w => w == wc),
                          It.Is <object>(obj => obj.GetPropertyValueByName <IEnumerable <string> >("Data") == o.Data)),
                      Times.Once);
        }
        private void AssignProtocolNumberToSelectedTitle()
        {
            ProtocolTemplate title = GetSelectedTemplateFromView();

            title.AddProtocolNumber(this.request.ProtocolType, this.contact.SponsorCode);
            AuditHandler.Insert_ProtocolNumber_AuditItem(title.ProtocolNumber, loginInfo.UserName);
        }
        private static void SubscribeAuditHandler(IServiceProvider sp, IEventBus eventBus, IEnumerable <EntityConfigRecord> entityConfigRecords)
        {
            var auditHandler = new AuditHandler(sp);

            var creatables = entityConfigRecords.Where(ecr => ecr.Type.IsOfType <ICreatableAudit>() && !ecr.AuditSettings.Disabled && ecr.AuditSettings.AuditRules.AuditCreate).ToArray();

            foreach (var ca in creatables)
            {
                eventBus.Subscribe(ca.EventKeys.Create, auditHandler.CreateEventHandler, $"{ca.Name.ToLower()}-creatable-audit-handler");
            }

            var readables = entityConfigRecords.Where(ecr => ecr.Type.IsOfType <IReadableAudit>() && !ecr.AuditSettings.Disabled && ecr.AuditSettings.AuditRules.AuditRead).ToArray();

            foreach (var ca in readables)
            {
                eventBus.Subscribe(ca.EventKeys.Read, auditHandler.ReadEventHandler, $"{ca.Name.ToLower()}-read-audit-handler");
            }

            var updatables = entityConfigRecords.Where(ecr => ecr.Type.IsOfType <IUpdatableAudit>() && !ecr.AuditSettings.Disabled && ecr.AuditSettings.AuditRules.AuditUpdate).ToArray();

            foreach (var ca in updatables)
            {
                eventBus.Subscribe(ca.EventKeys.Update, auditHandler.UpdateEventHandler, $"{ca.Name.ToLower()}-updatable-audit-handler");
            }

            var deletables = entityConfigRecords.Where(ecr => ecr.Type.IsOfType <IDeletableAudit>() && !ecr.AuditSettings.Disabled && ecr.AuditSettings.AuditRules.AuditDelete).ToArray();

            foreach (var ca in deletables)
            {
                eventBus.Subscribe(ca.EventKeys.Delete, auditHandler.DeleteEventHandler, $"{ca.Name.ToLower()}-deletable-audit-handler");
            }
        }
 private void SubmitAuditItems()
 {
     if (auditItems.Count != 0)
     {
         AuditHandler.InsertAuditItems(auditItems);
         this.auditItems.Clear();
     }
 }
        private void UpdateSelectedTitleFilePath(string filePath)
        {
            ProtocolTemplate title    = GetSelectedTemplateFromView();
            string           oldValue = title.FilePath;

            title.UpdateFileInfo(filePath);
            AuditHandler.Insert_UpdateFilePath_AuditItem(oldValue, title, loginInfo.UserName);
        }
예제 #7
0
 public int SaveChanges(IUserContext <PrivilegeType> currentUser)
 {
     if (currentUser != null)
     {
         return(AuditHandler.SaveChanges <AuditLog>(this, AuditLogSet, currentUser.UserName, currentUser.Id));
     }
     return(base.SaveChanges());
 }
예제 #8
0
 private void SubmitAuditItem(string title, int groupID, bool isActive)
 {
     CreateAuditItems(title, groupID, isActive);
     if (this.auditItems.Count != 0)
     {
         AuditHandler.InsertAuditItems(this.auditItems);
         this.auditItems.Clear();
     }
 }
 private void SubmitAuditItem(Item item)
 {
     CreateAuditItems(item);
     if (this.auditItems.Count != 0)
     {
         AuditHandler.InsertAuditItems(this.auditItems);
         this.auditItems.Clear();
     }
 }
 private void RemoveSelectedTemplate(ProtocolTemplate selectedTemplate)
 {
     QProtocolRequestTemplates.SetIsActive(this.request.ID, selectedTemplate.TemplateID,
                                           false, loginInfo.UserName);
     QProtocolNumbers.UpdateItem_IsActive(this.request.ID, selectedTemplate.TemplateID,
                                          false, loginInfo.UserName);
     AuditHandler.Insert_RemoveTitle_AuditItem(this.request.ID,
                                               selectedTemplate.TemplateID, loginInfo.UserName);
     RefreshTemplateListView();
 }
        private void UpdateSelectedTitleDepartment()
        {
            Item selectedItem = SelectDepartmentFromOptions();

            if (selectedItem.Value != "")
            {
                ProtocolTemplate title    = GetSelectedTemplateFromView();
                string           oldValue = title.Department.ID.ToString();
                title.UpdateDepartment(Convert.ToInt32(selectedItem.Value));
                AuditHandler.Insert_Department_AuditItem(oldValue, title, loginInfo.UserName);
            }
        }
        private void UpdateSelectedTitleProjectNumber()
        {
            ProtocolTemplate title         = GetSelectedTemplateFromView();
            string           oldValue      = title.ProjectNumber;
            string           projectNumber = TemplatesController.ShowOneTextBoxForm("Project Number: ",
                                                                                    title.ProjectNumber, this.view.ParentControl);

            if (projectNumber != String.Empty)
            {
                title.AddProjectNumber(projectNumber);
                AuditHandler.Insert_ProjectNumber_AuditItem(oldValue, title, loginInfo.UserName);
                this.RefreshTemplateListView();
            }
        }
예제 #13
0
        /// <summary>
        /// Initializes a new instance of the <see cref="AccessHandlerManager"/> class
        /// </summary>
        /// <param name="context">The <see cref="MainDatabaseContext"/> instance to use</param>
        /// <param name="creatingAuditLogs">The CreatingAuditLogs event handler used to fill in any missing details. CURRENTLY NOT USED!!!</param>
        internal AccessHandlerManager(MainDatabaseContext context, CreatingAuditLogsEventHandler creatingAuditLogs = null)
        {
            //// if(creatingAuditLogs != null) context.CreatingAuditLogs += creatingAuditLogs;

            this.questionnaireAccessHandler       = new QuestionnaireAccessHandler(context);
            this.questionnaireFormatAccessHandler = new QuestionnaireFormatAccessHandler(context);
            this.tagAccessHandler     = new TagAccessHandler(context);
            this.userAccessHandler    = new UserAccessHandler(context);
            this.messageHandler       = new MessageHandler(context);
            this.episodeAccessHandler = new EpisodeAccessHandler(context);
            this.notificationHandler  = new NotificationHandler(context);
            this.auditHandler         = new AuditHandler(context);
            this.searchHandler        = new SearchHandler(context);
        }
예제 #14
0
파일: Logger.cs 프로젝트: eugeb/Custom2
        /// <summary>
        /// Logs the given Audit to the audit trail
        /// </summary>
        /// <param name="audits">The audit entries to log</param>
        public static void Audit(params Audit[] audits)
        {
            List <AuditLog> logs = new List <AuditLog>();

            foreach (Audit audit in audits)
            {
                logs.Add(Logger.BuildAuditLog(audit));
            }

            if (Logger.handler == null)
            {
                handler = new AccessHandlerManager().AuditHandler;
            }

            Logger.handler.StoreAudit(logs);
        }
        private void ReviseSelectedTitleProtocolNumber()
        {
            ProtocolTemplate title = GetSelectedTemplateFromView();

            if (title.ProtocolNumber.FullCode != String.Empty)
            {
                string oldValue = title.ProtocolNumber.FullCode;
                title.ProtocolNumber.Update();
                AuditHandler.Insert_ReviseProtocol_AuditItem(oldValue, title.ProtocolNumber, loginInfo.UserName);
                this.RefreshTemplateListView();
            }
            else
            {
                MessageBox.Show("Invalid Protocol Number.");
            }
        }
예제 #16
0
        private void ResetRequestWithConfirmation()
        {
            DialogResult dialogResult = MessageBox.Show("Are you sure you want to reset this request?",
                                                        "Confirmation", MessageBoxButtons.YesNo);

            if (dialogResult == DialogResult.Yes)
            {
                this.selectedRequest.RequestStatus = "New";
                this.selectedRequest.IsActive      = true;
                QProtocolRequests.UpdateRequestStatus(this.selectedRequest, loginInfo.UserName);

                AuditItem auditItem = CreateAuditItem("RequestStatus,IsActive", "Closed,0", "New,1");
                AuditHandler.InsertAuditItem(auditItem);
                this.requestList.Remove(this.selectedRequest);
                this.selectedRequest = null;
                ReloadRequestList();
            }
        }
예제 #17
0
        public async Task UpdateHandler_EntityUpdatedEventData()
        {
            var logger = new Mock <ILogger <AuditHandler> >();
            var sp     = MockServiceProvider(logger);
            var am     = new Mock <IAuditManager>();

            sp.Setup(s => s.GetService(typeof(IAuditManager))).Returns(am.Object);
            var h = new AuditHandler(sp.Object);

            EventDataObject before = new EventDataObject
            {
                Id    = "123",
                Value = "data"
            },
                            after = new EventDataObject
            {
                Id    = "123",
                Value = "data2"
            };

            var uId = "u-id";
            var wc  = new WorkContext {
                CurrentUserId = uId
            };

            var ded = new DomainEvent
            {
                Data = new EntityUpdatedDomainEvent(before, after),
                PerformedByUserId = uId,
                WorkContext       = wc
            };
            await h.UpdateEventHandler(ded);

            am.Verify(a => a.InsertAuditRecord(
                          It.Is <Type>(t => t == typeof(EventDataObject)),
                          It.Is <string>(i => i == before.Id),
                          It.Is <string>(art => art == AuditRecordTypes.UPDATE),
                          It.Is <WorkContext>(w => w == wc),
                          It.Is <object>(obj => VerifyPayload(obj, before, after))),
                      Times.Once);
        }
예제 #18
0
        public async Task ReadHandler()
        {
            var logger = new Mock <ILogger <AuditHandler> >();
            var sp     = MockServiceProvider(logger);
            var am     = new Mock <IAuditManager>();

            sp.Setup(s => s.GetService(typeof(IAuditManager))).Returns(am.Object);
            var h = new AuditHandler(sp.Object);

            var o = new EventDataObject
            {
                Id    = "123",
                Value = "data"
            };

            var uId = "u-id";
            var wc  = new WorkContext {
                CurrentUserId = uId
            };

            var ded = new DomainEvent
            {
                Data = o,
                PerformedByUserId = uId,
                WorkContext       = wc
            };
            await h.ReadEventHandler(ded);

            am.Verify(a => a.InsertAuditRecord(
                          It.Is <Type>(t => t == typeof(EventDataObject)),
                          It.Is <string>(i => i == o.Id),
                          It.Is <string>(art => art == AuditRecordTypes.READ),
                          It.Is <WorkContext>(w => w == wc),
                          It.Is <object>(obj => obj == o)),
                      Times.Once);
        }
 public void tear_down()
 {
     AuditHandler.DeleteAllRecords();
 }