コード例 #1
0
        public ActionResult Edit(int?id, int?patientId, int?y, int?m, int?d)
        {
            PatientFilesGroupViewModel viewModel = null;

            if (id != null)
            {
                viewModel = GetViewModel(
                    this.storage,
                    (from pf in this.db.PatientFileGroups where pf.Id == id select pf).First(),
                    this.DbUser.Id,
                    this.GetToLocalDateTimeConverter());
            }
            else
            {
                Debug.Assert(patientId != null, "patientId != null");
                viewModel = new PatientFilesGroupViewModel
                {
                    Id            = null,
                    PatientId     = patientId.Value,
                    FileGroupDate = null,
                    ReceiveDate   = DateTimeHelper.CreateDate(y, m, d) ?? this.GetPracticeLocalNow(),
                };
            }

            viewModel.NewGuid = Guid.NewGuid();

            this.ViewBag.FilesStatusGetter = (FilesStatusGetter)this.GetFilesStatus;

            return(this.View("Edit", viewModel));
        }
コード例 #2
0
        private static PatientFilesGroupViewModel GetViewModel(IBlobStorageManager storage, PatientFileGroup dbFileGroup, int dbUserId, Func <DateTime, DateTime> toLocal)
        {
            if (dbFileGroup == null)
            {
                return(new PatientFilesGroupViewModel());
            }

            var result = new PatientFilesGroupViewModel
            {
                Id            = dbFileGroup.Id,
                PatientId     = dbFileGroup.PatientId,
                CreatedOn     = dbFileGroup.CreatedOn,
                Title         = dbFileGroup.GroupTitle,
                Notes         = dbFileGroup.GroupNotes,
                FileGroupDate = toLocal(dbFileGroup.FileGroupDate),
                ReceiveDate   = toLocal(dbFileGroup.ReceiveDate),
            };

            result.Files.AddRange(dbFileGroup.PatientFiles.Select(dbFile => new PatientFileViewModel
            {
                Id             = dbFile.Id,
                FileTitle      = dbFile.Title,
                ContainerName  = dbFile.FileMetadata.ContainerName,
                SourceFileName = dbFile.FileMetadata.SourceFileName,
                BlobName       = dbFile.FileMetadata.BlobName,
                ExpirationDate = dbFile.FileMetadata.ExpirationDate,
                MetadataId     = dbFile.FileMetadataId,
            }));

            FillFileLengths(storage, result, dbUserId);

            return(result);
        }
コード例 #3
0
        private static void FillFileLengths(IBlobStorageManager storage, PatientFilesGroupViewModel viewModel, int?dbUserId)
        {
            // reading file sizes from the storage
            // todo: use db to get file size (faster)
            foreach (var eachFile in viewModel.Files)
            {
                var fullStoragePath = string.Format("{0}\\{1}", eachFile.ContainerName, eachFile.BlobName);
                var mustStartWith   = string.Format("patient-files-{0}\\", dbUserId);
                if (!fullStoragePath.StartsWith(mustStartWith))
                {
                    continue;
                }

                eachFile.FileLength = storage.GetFileLength(eachFile.ContainerName, eachFile.BlobName);
            }
        }
コード例 #4
0
        private void FillMissingInfos(PatientFilesGroupViewModel formModel, IObjectSet <FileMetadata> dbFileMetadataSet)
        {
            var ids          = formModel.Files.Select(f => f.MetadataId).ToArray();
            var filesInGroup = dbFileMetadataSet
                               .Where(f => ids.Contains(f.Id))
                               .ToDictionary(f => f.Id);

            foreach (var eachModelFile in formModel.Files)
            {
                FileMetadata fileMetadata;
                if (filesInGroup.TryGetValue(eachModelFile.MetadataId, out fileMetadata))
                {
                    eachModelFile.BlobName       = fileMetadata.BlobName;
                    eachModelFile.ContainerName  = fileMetadata.ContainerName;
                    eachModelFile.ExpirationDate = fileMetadata.ExpirationDate;
                    eachModelFile.SourceFileName = fileMetadata.SourceFileName;
                }
            }
        }