示例#1
0
 /// <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
     });
 }
示例#2
0
        /// <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));
        }
示例#3
0
        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);
        }
示例#4
0
        public IActionResult UpdateRequest(string requestId, [FromBody] MyClientAPIResponse myClientAPIResponse)
        {
            BusinessLogic.UpdateRequestStatus(requestId, myClientAPIResponse);

            return(NoContent());
        }