public static ErrorListSubmitRequest CreateErrorListSubmitRequest(string winServiceSource = "", string detail = "") {
     var errors = new List<ErrorDto>();
     var error = new ErrorDto();
     error.ErrorId = Guid.NewGuid().ToString();
     error.Source = string.IsNullOrEmpty(winServiceSource) ? "SomeCode" : winServiceSource;
     error.SourceId = "SomeCode";
     error.Type = "ExtrangeException";
     error.Detail = string.IsNullOrEmpty(detail) ? "Error Detail" : detail;
     error.Form = new Dictionary<string, string> { { "exampleFormKey", "exampleFormData" } };
     error.Host = "TheHost";
     error.InfoUrl = "";
     error.Message = "Everything is Lost";
     error.ServerVariables = new Dictionary<string, string> { { "exampleServerKey", "exampleServerData" } };
     error.StatusCode = "404";
     error.Time = DateTime.Now;
     error.User = "******";
     error.WebHostHtmlMessage = "<b>Ugly Error Message</b>";
     error.Cookies = new Dictionary<string, object> { { "exampleCookieKey", "exampleCookieData" } };
     errors.Add(error);
     return new ErrorListSubmitRequest { Errors = errors };
 }
        private static bool AddError(ErrorDto errorDto) {
            var errorId = errorDto.ErrorId;
            var sourceId = errorDto.SourceId;
            var infoUrl = errorDto.InfoUrl;

            var infoUrlPath = string.IsNullOrWhiteSpace(infoUrl) ? string.Empty : new Uri(infoUrl).AbsoluteUri;

            var section = ConfigurationManager.GetSection("elmahr") as RootSection;
            var hasSection = section != null;
            if (!hasSection) return false;

            var apps = GlobalHost.DependencyResolver.Resolve<IApplications>();

            var source = apps[sourceId];
            if (source == null) {
                apps.AddSource("Name", sourceId, "", new SourceSection("Name", sourceId, "", null, new Dictionary<string, string>()));
                source = apps[sourceId];
            }

            var error = errorDto.ToError();

            string errorJson = JsonConvert.SerializeObject(error);

            var payload = Error.ProcessAndAppendError(sourceId, errorId, errorJson, infoUrlPath, ErrorCatcher(infoUrlPath), true);

            if (payload != null) {
                Hub.Log(string.Format("Received error from {0}: {1}", payload.GetApplication().ApplicationName, payload.Message));
            }

            return true;
        }