示例#1
0
        private bool ValidateAlertEntityQueueDataForUpdate(AlertJobsQueueEntityDataSave updatedata, IConfiguration configuration)
        {
            var HRToken = new JwtSecurityToken(updatedata.HRToken);

            if (Helper.TokenValid(HRToken) == false)
            {
                return(false);
            }

            if (updatedata.AlertJobsQueueEntity == null)
            {
                return(false);
            }

            // Check if HR is up before calling HR routines
            var hrResponse = Helper.GetHRServerStatus(configuration);

            // We expect a 400 - Bad Request, if 404 Not Found, return an error
            if (hrResponse.StatusCode == 404)
            {
                return(false);
            }

            return(true);
        }
示例#2
0
        public IActionResult UpdateEntry([FromBody] AlertJobsQueueEntityDataSave updatedata)
        {
            var result = _repository.UpdateEntry(updatedata, _configuration);

            if (result == null)
            {
                return(Helper.CheckResult(result, false, true));
            }
            else
            {
                return(Helper.CheckResult(result));
            }
        }
        public void AlertJobsQueueEntity()
        {
            IEnumerable <AlertJobFilterData> AlertJobFilterDataItems = Enumerable.Empty <AlertJobFilterData>();
            object t = new object();
            AlertJobsQueueEntityData data       = new AlertJobsQueueEntityData();
            AlertJobsQueueEntity     dataEntity = new AlertJobsQueueEntity();
            AlertJobFilter           filter     = new AlertJobFilter();
            Mock <IAlertJobsQueueEntityRepository> AlertJobsQueueEntityService = new Mock <IAlertJobsQueueEntityRepository>();
            Guid                         guid        = new Guid();
            IConfiguration               config      = null;
            WorkItemPostData             wrkitemdata = new WorkItemPostData();
            AlertJobsQueueEntityDataSave datasave    = new AlertJobsQueueEntityDataSave();

            object obj = new object();

            try
            {
                AlertJobsQueueEntityService.Setup(x => x.GetAlertBatchItems()).Returns(t);
                AlertJobsQueueEntityService.Setup(x => x.GetFilteredAlertEntities(It.IsAny <AlertJobFilter>())).Returns(AlertJobFilterDataItems);
                AlertJobsQueueEntityService.Setup(x => x.CheckWorkItemIDForEntity(It.IsAny <WorkItemPostData>(), It.IsAny <IConfiguration>()))
                .Returns(t);
                AlertJobsQueueEntityService.Setup(x => x.GetByGuid(It.IsAny <Guid>())).Returns(data);
                AlertJobsQueueEntityService.Setup(x => x.UpdateEntry(It.IsAny <AlertJobsQueueEntityDataSave>(), It.IsAny <IConfiguration>()))
                .Returns(dataEntity);

                var AlertJobsQueueEntityObject = AlertJobsQueueEntityService.Object;
                var p1 = AlertJobsQueueEntityObject.GetAlertBatchItems();
                var p2 = AlertJobsQueueEntityObject.GetFilteredAlertEntities(filter);
                var p3 = AlertJobsQueueEntityObject.GetByGuid(guid);

                var p4 = AlertJobsQueueEntityObject.CheckWorkItemIDForEntity(wrkitemdata, config);
                var p5 = AlertJobsQueueEntityObject.UpdateEntry(datasave, config);


                Assert.IsAssignableFrom <object>(p1);
                Assert.IsAssignableFrom <IEnumerable <AlertJobFilterData> >(p2);
                Assert.IsAssignableFrom <AlertJobsQueueEntityData>(p3);
                Assert.IsAssignableFrom <object>(p4);
                Assert.IsAssignableFrom <AlertJobsQueueEntity>(p5);

                AlertJobsQueueEntityService.VerifyAll();

                AlertJobsQueueEntityObject.Dispose();
            }
            finally
            {
                AlertJobsQueueEntityService = null;
            }
        }
示例#4
0
        public AlertJobsQueueEntity UpdateEntry(AlertJobsQueueEntityDataSave updatedata, IConfiguration configuration)
        {
            bool DataValid = ValidateAlertEntityQueueDataForUpdate(updatedata, configuration);

            if (DataValid == false)
            {
                return(null);
            }

            AlertJobsQueueEntity thisEntityObject = updatedata.AlertJobsQueueEntity;

            var AlertJobsQueueEntityObject = _context.AlertJobsQueueEntity
                                             .FirstOrDefault(t => t.AlertJobsQueueEntityID == thisEntityObject.AlertJobsQueueEntityID);

            // check if object exists
            if (AlertJobsQueueEntityObject == null)
            {
                return(null);
            }
            // status can only be 26, "Open" fail otherwise
            if (!(AlertJobsQueueEntityObject.StatusID == 26))
            {
                return(null);
            }


            var thisUser = _context.AppUser
                           .FirstOrDefault(t => t.AppUserID.ToString() == thisEntityObject.UpdatedBy);

            if (thisUser == null)
            {
                return(null);
            }

            // Check the locks table
            // WorkUnitTypeID == 6 is BWQ, 3 is Investigations, 4 Alerts
            var locks = _context.RecordLocks
                        .Where(v => v.WorkUnitTypeID == 4 &&
                               v.IDFromWorkUnitsDBTable == thisEntityObject.AlertJobsQueueEntityID);

            foreach (var lockentry in locks)
            {
                if (lockentry.AppUserID != thisUser.AppUserID) // record lock found for another user
                {
                    return(null);
                }
                if (lockentry != null)
                {
                    _context.RecordLocks.Remove(lockentry); // clear locks before saving
                }
            }

            _context.Entry(AlertJobsQueueEntityObject).CurrentValues.SetValues(thisEntityObject); // Save Editorial data
            _context.SaveChanges();

            #region Human Review
            var workItemGuid = AlertJobsQueueEntityObject.WorkItemID.ToString();

            var QueueGuid = (from module in _context.ApplicationModules
                             where module.ModuleName == EditorialModules.Alerts
                             select module.QueueGuid).FirstOrDefault();

            var QueueGuidString = QueueGuid.ToString();

            var JsonData = JsonConvert.SerializeObject(thisEntityObject);

            var HRCreateRequest = Helper.BuildHRWorkItemRequest(EditorialModules.Alerts,
                                                                QueueGuidString, JsonData,
                                                                configuration, workItemGuid, HRRequestMode.Update);

            var GuidResult = Helper.PutHRWorkItem((WorkItemPutRequest)HRCreateRequest, updatedata.HRToken, configuration);

            #endregion

            return(thisEntityObject);
        }
        public IActionResult UpdateEntry([FromBody] AlertJobsQueueEntityDataSave updatedata)
        {
            AlertJobsQueueEntity thisentity = updatedata.AlertJobsQueueEntity;

            if (updatedata.HRToken == "")
            {
                return(BadRequest("Invalid Token"));
            }

            var targetObject = _context.AlertJobsQueueEntity
                               .FirstOrDefault(t => t.AlertJobsQueueEntityID == thisentity.AlertJobsQueueEntityID);

            if (targetObject == null)
            {
                return(NotFound());
            }

            var thisUser = _context.AppUser
                           .FirstOrDefault(t => t.AppUserID.ToString() == thisentity.UpdatedBy);

            if (thisUser == null)
            {
                return(BadRequest("Invalid User"));
            }

            // Check if HR is up
            var hruri      = _configuration.GetSection("HumanReview:uri").Value + "auth/token";
            var hrResponse = Common.ServerStatusBy(hruri);

            // We expect a 400 - Bad Request. Anything else specifically 404 Not Found, return an error
            if (hrResponse.StatusCode == 404)
            {
                { return(NotFound("Error: Human Review Service unavailable")); }
            }

            // WorkUnitTypeID == 6 is BWQ, 3 is Investigations, 4 Alerts
            var thislock = _context.RecordLocks
                           .Where(v => v.WorkUnitTypeID == 4 &&
                                  v.IDFromWorkUnitsDBTable == thisentity.AlertJobsQueueEntityID);

            foreach (var locks in thislock)
            {
                if (locks.AppUserID != thisUser.AppUserID) // record lock found for another user
                {
                    var lockedToUser = _context.AppUser.FirstOrDefault(u => u.AppUserID == locks.AppUserID);

                    return(BadRequest("Investigation locked to: " + lockedToUser.AppUserName));
                }

                if (locks != null) // no locks
                {
                    _context.RecordLocks.Remove(locks);
                }
            }

            _context.Entry(targetObject).CurrentValues.SetValues(thisentity); // Save Editorial data

            ReturnData ret;

            ret = _context.SaveData();

            if (ret.Message != "Success")
            {
                return(Json(ret));
            }

            #region Human Review
            try
            {
                var workItemGuid = targetObject.WorkItemID.ToString();
                var Modules      = _context.ApplicationModules;
                var QueueGuid    = (from mods in Modules
                                    where mods.ModuleName == "Alerts"
                                    select mods.QueueGuid).FirstOrDefault();

                var JsonData = JsonConvert.SerializeObject(thisentity);

                WorkItemPutRequest HRPutRequest = new WorkItemPutRequest();
                HRPutRequest.isActive             = true;
                HRPutRequest.name                 = "Updating WorkItem details for Alert Entity " + thisentity.AlertJobsQueueEntityID;
                HRPutRequest.description          = "Updating WorkItem details for Alert Entity " + thisentity.AlertJobsQueueEntityID;
                HRPutRequest.queueGuid            = QueueGuid;
                HRPutRequest.statusDetailTypeGuid = _configuration.GetSection("HumanReview:statusDetailTypeGuid_upd").Value;
                HRPutRequest.reviewTypeGuid       = _configuration.GetSection("HumanReview:reviewTypeGuid_upd").Value;
                HRPutRequest.formDefinitionJson   = JsonData;
                HRPutRequest.workitemGuid         = workItemGuid;

                var returnDataFromHR = Common.putWorkItemForEntityAsync(HRPutRequest, updatedata.HRToken, _configuration);
            }
            catch (Exception e)
            {
                // log error
                var logInfo = e.Message;
            }
            #endregion

            if (ret.Message == "Success")
            {
                return(Ok());
            }

            return(NotFound(ret));
        }