/// <summary> /// Save audit item /// </summary> /// <param name="audit">Audit item</param> public async Task SaveAsync(Entity.Audit audit) { if (audit.GetNameCollection() != actualAuditCollection) { CheckAuditCollection(audit); actualAuditCollection = audit.GetNameCollection(); } DateTimeOffset dateTime = DateTimeOffset.Now; await dbRepository.InsertAsync(audit, audit.GetNameCollection()); }
private void InitializeAuditLogVer2() { dbRepository.InitDatabase(); dbRepository.SetVersionDb(1); var dateTime = DateTimeOffset.Now; //First audit log Entity.Audit audit = new Entity.Audit(Entity.Audit.GenerateNameCollection()); audit.DataType = DataTypeEnum.Audit.Name; audit.Code = AuditCodes.InitAuditDb; audit.Parameters = new Dictionary <string, string>() { { AuditCodes.InitAuditDb_year, dateTime.Year.ToString() }, { AuditCodes.InitAuditDb_month, dateTime.Month.ToString() } }; audit.CreatedWhen = dateTime; audit.UserGuid = AppGlobal.UserSystem.UserGuid; audit.DeviceGuid = AppGlobal.Device.DeviceGuid; var colDbDef = new Entity.AuditDbCollection(); var cols = new Dictionary <string, bool>(); cols.Add(nameof(colDbDef.CollectionName), true); dbRepository.CreateNewCollection <Entity.AuditDbCollection>(colDbDef.GetNameCollection(), cols); CheckAuditCollection(audit); dbRepository.InsertAsync(audit, audit.GetNameCollection()).Wait(); dbRepository.SetVersionDb(2); }
/// <summary> /// Check audit collection exist and create new collection for audit if not exists /// </summary> /// <param name="db">Database</param> /// <param name="audit">Audit record</param> private void CheckAuditCollection(Entity.Audit audit) { if (dbRepository.IsExistCollection(audit.GetNameCollection())) { return; } var cols = new Dictionary <string, bool>(); cols.Add(nameof(Entity.Audit.CreatedWhen), false); cols.Add(nameof(Entity.Audit.DataType), false); //Create new collection audit periods dbRepository.CreateNewCollection <Entity.Audit>(audit.GetNameCollection(), cols); //First audit collection var newAuditCol = new Entity.AuditDbCollection(); newAuditCol.CollectionName = audit.GetNameCollection(); newAuditCol.CreatedWhen = audit.CreatedWhen; dbRepository.InsertAsync(newAuditCol).Wait(); if (!(dbRepository.CountAsync <Entity.AuditDbCollection>().Result > AppGlobal.Log.MaxAuditCollection)) { return; } var deleteCol = dbRepository.FindFirstAsync <Entity.AuditDbCollection>().Result; if (deleteCol == null) { return; } dbRepository.DeleteCollection(deleteCol.CollectionName); }