Exemplo n.º 1
0
 private void WriteAuditRecord(AuditTrailOperations action, string description, string error = null)
 {
     if (!string.IsNullOrWhiteSpace(currentUserId))
     {
         _auditTrailMgr.CreateAuditRecord(action, description ?? "Execute", DateTime.Now, error, currentUserId);
     }
 }
Exemplo n.º 2
0
 /// <summary>
 /// Execute <paramref name="executor"/> synchronously.
 /// </summary>
 /// <param name="useTransaction">Use transaction to execute the operation. It will automatically rollback if error occurs</param>
 /// <param name="operation">The audit trail action</param>
 /// <param name="unitOfWork"></param>
 /// <param name="executor"></param>
 /// <param name="operationDescription"></param>
 /// <returns></returns>
 protected void ExecuteVoid(bool useTransaction, AuditTrailOperations operation, IUnitOfWork unitOfWork, Func <Task> executor, string operationDescription = null)
 {
     Execute <object>(useTransaction, operation, unitOfWork, () =>
     {
         executor();
         return(null);
     }, operationDescription);
 }
Exemplo n.º 3
0
        public void CreateAuditRecord(AuditTrailOperations operation, string operationDescription, DateTime operationDateTime, string error, string userId)
        {
            AuditTrail auditRecord = new AuditTrail()
            {
                Error                = error,
                Operation            = operation.ToString(),
                OperationDate        = operationDateTime,
                OperationDescription = operationDescription,
                UserId               = userId
            };

            InsertAuditRecord(auditRecord);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Execute <paramref name="executor"/>
        /// </summary>
        /// <typeparam name="TResult"></typeparam>
        /// <param name="useTransaction">Use transaction to execute the operation. It will automatically rollback if error occurs</param>
        /// <param name="operation">The audit trail action</param>
        /// <param name="unitOfWork"></param>
        /// <param name="executor"></param>
        /// <param name="operationDescription"></param>
        /// <returns></returns>
        protected async Task <TResult> ExecuteAsync <TResult>(bool useTransaction, AuditTrailOperations operation, IUnitOfWork unitOfWork, Func <Task <TResult> > executor, string operationDescription = null)
        {
            TResult tResult;

            try
            {
                try
                {
                    if (useTransaction)
                    {
                        unitOfWork.BeginTransaction();
                    }
                    TResult tResult1 = await executor();

                    await unitOfWork.SaveChangesAsync();

                    if (useTransaction)
                    {
                        unitOfWork.Commit();
                    }
                    tResult = tResult1;
                }
                catch (Exception ex)
                {
                    if (useTransaction && unitOfWork.GetCurrentTransaction() != null)
                    {
                        unitOfWork.Rollback();
                    }
                    errorText = ex.Message;
                    throw new ApplicationException(ex.Message);
                }
            }
            finally
            {
                try
                {
                    WriteAuditRecord(operation, operationDescription, errorText);
                }
                catch (Exception ex)
                {
                    Debug.WriteLine(ex.Message);
                    Console.Write(ex.Message);
                    Trace.WriteLine(ex.Message);
                }
            }
            return(tResult);
        }