public async Task<HttpResponseMessage> UploadFileMultipart()
        {
            //StringBuilder lretstring = new StringBuilder();
            var response = new Dictionary<string, object>();
            UploadJobAttachmentResponse lResponse = new UploadJobAttachmentResponse();
            ErrorResponse error = new ErrorResponse();
            // Check if the request contains multipart/form-data.
            if (!Request.Content.IsMimeMultipartContent())
            {
                //lretstring.Append("Not MultipartContent");
                error.ErrorCode = HttpStatusCode.UnsupportedMediaType;
                error.ErrorMessage = "Failure";
                response.Add("ErrorResponse", error);
                // response.Add("ResultResponse", lretstring.ToString());
                return Request.CreateResponse(HttpStatusCode.BadRequest, response);
            }
            else if (Request.Headers == null)
            {
                // lretstring.Append("Header is null");
                error.ErrorCode = HttpStatusCode.BadRequest;
                error.ErrorMessage = "Failure";
                response.Add("ErrorResponse", error);
                //  response.Add("ResultResponse", lretstring.ToString());
                return Request.CreateResponse(HttpStatusCode.BadRequest, response);
            }
            string SessionID = string.Empty;
            string JobGUID = string.Empty;
            if (HttpContext.Current.Request.Form != null && HttpContext.Current.Request.Form.Count > 0)
            {
                // lretstring.Append("Inside Request Form");
                SessionID = HttpContext.Current.Request.Form["SessionGUID"];
                JobGUID = HttpContext.Current.Request.Form["JobGUID"];
            }
            if (_IJMServer.ValidateUser(SessionID))
            {
                // lretstring.Append("Valid User");
                string lFilesRoot = _IJMServer.GetUploadFileAttachmetsPath(JobGUID, SessionID);
                if (null == lFilesRoot)
                {
                    // lretstring.Append("Fileroot is null");
                    error.ErrorCode = HttpStatusCode.InternalServerError;
                    error.ErrorMessage = "Failure";
                    response.Add("ErrorResponse", error);
                    // response.Add("ResultResponse", lretstring.ToString());
                    return Request.CreateResponse(HttpStatusCode.InternalServerError, response);
                }
                else
                {
                    // lretstring.Append("Inside else");
                    var lProvider = new MultipartFormDataStreamProvider(lFilesRoot);
                    try
                    {
                        // Read the form data.
                        await Request.Content.ReadAsMultipartAsync(lProvider);

                        foreach (MultipartFileData file in lProvider.FileData)
                        {
                            string lDestFilePath = lFilesRoot + "/" + file.Headers.ContentDisposition.FileName;
                            if (File.Exists(lDestFilePath))
                            {
                                File.Delete(lDestFilePath);
                            }
                            File.Move(file.LocalFileName, lDestFilePath);
                            //This is all files
                            Logger.Debug("Request File Name: " + file.Headers.ContentDisposition.FileName);
                            Logger.Debug("Server file path: " + file.LocalFileName);
                        }
                        response.Add("JobAttachmentUpload", lResponse);
                        // response.Add("ResultResponse", lretstring.ToString());
                        Logger.Debug("Response: " + new JavaScriptSerializer().Serialize(lResponse));
                        return Request.CreateResponse(HttpStatusCode.OK, response);
                    }
                    catch (System.Exception ex)
                    {
                        //lretstring.Append("Catch");
                        Logger.Error(ex.Message);
                        error.ErrorCode = HttpStatusCode.InternalServerError;
                        error.ErrorMessage = "Failure";
                        response.Add("ErrorResponse", error);
                        // response.Add("ResultResponse", lretstring.ToString());
                        return Request.CreateResponse(HttpStatusCode.InternalServerError, response);
                    }
                }
            }
            else
            {
                error.ErrorCode = HttpStatusCode.Forbidden;
                error.ErrorMessage = "Session has expired, please login again";
                response.Add("ErrorResponse", error);
                return Request.CreateResponse(HttpStatusCode.Forbidden, response);
            }
            //string root = AppDomain.CurrentDomain.BaseDirectory + "formdata";
            //var provider = new MultipartFormDataStreamProvider(root);

            //try
            //{
            //    // Read the form data.
            //    await Request.Content.ReadAsMultipartAsync(provider);

            //    foreach (var key in provider.FormData.AllKeys)
            //    {
            //        //This should be the JSON that contains the details about the file(s) uploaded
            //        var val = provider.FormData.GetValues(key);
            //        Trace.WriteLine(string.Format("{0}: {1}", key, val));
            //    }
            //    foreach (MultipartFileData file in provider.FileData)
            //    {
            //        //This is all files
            //        Trace.WriteLine(file.Headers.ContentDisposition.FileName);
            //        Trace.WriteLine("Server file path: " + file.LocalFileName);    
            //    }
            //    return Request.CreateResponse(HttpStatusCode.OK);
            //}
            //catch (System.Exception e)
            //{
            //    return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
            //}
        }
 public HttpResponseMessage UploadJobAttachment([FromBody]UploadJobAttachmentRequest jobAttachmentRequest)
 {
     Logger.Debug("Inside JM Controller- UploadJobAttachment");
     Logger.Debug("Request: " + new JavaScriptSerializer().Serialize(jobAttachmentRequest));
     UploadJobAttachmentResponse lResponse = new UploadJobAttachmentResponse();
     ErrorResponse error = new ErrorResponse();
     var response = new Dictionary<string, object>();
     try
     {
         string SessionID = Guid.Empty.ToString();
         if (Request.Headers != null)
         {
             SessionID = Request.Headers.LastOrDefault().Value.First();
             Logger.Debug("SessionID: " + SessionID.ToString());
             if (_IJMServer.ValidateUser(SessionID))
             {
                 Guid UserGUID = _IJMServer.GetUserGUID(SessionID);
                 lResponse = _IJMServer.UploadJobAttachment(jobAttachmentRequest, UserGUID);
                 if (lResponse != null)
                 {
                     response.Add("JobAttachmentUpload", lResponse);
                     Logger.Debug("Response: " + new JavaScriptSerializer().Serialize(lResponse));
                     return Request.CreateResponse(HttpStatusCode.OK, response);
                 }
                 else
                 {
                     error.ErrorCode = HttpStatusCode.BadRequest;
                     error.ErrorMessage = "Failure";
                     response.Add("ErrorResponse", error);
                     return Request.CreateResponse(HttpStatusCode.BadRequest, response);
                 }
             }
             else
             {
                 error.ErrorCode = HttpStatusCode.Forbidden;
                 error.ErrorMessage = "Session has expired, please login again";
                 response.Add("ErrorResponse", error);
                 return Request.CreateResponse(HttpStatusCode.Forbidden, response);
             }
         }
         else
         {
             error.ErrorCode = HttpStatusCode.BadRequest;
             error.ErrorMessage = "Failure";
             response.Add("ErrorResponse", error);
             return Request.CreateResponse(HttpStatusCode.BadRequest, response);
         }
     }
     catch (Exception ex)
     {
         Logger.Error(ex.Message);
         error.ErrorCode = HttpStatusCode.InternalServerError;
         error.ErrorMessage = "Failure";
         response.Add("ErrorResponse", error);
         return Request.CreateResponse(HttpStatusCode.InternalServerError, response);
     }
 }