Ejemplo n.º 1
0
        /// <summary>
        /// Add an issue
        /// </summary>
        /// <param name="orgId"> </param>
        /// <param name="issue"></param>
        public HttpResponseMessage PostIssue(string orgId, IssueBase issue)
        {
            SetOrganisation(orgId);
            Auditor.Trace(GetType(), "Request to create issue with Id:={0}, ApplicationId:={1}", issue.Id, issue.ApplicationId);
            _issueCache.Add(issue);

            return(Request.CreateResponse(HttpStatusCode.Created, issue));
        }
Ejemplo n.º 2
0
        public AttachToNewIssueResponse Invoke(AttachToNewIssueRequest request)
        {
            Trace("Starting...");

            //mark the error as unclassified
            var error            = request.Error;
            var application      = request.Application;
            var matchRuleFactory = _matchRuleFactoryFactory.Create(application.MatchRuleFactoryId);
            var rules            = matchRuleFactory.Create(error).ToList();

            var issue = new Issue
            {
                Name            = "{0} ({1})".FormatWith(error.ExceptionInfos.First().Type, error.TimestampUtc.ToString("yyyy.MM.ddTHH.mm.ss")),
                Rules           = rules,
                ApplicationId   = application.Id,
                CreatedOnUtc    = error.TimestampUtc,
                LastModifiedUtc = error.TimestampUtc,
                UserId          = application.DefaultUserId,
                ErrorCount      = 1,
                LastErrorUtc    = error.TimestampUtc,
                OrganisationId  = application.OrganisationId,
                TestIssue       = error.TestError,
                NotifyFrequency = application.DefaultNotificationFrequency.IsNullOrEmpty() ? "0" : application.DefaultNotificationFrequency
            };

            Store(issue);
            Store(new IssueHistory
            {
                DateAddedUtc     = DateTime.UtcNow.ToDateTimeOffset(application.TimezoneId),
                Type             = HistoryItemType.AutoCreated,
                ExceptionType    = error.ExceptionInfos.First().Type,
                ExceptionMethod  = error.ExceptionInfos.First().MethodName,
                ExceptionMachine = error.MachineName,
                SystemMessage    = true,
                IssueId          = issue.Id,
                ApplicationId    = issue.ApplicationId,
            });

            var issueHourlyCount = new IssueHourlyCount
            {
                IssueId       = issue.Id,
                Id            = "IssueHourlyCount/{0}".FormatWith(issue.FriendlyId),
                ApplicationId = issue.ApplicationId
            };

            issueHourlyCount.Initialise();
            issueHourlyCount.IncrementHourlyCount(issue.CreatedOnUtc);
            Store(issueHourlyCount);

            var issueDailyCount = new IssueDailyCount
            {
                Id            = "IssueDailyCount/{0}-{1}".FormatWith(issue.FriendlyId, issue.CreatedOnUtc.ToString("yyyy-MM-dd")),
                IssueId       = issue.Id,
                Count         = 1,
                Date          = issue.CreatedOnUtc.Date,
                ApplicationId = issue.ApplicationId
            };

            Store(issueDailyCount);

            Trace("AttachTod issue: Id:={0}, Name:={1}", issue.Id, issue.Name);
            error.IssueId = issue.Id;
            SendNotification(issue, application, NotificationType.NotifyOnNewIssueCreated, error, request.Organisation);

            //tell the issue cache we have a new issue
            _receptionServiceIssueCache.Add(issue);

            Store(error);

            Trace("Complete");

            return(new AttachToNewIssueResponse
            {
                Issue = issue
            });
        }