Exemple #1
0
        public UploadResultViewModel Execute(IFormFile xmlFile)
        {
            UploadResultViewModel result = new UploadResultViewModel();

            try
            {
                if (!validExtensions.Any(e => e.Contains(xmlFile.ContentType)))
                {
                    throw new UploadedFileWrongFormatException(xmlFile.ContentType);
                }

                using (MemoryStream stream = new MemoryStream())
                {
                    xmlFile.CopyTo(stream);
                    result = UpdateStore(serializer.Deserialize(stream));
                    fileCopy.Create(stream, "store_update_", ".xml", "XML", "done_updates");
                }
            }
            catch (Exception ex)
            {
                logger.LogError(ex, ex.Message);
                result.Message = ex.Message;
                result.Succes  = false;
            }
            finally
            {
                string outcome = result.Succes ? "SUCCESS" : "FAILURE";
                logger.LogInformation("External Drugstore was supplied with" + outcome);
            }

            return(result);
        }
        public ActionResult UploadResult(int id)
        {
            var            subject      = db.Courses.Where(c => c.CourseId == id).SingleOrDefault();
            var            SubjectRel   = db.StudentRegSubjectRelations.Where(c => c.SubjectId == id).ToList();
            List <Student> StudentsList = new List <Student>();
            var            students     = db.Students.ToList();

            foreach (var item in students)
            {
                foreach (var item1 in SubjectRel)
                {
                    if (item.StudentId == item1.StudentId)
                    {
                        StudentsList.Add(item);
                    }
                }
            }
            var model = new UploadResultViewModel
            {
                Students       = StudentsList,
                StudentResult  = new StudentResult(),
                Course         = subject,
                Lookups        = db.Lookups.Where(c => c.Category == "STUDENT_GRADE").ToList(),
                StudentResults = db.StudentResults.ToList()
            };

            return(View(model));
        }
Exemple #3
0
        public IActionResult UploadResult(string transID)
        {
            ViewBag.DoctorName = HttpContext.Session.GetString(Globals.currentUserName);
            if (HttpContext.Session.GetString(Globals.currentDSPriK) == null || HttpContext.Session.GetString(Globals.currentDAPriK) == null)
            {
                return(RedirectToAction("Login"));
            }
            else if (HttpContext.Session.GetString(Globals.currentPSPubK) == null || HttpContext.Session.GetString(Globals.currentPAPubK) == null)
            {
                return(RedirectToAction("PatientLookUp"));
            }
            else
            {
                ViewBag.DoctorName = HttpContext.Session.GetString(Globals.currentUserName);
                Assets <PatientCredAssetData> userAsset = _bigChainDbService.GetPatientAssetFromID(HttpContext.Session.GetString(Globals.currentPPHN));
                var doctorSignPrivateKey         = HttpContext.Session.GetString(Globals.currentDSPriK);
                var doctorAgreePrivateKey        = HttpContext.Session.GetString(Globals.currentDAPriK);
                var doctorSignPublicKey          = EncryptionService.getSignPublicKeyStringFromPrivate(doctorSignPrivateKey);
                var patientSignPublicKey         = HttpContext.Session.GetString(Globals.currentPSPubK);
                PatientCredMetadata userMetadata = _bigChainDbService.GetMetadataFromAssetPublicKey <PatientCredMetadata>(userAsset.id, patientSignPublicKey);
                var patientInfo = userAsset.data.Data;
                patientInfo.FingerprintData = null;

                var testRequisition = _bigChainDbService.GetMetaDataAndAssetFromTransactionId <string, double>(transID);
                if (testRequisition.metadata.AccessList.Keys.Contains(doctorSignPublicKey))
                {
                    var hashedKey         = testRequisition.metadata.AccessList[doctorSignPublicKey];
                    var dataDecryptionKey = EncryptionService.getDecryptedEncryptionKey(hashedKey, doctorAgreePrivateKey);
                    var data  = EncryptionService.getDecryptedAssetData(testRequisition.data.Data, dataDecryptionKey);
                    var asset = JsonConvert.DeserializeObject <TestRequisitionAsset>(data);
                    asset.AttachedFile.Data = null;
                    var viewModel = new UploadResultViewModel()
                    {
                        TestData = new TestRequisitionFullData
                        {
                            assetData = asset,
                            Metadata  = testRequisition.metadata.data,
                            assetID   = testRequisition.id,
                            transID   = testRequisition.transID
                        },
                        PatientAsset    = patientInfo,
                        PatientMetadata = userMetadata
                    };
                    TempData["viewModel"] = JsonConvert.SerializeObject(viewModel);
                    return(View(viewModel));
                }
                else
                {
                    return(new EmptyResult());
                }
            }
        }
        public IActionResult Upload(IFormFile formFile, UploadResultViewModel model)
        {
            if (model == null)
            {
                model = new UploadResultViewModel();
            }

            //Check submitted file
            if (formFile != null && formFile.Length > 0)
            {
                using (var fileStream = formFile.OpenReadStream())

                {
                    using (Image <Rgba32> image = Image.Load(fileStream))
                    {
                        //Resize and create Base64 string
                        image.Mutate(x => x
                                     .Resize(80, 80));
                        model.Image = image.ToBase64String(ImageFormats.Png);
                    }
                }
            }
            else if (!string.IsNullOrEmpty(model.Image) && !string.IsNullOrEmpty(model.Address))
            {
                try
                {
                    //Submit base64 image to smartcontract
                    var script = NeoAPI.GenerateScript(_scriptHash, "add", new object[] { model.Address, model.Image });
                    var invoke = NeoAPI.TestInvokeScript(NeoAPI.Net.Test, script);

                    //Check result
                    if (invoke.result is byte[])
                    {
                        var textresult = System.Text.Encoding.ASCII.GetString((byte[])invoke.result);
                    }
                }
                catch { }

                //Get hash
                //string sha1hash = Sha1Hash(model.Address);
                //return RedirectToAction("Preview", new { id = sha1hash });

                return(View("Preview", new PreviewViewModel()
                {
                    Image = model.Image
                }));
            }

            return(View(model));
        }
 public ActionResult UploadResult(int id, UploadResultViewModel model)
 {
     for (int i = 0; i < model.Students.Count; i++)
     {
         Student Std = model.Students[i];
         Lookup  lup = model.Lookups[i];
         if (!db.StudentResults.Any(c => c.StudentId == Std.StudentId && c.CourseId == id))
         {
             var studentResult = new StudentResult
             {
                 StudentId = Std.StudentId,
                 Grade     = lup.LookupId,
                 CourseId  = id
             };
             db.StudentResults.Add(studentResult);
         }
     }
     db.SaveChanges();
     return(RedirectToAction("CoursesList1"));
 }
Exemple #6
0
        public async Task <IActionResult> GetUploadSearchResults(string url, [FromServices] ICompositeViewEngine viewEngine)
        {
            Upload.Models.Upload foundUpload = _dbContext.Uploads.Where(u => u.Url == url).FirstOrDefault();
            if (foundUpload != null)
            {
                UploadResultViewModel model = new UploadResultViewModel();

                model.Url           = foundUpload.Url;
                model.ContentType   = foundUpload.ContentType;
                model.ContentLength = foundUpload.ContentLength;
                model.DateUploaded  = foundUpload.DateUploaded;
                model.Downloads     = foundUpload.Downloads;
                model.DeleteKey     = foundUpload.DeleteKey;
                model.Username      = foundUpload.User?.Username;

                string renderedView = await RenderPartialViewToString(viewEngine, "~/Areas/Admin/Views/Admin/UploadResult.cshtml", model);

                return(Json(new { result = new { html = renderedView } }));
            }
            return(Json(new { error = new { message = "Upload does not exist" } }));
        }
        public ActionResult UploadResultsFile(int runId)
        {
            var model = new UploadResultViewModel();

            using (var context = new Entities())
            {
                var run = context.TestRuns.Find(runId);
                if (run.Status != "In progress")
                {
                    throw new UnauthorizedAccessException();
                }
                model.RunNumber     = runId;
                model.TestName      = context.TestSets.Find(run.TestSetId).Name;
                model.AlgorithmName = context.Algorithms.Find(run.AlgorithmId).Name;
                model.RepeatNumber  = (run.RunsNumber == null ||
                                       run.RunsNumber == "roc calculation") ? "roc calculation" //todo
                    : run.RunsNumber.ToString();
                model.RocCalc = run.RocCurveCalc == true ? "yes" : "no";
            }

            return(View(model));
        }
Exemple #8
0
        public UploadResultViewModel Upload(Repository repository,
                                            string siteName,
                                            MediaFolder folder,
                                            string name,
                                            Stream stream)
        {
            var result = new UploadResultViewModel();

            try
            {
                stream.Position = 0;
                var content = _mediaContentManager.Add(repository, folder, name, stream, true);
                result.state    = "SUCCESS";
                result.url      = content.Url;
                result.title    = content.FileName;
                result.original = content.FileName;
            }
            catch (Exception ex)
            {
                result.state = ex.Message;
                result.error = ex.Message;
            }
            return(result);
        }
Exemple #9
0
        public IActionResult UploadResult(UploadResultViewModel uploadResultViewModel)
        {
            // Get's the Doctor's information for current session
            ViewBag.DoctorName = HttpContext.Session.GetString(Globals.currentUserName);
            var oldViewModel = JsonConvert.DeserializeObject <UploadResultViewModel>(TempData["viewModel"] as string);

            uploadResultViewModel.TestData        = oldViewModel.TestData;
            uploadResultViewModel.PatientAsset    = oldViewModel.PatientAsset;
            uploadResultViewModel.PatientMetadata = oldViewModel.PatientMetadata;
            TempData["viewModel"] = JsonConvert.SerializeObject(uploadResultViewModel);

            if (!ModelState.IsValid)
            {
                return(View(uploadResultViewModel));
            }

            var doctorSignPrivateKey  = HttpContext.Session.GetString(Globals.currentDSPriK);
            var doctorAgreePrivateKey = HttpContext.Session.GetString(Globals.currentDAPriK);
            var doctorSignPublicKey   = EncryptionService.getSignPublicKeyStringFromPrivate(doctorSignPrivateKey);
            var patientSignPublicKey  = HttpContext.Session.GetString(Globals.currentPSPubK);

            var transID         = uploadResultViewModel.TestData.transID;
            var testRequisition = _bigChainDbService.GetMetaDataAndAssetFromTransactionId <string, double>(transID);

            //Check MLT has access to upload data
            if (testRequisition.metadata.AccessList.Keys.Contains(doctorSignPublicKey))
            {
                //Get hash key for requisition. We will use the same key for result
                var hashedKey         = testRequisition.metadata.AccessList[doctorSignPublicKey];
                var dataDecryptionKey = EncryptionService.getDecryptedEncryptionKey(hashedKey, doctorAgreePrivateKey);
                if (uploadResultViewModel.ResultFile != null)
                {
                    var    file             = uploadResultViewModel.ResultFile;
                    string base64FileString = "";

                    // Convert "file" into base64 string "base64FileString" to save into database
                    using (var ms = new MemoryStream())
                    {
                        file.CopyTo(ms);
                        var fileBytes = ms.ToArray();
                        base64FileString = Convert.ToBase64String(fileBytes);
                    }
                    //encrypt file data and save to ipfs
                    var encryptFileData = EncryptionService.getEncryptedAssetDataKey(base64FileString, dataDecryptionKey);
                    var cid             = _bigChainDbService.UploadTextToIPFS(encryptFileData);
                    var resultFile      = new FileData()
                    {
                        Data      = cid,
                        Type      = file.ContentType,
                        Extension = file.ContentType.Split('/').Last(),
                        Name      = file.FileName
                    };
                    //Encrypt the file using the same key
                    var encryptedFile = EncryptionService.getEncryptedAssetDataKey(JsonConvert.SerializeObject(resultFile), dataDecryptionKey);

                    var asset = new AssetSaved <TestResultAsset>
                    {
                        Data = new TestResultAsset
                        {
                            RequisitionAssetID = testRequisition.id,
                            EncryptedResult    = encryptedFile
                        },
                        RandomId = _random.Next(0, 100000),
                        Type     = AssetType.TestResult
                    };
                    //Access is managed by requisition asset
                    var metadata = new MetaDataSaved <double>();
                    metadata.AccessList = new Dictionary <string, string>();

                    _bigChainDbService.SendCreateTransferTransactionToDataBase(asset, metadata, doctorSignPrivateKey, patientSignPublicKey);
                    return(RedirectToAction("PatientRecords"));
                }
                else
                {
                    ModelState.AddModelError("", "Missing test result file.");
                    return(View(uploadResultViewModel));
                }
            }
            else
            {
                ModelState.AddModelError("", "You do not have permission to upload test result.");
                return(View(uploadResultViewModel));
            }
        }
        public ActionResult UploadResultsFile(UploadResultViewModel model)
        {
            var regex = new Regex("^([0-9]|[0-9][0-9]|[0-9][0-9][0-9]|[0-9][0-9][0-9][0-9]|[0-9][0-9][0-9][0-9][0-9])$");

            if (model.RocCalc == "yes" && !regex.IsMatch(model.RocClassNumber))
            {
                ModelState.AddModelError("CustomErrorRoc", "Incorrect class number.");
                return(View(model));
            }

            if (model.file == null)
            {
                ModelState.AddModelError("CustomError", "Please, attach test results file.");
                return(View(model));
            }
            else
            {
                using (var context = new Entities())
                {
                    var run = context.TestRuns.Find(model.RunNumber);

                    run.RocClassNumber = model.RocClassNumber;

                    var results = new TestResults()
                    {
                        AlgorithmId = context.Algorithms
                                      .Where(x => x.Name == model.AlgorithmName).ToArray()[0].Id,
                        TestRunId = model.RunNumber
                    };

                    var test = context.TestSets.Where(x => x.Name == model.TestName).ToArray()[0];
                    try
                    {
                        var analyzer = new TestResultsAnalyzer();
                        if (model.RocCalc == "no")
                        {
                            using (MemoryStream ms = new MemoryStream())
                            {
                                model.file.InputStream.CopyTo(ms);
                                ms.Seek(0, SeekOrigin.Begin);

                                var statistics = analyzer.CalcErrorPercentage
                                                     (test.ExpectedResults, ms, Convert.ToInt32(model.RepeatNumber));

                                results.CorrectRate = statistics.ToString("0.000");
                                context.TestResults.Add(results);

                                context.SaveChanges();

                                run.Status = "Results saved";

                                context.SaveChanges();

                                return(RedirectToAction("RunResults", new { resultsId = results.Id }));
                            }
                        }
                        else if (model.RocCalc == "yes")
                        {
                            using (MemoryStream ms = new MemoryStream())
                            {
                                model.file.InputStream.CopyTo(ms);
                                ms.Seek(0, SeekOrigin.Begin);
                                var rocCreator  = new RocCurveCreator();
                                var sbSensivity = new StringBuilder();
                                var sbSpecifity = new StringBuilder();

                                var statistics = rocCreator.GenerateRocCurveCoordinates(test.ExpectedResults, ms, model.RocClassNumber);

                                for (var i = 0; i < statistics.rocCoordinatesSensivity.Count(); i++)
                                {
                                    sbSensivity.Append(statistics.rocCoordinatesSensivity[i].ToString("0.000") + " ");
                                    sbSpecifity.Append(statistics.rocCoordinatesSpecifity[i].ToString("0.000") + " ");
                                }

                                var AUCrate = rocCreator.CalculateAUC(sbSpecifity.ToString(), sbSensivity.ToString());

                                results.RocCoordinatesSensiv = sbSensivity.ToString();
                                results.RocCoordinatesSpecif = sbSpecifity.ToString();
                                results.FN          = statistics.FalseNegativeNumber.Average().ToString("0.000");
                                results.FP          = statistics.FalsePositiveNumber.Average().ToString("0.000");
                                results.TN          = statistics.TrueNegativeNumber.Average().ToString("0.000");
                                results.TP          = statistics.TruePositiveNumber.Average().ToString("0.000");
                                results.CorrectRate = statistics.ErrorRate.ToString("0.000");
                                results.OtherInfo   = AUCrate.ToString("0.000");

                                context.TestResults.Add(results);

                                context.SaveChanges();

                                run.Status = "Results saved";

                                context.SaveChanges();

                                return(RedirectToAction("RunResultsRoc", new { resultsId = results.Id }));
                            }
                        }
                    }
                    catch (Exception)
                    {
                        ModelState.AddModelError("FileFormatException", "Error occured in results processing. Please check file format.");
                        return(View(model));
                    }
                }
            }

            ModelState.AddModelError("FileFormatException", "Server error.");
            return(View(model));
        }