public ClsResultFile GetResultFile(ClsGetResultFile GetResultFile) { ICLabs.ModelV1.Repository repository = new ICLabs.ModelV1.Repository(); ClsResultFile result; try { result = repository.GetResultFile(GetResultFile); } catch (Exception e) { throw new Exception("400|" + e.Message, e); } return(result); }
public HttpResponseMessage GetResultFile([FromUri] ClsGetResultFile ResultStatus) { string str = string.Empty; string errMsg = string.Empty, errData = string.Empty; var errorsList = new JObject(); JArray errors = new JArray(); MemoryStream responseStream = new MemoryStream(); try { ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal; var appId = principal.Claims.Where(c => c.Type == "clientId").Single().Value; var orgId = principal.Claims.Where(c => c.Type == "orgId").Single().Value; if (ResultStatus == null) { errorsList["Error"] = "Order Id, Location Id, Test and Result Name is required"; errors.Add(errorsList); this.response = this.Request.CreateResponse(HttpStatusCode.OK, GetResponseBody("error", errors, "info")); } else { if (ModelState.IsValid) { ResultStatus.appId = appId; //ResultStatus.appId = "ZOHO"; ResultStatus.remoteIP = Request.GetClientIpAddress(); ClsResultFile resultFile = this.iICLabsService.GetResultFile(ResultStatus); if (resultFile.fileName == null) { errorsList["Warning"] = "No record found for orderId=" + ResultStatus.orderId + " and locationId=" + ResultStatus.locationId + " and test=" + ResultStatus.test + " and resultName=" + ResultStatus.resultName; errors.Add(errorsList); this.response = Request.CreateResponse(HttpStatusCode.OK, GetResponseBody("error", errors, "info")); } else { //byte[] buffer = result; responseStream.Write(resultFile.resultBinaryStream, 0, resultFile.resultBinaryStream.Length); //this.response = Request.CreateResponse(HttpStatusCode.OK, result); HttpResponseMessage response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK; response.Content = new ByteArrayContent(responseStream.ToArray()); response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment"); response.Content.Headers.ContentDisposition.FileName = (resultFile.fileName == null) ? "RESULT_FILE" : resultFile.fileName; response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream"); response.Content.Headers.ContentLength = resultFile.resultBinaryStream.Length; return(response); } } else if (!ModelState.IsValid) { foreach (var state in this.ModelState) { foreach (var error in state.Value.Errors) { errMsg = error.ErrorMessage; errData = state.Key.ToString(); string result = errMsg + "|" + errData.Replace("Vendor.", string.Empty); string[] splitValues = result.Split('|'); for (int i = 0; i < splitValues.Count(); i++) { errorsList[splitValues[i].ToString()] = splitValues[i + 1].ToString(); i++; errors.Add(errorsList); errorsList = new JObject(); } } } this.response = Request.CreateResponse(HttpStatusCode.OK, GetResponseBody("error", errors, "info")); } } } catch (Exception e) { errorsList["Error"] = e.Message; errors.Add(errorsList); return(Request.CreateResponse(HttpStatusCode.BadRequest, GetResponseBody("error", errors, "info"))); } return(this.response); }