-
Notifications
You must be signed in to change notification settings - Fork 2
IDocumentFactory
zehavibarak edited this page Dec 27, 2023
·
2 revisions
Methods
| Name | Usage |
|---|---|
| IDocumentContext GetInstance(Recipient) | |
| IDocumentContext GetInstance(Document) | |
| CreateAsync<TModel>(TModel) | |
| <IDocumentContext> CreateAsync<TModel>(TModel, IEnumerable<IFormFile>) | |
| <IDocumentContext> CreateAsync<TModel>(TModel, parent) | |
| <IDocumentContext> CopyAsync(Document) | |
| <IDocumentContext> CopyAsync(Document, int) | |
| SynchronizeMappingAsync() | Recreate Entries and Cube tables, see database |
public class MyService {
private readonly IDocumentStorage _store;
private readonly IDocumentFactory _factory;
public MyService(IDocumentStorage store, IDocumentFactory factory) {
_store = store;
_factory = factory;
}
public async Task AccessAsync() {
var document = await _store.GetDocumentAsync(1);
var ctx = _factory.GetContext(document);
...
await ctx.UpdateAsync();
}
}In some scenarios, documents may be linked to other documents.
When documents are created using IDocumentFactory service, it may receive a parentId argument.
await _documentFactory.CreateAsync("myForm", new MyModel {}, parentId);You can access the parent id from IDocumentContext service.
public class MyForm : FormBase<MyModel> {
public override async Task FlowResumeAsync([NotNull] MyFormModel model)
{
var parentId = _documentContext.Document.ParentId;
// retrieve chained documents
var children = from document in _store.Documents where document.ParentId == parentId select document;
}
}In an Angular component, you can then retrieve the document chain.
onBind(data: DocumentModel<any>) {
data.children.forEach(c=> …);
let parent = data.parent;
while (parent) {
parent = parent.parent;
}
}
/***
* get full document info
*/
onChainExpand(id: number) {
this._ documentInfo.get(id).subscribe((d: DocumentModel) => …);
}Moding Ltd.