Ejemplo n.º 1
0
 public async Task <IHttpActionResult> PostFEExecution(FEExecution fEExecution)
 {
     if (!ModelState.IsValid)
     {
         return(BadRequest(ModelState));
     }
     using (var db = new FEMainDBContext()) {
         db.FEExecutions.Add(fEExecution);
         await db.SaveChangesAsync();
     }
     return(CreatedAtRoute("DefaultApi", new { id = fEExecution.ID }, fEExecution));
 }
        public async Task <IHttpActionResult> SubmitResults(Results theResults)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }
            int baseSearchRequestID = theResults.ID;

            // Find the corresponding Search Request
            var response = await TheSReqController.GetFESearchRequest(baseSearchRequestID);

            if (response.GetType() == typeof(OkNegotiatedContentResult <FESearchRequest>))
            {
                FESearchRequest searchRequest = ((OkNegotiatedContentResult <FESearchRequest>)response).Content;
                if (searchRequest.TheStatus != Status.Executing)
                {
                    return(Ok());
                }

                // Create the Execution object concerning the execution that was just completed, with the returned Results
                FEExecution newExecution = new FEExecution(baseSearchRequestID, searchRequest.LastExecutionCreatedOn, DateTime.Now);
                newExecution.TheResults = theResults;
                response = await TheExecsController.PostFEExecution(newExecution);

                if (response.GetType() == typeof(CreatedAtRouteNegotiatedContentResult <FEExecution>))
                {
                    FEExecution createdExecution = ((CreatedAtRouteNegotiatedContentResult <FEExecution>)response).Content;

                    // Update the Search Request
                    searchRequest.TheStatus         = Status.Fulfilled;
                    searchRequest.LatestExecutionID = createdExecution.ID;
                    await TheSReqController.UpdateFESearchRequest(searchRequest.ID, searchRequest);

                    return(Ok());
                }
                else
                {
                    return(InternalServerError());
                }
            }
            else
            {
                return(InternalServerError());
            }
        }