private bool ValidateNewsEntityData(NewsDataSave newsdata, IConfiguration configuration) { var HRToken = new JwtSecurityToken(newsdata.HRToken); if (Helper.TokenValid(HRToken) == false) { return(false); } if (newsdata.FeedItemQueue == null || newsdata.WorkItemGuid == 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); }
public IActionResult Update([FromBody] NewsDataSave newsdata) { var result = _repository.UpdateNewsEntity(newsdata, _configuration); if (result == null) { return(Helper.CheckResult(result, false, true)); } else { return(Helper.CheckResult(result)); } }
public IActionResult UpdateEntry([FromBody] NewsDataSave objupdate) { var HRtoken = objupdate.HRToken; var FeedItemQueueObject = objupdate.FeedItemQueue; var WorkItemGuid = objupdate.WorkItemGuid; var Message = ""; // 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")); } } if (HRtoken == null || FeedItemQueueObject == null || WorkItemGuid == null) { Message = "Invalid Request"; return(BadRequest(Message)); } var MappingEntry = _context.HRWorkItemDataMap .Where(t => t.WorkItemID == WorkItemGuid && t.WorkUnitTypeID == 5) .FirstOrDefault(); /* * 3 Investigation * 4 Alerts * 5 News Queue * 6 BWQ */ if (MappingEntry == null) { Message = "Work Item not found"; return(BadRequest(Message)); } var FeedItemQueueEntry = _NewsDBcontext.FeedItemQueue .Where(t => t.id == FeedItemQueueObject.id) .FirstOrDefault(); if (FeedItemQueueEntry == null) { Message = "Item entry does not exist"; return(BadRequest(Message)); } var AppUserId = FeedItemQueueEntry.stateChangedRecipient; // the person that sent this update request //Check locks var NewsLockEntry = _NewsDBcontext.FeedItemQueueLocks .Where(t => t.fkItemID == FeedItemQueueObject.id && t.LockedByRecipientID == AppUserId) .FirstOrDefault(); if (NewsLockEntry != null) // lock exists { var AppUser = _context.AppUser .Where(u => u.AppUserID == AppUserId) .FirstOrDefault(); if (NewsLockEntry.LockedByRecipientID == AppUserId) // locked to someone else { // locked to current user, remove the lock _NewsDBcontext.FeedItemQueueLocks.Remove(NewsLockEntry); } else { if (AppUser == null) { Message = "Record locked by " + AppUserId; } else { Message = "Record locked by " + AppUser.AppUserName; } return(BadRequest(Message)); } } // Update News if everything looks ok _NewsDBcontext.Entry(FeedItemQueueEntry).CurrentValues.SetValues(FeedItemQueueObject); try { _NewsDBcontext.SaveChanges(); } catch (Exception e) { var logInfo = e.Message; { return(BadRequest(e.Message)); } } #region Update HR Data try { var Modules = _context.ApplicationModules; var QueueGuid = (from mods in Modules where mods.ModuleName == "News Queue" select mods.QueueGuid).FirstOrDefault(); var JsonData = JsonConvert.SerializeObject(FeedItemQueueObject); WorkItemPutRequest HRPutRequest = new WorkItemPutRequest(); HRPutRequest.isActive = true; HRPutRequest.name = "Updating Entries for News Entry " + FeedItemQueueObject.id; HRPutRequest.description = "Updating Entries for News Entry " + FeedItemQueueObject.id; 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.ToString(); var returnDataFromHR = Common.putWorkItemForEntityAsync(HRPutRequest, HRtoken, _configuration); if (returnDataFromHR.isSuccessful != true) { // TODO: log this error { return(BadRequest("Unable to save HR data")); } } } catch (Exception e) { // log error var logInfo = e.Message; { return(BadRequest(e.Message)); } } #endregion return(Ok()); }
/// <summary> /// Updates the status for a news Entity entry /// this routine also updates the WorkItem record in Human Review /// </summary> /// <param name="newsdata"></param> /// <param name="configuration"></param> /// <returns></returns> public object UpdateNewsEntity(NewsDataSave newsdata, IConfiguration configuration) { bool DataValid = ValidateNewsEntityData(newsdata, configuration); if (DataValid == false) { return(null); } string HRtoken = newsdata.HRToken; FeedItemQueue FeedItemQueueObject = newsdata.FeedItemQueue; System.Guid WorkItemGuid = newsdata.WorkItemGuid; /* * 3 Investigation * 4 Alerts * 5 News Queue * 6 BWQ */ var MappingEntry = _context.HRWorkItemDataMap.Where(t => t.WorkItemID == WorkItemGuid && t.WorkUnitTypeID == 5) // 5 = News Queue .FirstOrDefault(); if (MappingEntry == null) { return(null); } var FeedItemQueueEntry = _newsfeedcontext.FeedItemQueue.Where(t => t.id == FeedItemQueueObject.id).FirstOrDefault(); // Check if entry exists if (FeedItemQueueEntry == null) { return(null); } // Check the state, it should only be NULL or 0 if (!(FeedItemQueueEntry.state == null || FeedItemQueueEntry.state == 0)) { return(null); } var AppUserId = FeedItemQueueEntry.stateChangedRecipient; // the user that sent this update request, according to the newsfeed entry table [FeedItemQueue] //Check locks var NewsLockEntry = _newsfeedcontext.FeedItemQueueLocks //.Where(t => t.fkItemID == FeedItemQueueObject.id && t.LockedByRecipientID == AppUserId).FirstOrDefault(); .Where(t => t.fkItemID == FeedItemQueueObject.id).FirstOrDefault(); if (NewsLockEntry != null) // lock exists { var AppUser = _context.AppUser.Where(u => u.AppUserID == AppUserId).FirstOrDefault(); if (NewsLockEntry.LockedByRecipientID == AppUserId) // entry is locked to this user { // locked to current user, remove the lock _newsfeedcontext.FeedItemQueueLocks.Remove(NewsLockEntry); } else // locked to someone else { return(null); } } // Update News if everything looks ok _newsfeedcontext.Entry(FeedItemQueueEntry).CurrentValues.SetValues(FeedItemQueueObject); _newsfeedcontext.SaveChanges(); // Human Review routines var QueueGuid = (from module in _context.ApplicationModules where module.ModuleName == EditorialModules.News select module.QueueGuid).FirstOrDefault(); var QueueGuidString = QueueGuid.ToString(); var JsonData = JsonConvert.SerializeObject(FeedItemQueueObject); var HRCreateRequest = Helper.BuildHRWorkItemRequest(EditorialModules.News, QueueGuidString, JsonData, configuration, WorkItemGuid.ToString(), HRRequestMode.Update); var GuidResult = Helper.PutHRWorkItem((WorkItemPutRequest)HRCreateRequest, HRtoken, configuration); return(FeedItemQueueObject); }