/// <summary> /// This method converts a POCO Clident API response object to a DB request object /// </summary> /// <param name="obj">The client API response object to convert</param> /// <returns>A converted DB request object</returns> public static MyAppRequest ToDBRequestModel(this MyClientAPIResponse obj, string requestId) { return(new MyAppRequest() { RequestId = requestId, Details = obj.Detail, Status = obj.Status }); }
/// <summary> /// This method updates details for a given request /// </summary> /// <param name="requestId">unique identifier for request</param> /// <param name="myClientAPIResponse">requestDetails</param> /// <returns>response object</returns> public void UpdateRequestStatus(string requestId, MyClientAPIResponse myClientAPIResponse) { //here we can check of this is valid request and if it exists in db var request = Repository.GetMyRequest(requestId); if (request == null) { //log and throw error here return; } Repository.SaveUpdateMyRequest(myClientAPIResponse.ToDBRequestModel(requestId)); }
public async Task <MyClientAPIResponse> CheckRequestStatus(IMyClient myClient, string requestId) { //this is json response object MyClientAPIResponse model = null; var request = new MyClientRequest() { RequestID = requestId }; //we can have a separate table for tracking purpose (Request, Response, RequestUrl, InsertedBy, UpdatedBy, InsertDate, UpdatedDate) //before calling service we can log API end point details in to db //(since this is exercise table is not created) //calling client var response = await myClient.CheckRequestStatus(request); //after response is received we can update certain columns in the table //(since this is exercise table is not created) //process response if (response.ResponseType == MyClientResponseTypes.BadRequest || response.ResponseType == MyClientResponseTypes.Error) { //this is the part where we can create error handler class and take care of errors //returning null back to business object would indicate that http request failed return(null); } else if (response.ResponseType == MyClientResponseTypes.Success) { //since client's end point does not exist - i hardcoded json response.RawResponse = "{'Status': 'COMPLETED', 'Detail': 'This is my details', 'Body': 'This is responsebody', 'LastActionDate': '05/05/03' }"; //getting data from response model = JsonConvert.DeserializeObject <MyClientAPIResponse>(response.RawResponse); } return(model); }
public IActionResult UpdateRequest(string requestId, [FromBody] MyClientAPIResponse myClientAPIResponse) { BusinessLogic.UpdateRequestStatus(requestId, myClientAPIResponse); return(NoContent()); }