public void ReturnsTrueIfActiveIncident()
            {
                var parentRowKey = "parentRowKey";
                var group        = new IncidentGroupEntity
                {
                    StartTime = Cursor - StartMessageDelay,
                    RowKey    = parentRowKey
                };

                var unlinkedIncident = new IncidentEntity
                {
                    StartTime    = Cursor,
                    ParentRowKey = "something else"
                };

                var shortIncident = new IncidentEntity
                {
                    StartTime    = Cursor - StartMessageDelay,
                    EndTime      = Cursor - TimeSpan.FromTicks(1),
                    ParentRowKey = parentRowKey
                };

                var activeIncident = new IncidentEntity
                {
                    StartTime    = Cursor - StartMessageDelay,
                    ParentRowKey = parentRowKey
                };

                Table.SetupQuery(unlinkedIncident, shortIncident, activeIncident);

                var result = Filter.CanPostMessages(group, Cursor);

                Assert.True(result);
            }
            public async Task DeactivatesIfMitigated()
            {
                var cursor         = new DateTime(2018, 10, 10);
                var incidentEntity = new IncidentEntity
                {
                    IncidentApiId = "id"
                };

                var incident = new Incident
                {
                    MitigationData = new IncidentStateChangeEventData
                    {
                        Date = new DateTime(2018, 10, 11)
                    }
                };

                Client
                .Setup(x => x.GetIncident(incidentEntity.IncidentApiId))
                .ReturnsAsync(incident);

                Table
                .Setup(x => x.ReplaceAsync(incidentEntity))
                .Returns(Task.CompletedTask)
                .Verifiable();

                await Updater.UpdateAsync(incidentEntity, cursor);

                Assert.Equal(incident.MitigationData.Date, incidentEntity.EndTime);
                Assert.False(incidentEntity.IsActive);

                Table.Verify();
            }
示例#3
0
        public Task <IncidentEntity> AddIncident(IncidentEntity incident)
        {
            var count = _incidentStore.Count;

            incident.Id          = count + 1;
            incident.CreatedDate = DateTime.Now;
            _incidentStore.Add(incident);
            return(Task.FromResult(incident));
        }
示例#4
0
            public Void execute(CommandContext commandContext)
            {
                IncidentContext incidentContext = new IncidentContext();

                incidentContext.ExecutionId = execution.Id;

                IncidentEntity.createAndInsertIncident("foo", incidentContext, null);

                return(null);
            }
示例#5
0
            public virtual object Execute(CommandContext commandContext)
            {
                var incidentContext = new IncidentContext();

                incidentContext.ExecutionId = _execution.Id;

                IncidentEntity.CreateAndInsertIncident("foo", incidentContext, null);

                return(null);
            }
        public virtual IIncident CreateIncident(IncidentContext context, string message)
        {
            var newIncident = IncidentEntity.CreateAndInsertIncident(IncidentHandlerType, context, message);

            if (!ReferenceEquals(context.ExecutionId, null))
            {
                newIncident.CreateRecursiveIncidents();
            }

            return(newIncident);
        }
示例#7
0
        public virtual Incident createIncident(IncidentContext context, string message)
        {
            IncidentEntity newIncident = IncidentEntity.createAndInsertIncident(type, context, message);

            if (!string.ReferenceEquals(context.ExecutionId, null))
            {
                newIncident.createRecursiveIncidents();
            }

            return(newIncident);
        }
示例#8
0
            public async Task CreatesEntityAndDoesNotIncreaseSeverity(ComponentStatus existingStatus)
            {
                var input = new ParsedIncident(Incident, "the path", ComponentStatus.Degraded);

                IncidentEntity entity = null;

                Table
                .Setup(x => x.InsertOrReplaceAsync(It.IsAny <ITableEntity>()))
                .Returns(Task.CompletedTask)
                .Callback <ITableEntity>(e =>
                {
                    Assert.IsType <IncidentEntity>(e);
                    entity = e as IncidentEntity;
                });

                var group = new IncidentGroupEntity
                {
                    RowKey = "parentRowKey",
                    AffectedComponentStatus = (int)existingStatus
                };

                Provider
                .Setup(x => x.GetAsync(input))
                .ReturnsAsync(group);

                var expectedPath = "the provided path";

                PathProvider
                .Setup(x => x.Get(input))
                .Returns(expectedPath);

                var result = await Factory.CreateAsync(input);

                Assert.Equal(entity, result);

                Assert.Equal(input.Id, entity.IncidentApiId);
                Assert.Equal(group.RowKey, entity.ParentRowKey);
                Assert.Equal(expectedPath, entity.AffectedComponentPath);
                Assert.Equal((int)input.AffectedComponentStatus, entity.AffectedComponentStatus);
                Assert.Equal(input.StartTime, entity.StartTime);
                Assert.Equal(input.EndTime, entity.EndTime);
                Assert.Equal((int)existingStatus, group.AffectedComponentStatus);

                Table
                .Verify(
                    x => x.InsertOrReplaceAsync(It.IsAny <IncidentEntity>()),
                    Times.Once());

                Table
                .Verify(
                    x => x.ReplaceAsync(It.IsAny <IncidentGroupEntity>()),
                    Times.Never());
            }
        public Tuple <bool, string> Post(IncidentEntity entity)
        {
            //  ManageSQLConnection sqlConnection = new ManageSQLConnection();
            MySqlConnection  sqlConnection    = new MySqlConnection();
            MySqlTransaction objTrans         = null;
            string           connectionString = GlobalVariables.ConnectionString;

            using (sqlConnection = new MySqlConnection(connectionString))
            {
                DataSet ds = new DataSet();

                cmd = new MySqlCommand();
                try
                {
                    if (sqlConnection.State == 0)
                    {
                        sqlConnection.Open();
                    }
                    objTrans        = sqlConnection.BeginTransaction();
                    cmd.Transaction = objTrans;
                    cmd.Connection  = sqlConnection;
                    cmd.CommandText = "InsertIncidentDetails";
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@rcode", entity.RCode);
                    cmd.Parameters.AddWithValue("@dcode", entity.DCode);
                    cmd.Parameters.AddWithValue("@shopcode", entity.ShopCode);
                    cmd.Parameters.AddWithValue("@doc_date", entity.DocDate);
                    cmd.Parameters.AddWithValue("@reason", entity.Reason);
                    cmd.Parameters.AddWithValue("@url_path", entity.URL);
                    cmd.Parameters.AddWithValue("@remarks", entity.Remarks);
                    cmd.ExecuteNonQuery();
                    objTrans.Commit();
                    cmd.Parameters.Clear();
                    cmd.Dispose();
                    return(new Tuple <bool, string>(true, JsonConvert.SerializeObject(ds)));
                }
                catch (Exception ex)
                {
                    AuditLog.WriteError(ex.Message + " : " + ex.StackTrace);
                    objTrans.Rollback();
                    return(new Tuple <bool, string>(false, "Exception occured"));
                }
                finally
                {
                    sqlConnection.Close();
                    cmd.Dispose();
                    ds.Dispose();
                }
            }
        }
示例#10
0
 public static ReportIncidentResponse ToIncidentResponse(this IncidentEntity entity)
 {
     return(new ReportIncidentResponse
     {
         CreatedDate = entity.CreatedDate,
         Id = entity.Id,
         Location = new Location()
         {
             Latitude = entity.Latitude,
             Longitude = entity.Longitude
         },
         Reference = entity.Reference.ToString()
     });
 }
示例#11
0
        protected internal virtual void removeIncident(IncidentContext context, bool incidentResolved)
        {
            IList <Incident> incidents = Context.CommandContext.IncidentManager.findIncidentByConfiguration(context.Configuration);

            foreach (Incident currentIncident in incidents)
            {
                IncidentEntity incident = (IncidentEntity)currentIncident;
                if (incidentResolved)
                {
                    incident.resolve();
                }
                else
                {
                    incident.delete();
                }
            }
        }
示例#12
0
        public async Task <IActionResult> ReportIncident([FromBody] ReportIncidentRequest incidentRequest)
        {
            var incident = new IncidentEntity()
            {
                AudienceType = incidentRequest.Audience.Type,
                Description  = incidentRequest.Situation.Description,
                Latitude     = incidentRequest.Location.Latitude,
                Longitude    = incidentRequest.Location.Longitude,
                NoOfAudience = incidentRequest.Audience.Number,
                Reference    = Guid.NewGuid(),
            };

            var createdIncident = await _incidentRepository.AddIncident(incident).ConfigureAwait(false);

            var incidentResponse = createdIncident.ToIncidentResponse();

            return(Ok(incidentResponse));
        }
        public async Task <IActionResult> NewIncident(IncidentModel model)
        {
            //if (!ModelState.IsValid)
            //{
            //    return BadRequest();
            //}

            var incident = new IncidentEntity
            {
                Description = model.Description,
                Latitude    = model.Latitude,
                Longitude   = model.Longitude,
                Group       = model.Group,
            };

            _dbContext.Add(incident);
            await _dbContext.SaveChangesAsync();

            return(RedirectToAction("IncidentList"));
        }
        protected internal virtual void InitHistoricIncidentEvent(Event.HistoricIncidentEntity evt, IIncident incident, IHistoryEventType eventType)
        {
            // init properties
            evt.Id = incident.Id;
            evt.ProcessDefinitionId = incident.ProcessDefinitionId;
            evt.ProcessInstanceId   = incident.ProcessInstanceId;
            evt.ExecutionId         = incident.ExecutionId;
            evt.CreateTime          = incident.IncidentTimestamp;
            evt.IncidentType        = incident.IncidentType;
            evt.ActivityId          = incident.ActivityId;
            evt.CauseIncidentId     = incident.CauseIncidentId;
            evt.RootCauseIncidentId = incident.RootCauseIncidentId;
            evt.Configuration       = incident.Configuration;
            evt.IncidentMessage     = incident.IncidentMessage;
            evt.TenantId            = incident.TenantId;
            evt.JobDefinitionId     = incident.JobDefinitionId;

            IncidentEntity          incidentEntity = (IncidentEntity)incident;
            ProcessDefinitionEntity definition     = incidentEntity.ProcessDefinition;

            if (definition != null)
            {
                evt.ProcessDefinitionKey = definition.Key;
            }

            // init event type
            evt.EventType = eventType.EventName;

            // init state
            IIncidentState incidentState = IncidentStateFields.Deleted;

            if (HistoryEventTypes.IncidentDelete == eventType)
            {
                incidentState = IncidentStateFields.Deleted;
            }
            else if (HistoryEventTypes.IncidentResolve.Equals(eventType))
            {
                incidentState = IncidentStateFields.Resolved;
            }
            evt.IncidentState = incidentState.StateCode;
        }
示例#15
0
        private CoreIncidentDto InsertOrUpdate(CoreIncidentDto dto)
        {
            using (var adapter = new DataAccessAdapter())
            {
                var data = new LinqMetaData(adapter);

                var entity = data.Incident.FirstOrDefault(CoreIncidentDtoPersistence.CreatePkPredicate(dto));

                if (entity == null)
                {
                    entity = new IncidentEntity();
                }

                entity.UpdateFromCoreIncidentDto(dto);

                adapter.SaveEntity(entity, true);

                //We need to do this extra call as per https://www.llblgen.com/Documentation/5.3/Derived%20Models/dto_llblgen.htm#example-projection-on-database-query
                var result = data.Incident.Where(x => x.Id == entity.Id).ProjectToCoreIncidentDto().ToList();

                return(result[0]);
            }
        }
示例#16
0
            public async Task IgnoresDeactivatedIncidents()
            {
                var cursor         = new DateTime(2018, 10, 10);
                var endTime        = new DateTime(2018, 10, 11);
                var incidentEntity = new IncidentEntity
                {
                    EndTime = endTime
                };

                await Updater.UpdateAsync(incidentEntity, cursor);

                Assert.Equal(endTime, incidentEntity.EndTime);

                Client
                .Verify(
                    x => x.GetIncident(It.IsAny <string>()),
                    Times.Never());

                Table
                .Verify(
                    x => x.ReplaceAsync(It.IsAny <ITableEntity>()),
                    Times.Never());
            }
示例#17
0
            public async Task DoesNotSaveIfNotMitigated()
            {
                var cursor         = new DateTime(2018, 10, 10);
                var incidentEntity = new IncidentEntity
                {
                    IncidentApiId = "id"
                };

                var incident = new Incident();

                Client
                .Setup(x => x.GetIncident(incidentEntity.IncidentApiId))
                .ReturnsAsync(incident);

                await Updater.UpdateAsync(incidentEntity, cursor);

                Assert.True(incidentEntity.IsActive);

                Table
                .Verify(
                    x => x.ReplaceAsync(It.IsAny <ITableEntity>()),
                    Times.Never());
            }
示例#18
0
 public void HandleIncident(IncidentContext context, string message)
 {
     IncidentEntity.CreateAndInsertIncident(incidentType, context, message);
 }
示例#19
0
 public virtual void consume(IncidentEntity incident)
 {
     incidents_Renamed.remove(incident);
 }
示例#20
0
 public virtual Incident handleIncident(IncidentContext context, string message)
 {
     return(IncidentEntity.createAndInsertIncident(incidentType, context, message));
 }
示例#21
0
 public virtual void Consume(IncidentEntity incident)
 {
     IncidentsRenamed.Remove(incident);
 }
 protected internal virtual void SwitchVersionOfIncident(CommandContext commandContext,
                                                         IncidentEntity incidentEntity, ProcessDefinitionEntity newProcessDefinition)
 {
     incidentEntity.ProcessDefinitionId = newProcessDefinition.Id;
 }
示例#23
0
 public MigratingIncident(IncidentEntity incident, ScopeImpl targetScope)
 {
     this.Incident    = incident;
     this.TargetScope = targetScope;
 }