public RecordViewModel(Record record, IFileSafe fileSafe, IFileIdGenerator fileIdGenerator)
        {
            _fileSafe        = fileSafe;
            _fileIdGenerator = fileIdGenerator;
            Id              = record.Header.Id;
            Name            = record.Header.Name;
            Tags            = record.Header.Tags;
            PasswordRecords = new ObservableCollection <PasswordRecordViewModel>();
            FileRecords     = new ObservableCollection <FileRecordViewModel>();

            PasswordRecords.CollectionChanged += (sender, args) => { IsRecordModified = true; };
            FileRecords.CollectionChanged     += (sender, args) => { IsRecordModified = true; };

            foreach (var passwordRecord in record.PasswordRecords)
            {
                AddNewPasswordRecord(passwordRecord.Name, passwordRecord.Value);
            }

            foreach (var fileRecord in record.FileRecords)
            {
                var fileRecordViewModel = new FileRecordViewModel(FileRecords, _fileSafe, fileRecord.AssociatedRecordId,
                                                                  fileRecord.FileId, () => { IsRecordModified = true; })
                {
                    Name        = fileRecord.Name,
                    Description = fileRecord.Description,
                    Extention   = fileRecord.Extention
                };
                FileRecords.Add(fileRecordViewModel);
            }

            _initialized = true;
            AddNewPasswordRecord(string.Empty, string.Empty);
            IsRecordModified = false;
        }
        public void AddFileRecord(string fileUri)
        {
            IsRecordModified = false;
            var fileId = _fileIdGenerator.GetFileId();
            var fileRecordViewModel =
                new FileRecordViewModel(FileRecords, _fileSafe, Id, fileId, () => { IsRecordModified = true; })
            {
                Name        = Path.GetFileNameWithoutExtension(fileUri),
                Extention   = Path.GetExtension(fileUri)?.Replace(".", ""),
                Description = string.Empty,
            };

            FileRecords.Add(fileRecordViewModel);
            _fileSafe.StoreFile(Id, fileId, fileUri);
        }