public CurveFile Transform(string jsonMessages, string AssayName)
        {
            var delim = new[] { '"' };

            jsonMessages = Regex.Unescape(jsonMessages);
            jsonMessages = jsonMessages.TrimEnd(delim).TrimStart(delim);

            AssayName = Regex.Unescape(AssayName);
            AssayName = AssayName.TrimEnd(delim).TrimStart(delim);

            dynamic data = JObject.Parse(jsonMessages);

            long AssayDBID = 0;

            using (var repo = new AssayRepository())
            {
                AssayDBID = repo.GetAssayID(AssayName);
            }

            CurveFile toReturn = JsonConvert.DeserializeObject <CurveFile>(jsonMessages);

            toReturn.AssayDBID = AssayDBID;

            //Extract extension from file name
            ExtractExtensionService helper = new ExtractExtensionService();

            string[] fullFileName = new string[2];
            fullFileName = helper.ExtractExt(toReturn);

            return(toReturn);
        }
        public string[] ExtractExt(CurveFile curveObject)
        {
            string extension = Path.GetExtension(curveObject.FullFileName);
            string fileName  = Path.GetFileNameWithoutExtension(curveObject.FullFileName);

            string[] toReturn = new string[2];
            toReturn[0] = fileName;
            toReturn[1] = extension;

            return(toReturn);
        }
        public string Post()
        {
            FileUploadService     service     = new FileUploadService();
            FileValidationService fileService = new FileValidationService();

            CurveFile[] toAdd       = new CurveFile[HttpContext.Current.Request.Files.Count];
            var         j           = 0;
            ArrayList   InvalidFile = new ArrayList();

            for (var i = 0; i < HttpContext.Current.Request.Files.Count; i++)
            {
                HttpPostedFile file = HttpContext.Current.Request.Files.Get(i);

                using (var binaryReader = new BinaryReader(file.InputStream))
                {
                    var fileBlob     = binaryReader.ReadBytes(file.ContentLength);
                    var fileJsonMeta = HttpContext.Current.Request[$"file-metadata-{i}"];
                    var AssayName    = HttpContext.Current.Request[$"file-assayname-{i}"];


                    //sets up curve object attributes
                    var curveFile = service.Transform(fileJsonMeta, AssayName);
                    curveFile.Data            = fileBlob;
                    curveFile.SoftwareVersion = service.getVersionNum("SoftwareVersion", curveFile.Data, curveFile.FullFileName);
                    curveFile.AssayVersion    = service.getVersionNum("AssayVersion", curveFile.Data, curveFile.FullFileName);


                    var result = fileService.ValidateFile(curveFile.Data, curveFile.FullFileName, AssayName);

                    //file validation
                    if (result.Indicator)
                    {
                        toAdd[j] = curveFile;
                        j++;
                    }
                    else
                    {
                        InvalidFile.Add(curveFile.FullFileName + result.message);
                    }
                }
            }
            using (var repo = new CurveFilesRepository())
            {
                repo.AddCurveFile(toAdd);
            }
            //Httpresponse message with invalid files
            if (InvalidFile.Count != 0)
            {
                return(JsonConvert.SerializeObject(InvalidFile));
            }
            return(JsonConvert.SerializeObject("Successful"));
        }