Example #1
0
        public IActionResult Post([FromBody] JsonNode tree, bool authorized)
        {
            if (tree == null || !authorized)
            {
                return(BadRequest());
            }

            // gather variables
            var fileSeparator = _fileManagementServices.GetFileSeparator();

            // get file nodes (by processing json and decrypting encrypted fields)
            var fileNodes = FileNode.ExtractFromJsonNode(_encryptionServices, tree, fileSeparator);

            // save files to local disk
            string treatmentDate = DateTime.UtcNow.ToString("yyyyMMdd-Hmmss");

            _fileManagementServices.StoreFilesAsync(fileNodes, treatmentDate);

            //convert FileNodes to DbFileNodes
            var dbFileNodes = fileNodes.Select(x => x.ToDbFileNode(treatmentDate, _fileManagementServices.GetFileSeparator()));

            //inject treatment date folder (see how the above call _fileManagementServices.StoreFilesAsync works)
            dbFileNodes.Select(x => x.InjectTreatmentDateToRelativePath(treatmentDate, _fileManagementServices.GetFileSeparator()));

            // persist files in db
            if (_persistFiles)
            {
                _persistenceServices.Insert(dbFileNodes);
            }

            return(Ok());
        }