public async Task Invoke(HttpContext context, SystemLogsCreate systemLogsCreate, DataContext spudContext, ILoggingContext loggingDb, UserPermissionService userPermissionService)
 {
     try
     {
         await _next.Invoke(context);
     }
     catch (Exception ex)
     {
         systemLogsCreate.SetupService(spudContext, loggingDb, userPermissionService);
         await HandleExceptionAsync(context, ex, systemLogsCreate);
     }
 }
        private async Task HandleExceptionAsync(HttpContext context, Exception exception, SystemLogsCreate systemLogsCreate)
        {
            await systemLogsCreate.SaveLog(Model.Enums.LogTypeEnum.UncaughtError, exception);

            var response = context.Response;

            response.ContentType = "application/json";
            response.StatusCode  = (int)System.Net.HttpStatusCode.InternalServerError;
            await response.WriteAsync(JsonConvert.SerializeObject(new
            {
                // customize as you need
                error = new
                {
                    message   = exception.Message,
                    exception = exception.GetType().Name
                }
            }));
        }