/// <summary> /// This method is used to update an existing item in the queue /// </summary> /// <param name="id">ID of the queue item to be updated</param> /// <param name="request">Request that contains the new queue item information</param> /// <returns>Response which indicates success or failure</returns> public UpdateQueueItemResponse UpdateQueueItem(int id, UpdateQueueItemRequest request) { UpdateQueueItemResponse response = new UpdateQueueItemResponse(); try { response = (UpdateQueueItemResponse)request.CheckValidation(response); if (response.Status == HttpStatusCode.BadRequest) { return(response); } QueueDataLayer dataLayer = new QueueDataLayer(); response.Result = dataLayer.UpdateQueueItem(id, request); response.Status = HttpStatusCode.OK; } catch (NotFoundException ex) { s_logger.Warn(ex, "Unable to update queue item"); response.Status = HttpStatusCode.NotFound; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.NotFound, "Unable to update queue item")); } catch (Exception ex) { s_logger.Error(ex, "Unable to update queue item"); response.Status = HttpStatusCode.InternalServerError; response.StatusMessages.Add(new StatusMessage(HttpStatusCode.InternalServerError, "Unable to update queue item")); } return(response); }
/// <summary> /// Edits the queue details in the database. /// </summary> /// <param name="id"></param> /// <param name="request"></param> /// <returns></returns> public bool UpdateQueueItem(int id, UpdateQueueItemRequest request) { using (helpdesksystemContext context = new helpdesksystemContext()) { Queueitem item = context.Queueitem.FirstOrDefault(p => p.ItemId == id); if (item == null) { throw new NotFoundException($"Unable to find queue item with id [{id}]"); } Topic topic = context.Topic.FirstOrDefault(t => t.TopicId == request.TopicID); // Check that the topic the queue item wants to update to actually exists. if (topic == null) { throw new NotFoundException($"Unable to find topic with id [{request.TopicID}]"); } item.TopicId = request.TopicID; item.Description = request.Description; context.SaveChanges(); return(true); } }
public IActionResult UpdateUpdateQueueItem([FromRoute] int id, [FromBody] UpdateQueueItemRequest request) { try { var facade = new QueueFacade(); var response = facade.UpdateQueueItem(id, request); switch (response.Status) { case HttpStatusCode.OK: return(Ok()); case HttpStatusCode.BadRequest: return(BadRequest(BuildBadRequestMessage(response))); case HttpStatusCode.NotFound: return(NotFound()); case HttpStatusCode.InternalServerError: return(StatusCode(StatusCodes.Status500InternalServerError)); } s_logger.Fatal("This code should be unreachable, unknown result has occured."); } catch (Exception ex) { s_logger.Error(ex, "Unable to update queue item."); } return(StatusCode(StatusCodes.Status500InternalServerError)); }
public void UpdateQueueItem() { // Fill empty string parameters "" with auto-generated string. testEntityFactory.PopulateEmptyStrings = true; // Add test helpdesk. TestDataHelpdesk helpdeskData = testEntityFactory.AddHelpdesk(); // Check that helpdesk was created successfully. Assert.AreEqual(HttpStatusCode.OK, helpdeskData.Response.Status); Assert.IsTrue(helpdeskData.Response.HelpdeskID > 0); // Create a unit. ID provided is 0, which will indicates creation of new helpdesk. List <string> topics = new List <string>(new string[] { "Layouts", "Lifecycle" }); TestDataUnit unitData = testEntityFactory.AddUpdateUnit(0, helpdeskData.Response.HelpdeskID, "", "", false, topics); // Check that unit was created successfully. Assert.AreEqual(HttpStatusCode.OK, unitData.Response.Status); Assert.IsTrue(unitData.Response.UnitID > 0); // Get topics for the unit that was just created. TopicsFacade topicsFacade = new TopicsFacade(); GetTopicsByUnitIDResponse topicResponse = topicsFacade.GetTopicsByUnitID(unitData.Response.UnitID); // Check that there are two units in the response (Layouts, Lifecycle). Assert.IsTrue(topicResponse.Topics.Count() == 3); // Add test queue item, pass in topic [0]. TestDataQueue queueData = testEntityFactory.AddQueueItem(null, topicResponse.Topics[0].TopicId); // Check that queue item was created successfully. Assert.AreEqual(HttpStatusCode.OK, queueData.Response.Status); // Create request to alter queue item. var queueUpdateRequest = new UpdateQueueItemRequest { TopicID = topicResponse.Topics[0].TopicId, Description = "UpdateQueueItem Test" }; // Update the queue item UpdateQueueItemResponse updateQueueResponse = testEntityFactory.QueueFacade.UpdateQueueItem(queueData.Response.ItemId, queueUpdateRequest); // Check that queue item was updated successfully. Assert.AreEqual(HttpStatusCode.OK, updateQueueResponse.Status); // Do another request to change to another topic queueUpdateRequest = new UpdateQueueItemRequest { TopicID = topicResponse.Topics[1].TopicId, Description = "UpdateQueueItem Test 2" }; // Update the queue item again updateQueueResponse = testEntityFactory.QueueFacade.UpdateQueueItem(queueData.Response.ItemId, queueUpdateRequest); // Check that queue item was updated successfully. Assert.AreEqual(HttpStatusCode.OK, updateQueueResponse.Status); }
public void UpdateQueueItemDoesNotExist() { // Invalid topic id shouldn't matter, as QueueID will be assessed first in the data layer. var request = new UpdateQueueItemRequest { TopicID = -1 }; var queueFacade = new QueueFacade(); var response = queueFacade.UpdateQueueItem(-1, request); // Check that a request containing both TimeHelped and TimeRemoved is rejected. Assert.AreEqual(HttpStatusCode.NotFound, response.Status); }