Class MegaFormClient
Default IMegaFormClient — a thin facade that maps SDK DTOs to/from MegaForm.Core repositories. It does NOT contain business logic; it reuses Core. Tenant/user context comes from the ambient MegaForm.Core.Interfaces.IPlatformContext (when the host provides one) and can be overridden per call via MegaFormScope.
public sealed class MegaFormClient : IMegaFormClient, IFormApi, ISubmissionApi, IDashboardApi, ISubmissionDashboardApi, IInboxApi, IFileApi, ISchemaApi
- Inheritance
-
MegaFormClient
- Implements
- Inherited Members
Constructors
MegaFormClient(IFormRepository, ISubmissionRepository, IPlatformContext?, IFileRepository?, IStorageService?, SubmissionProcessor?)
Create a client. platform/files/storage
are optional — when platform is null, every call must pass an explicit MegaFormScope;
file APIs need files+storage. submissionProcessor is optional: when supplied
(the host registered it in DI), SubmitAsync runs the FULL submission pipeline (validate +
anti-spam + notify + workflow + index), identical to a public form submit; when null, it falls
back to validate-then-insert.
public MegaFormClient(IFormRepository forms, ISubmissionRepository submissions, IPlatformContext? platform = null, IFileRepository? files = null, IStorageService? storage = null, SubmissionProcessor? submissionProcessor = null)
Parameters
formsIFormRepositorysubmissionsISubmissionRepositoryplatformIPlatformContextfilesIFileRepositorystorageIStorageServicesubmissionProcessorSubmissionProcessor
MegaFormClient(IFormRepository, ISubmissionRepository, IPlatformContext?, IFileRepository?, IStorageService?, SubmissionProcessor?, WorkflowTaskService?, IWorkflowRepository?)
Create a client with optional dashboard/inbox workflow services. This overload is used by hosts that have registered workflow services and want the SDK Inbox surface enabled.
public MegaFormClient(IFormRepository forms, ISubmissionRepository submissions, IPlatformContext? platform, IFileRepository? files, IStorageService? storage, SubmissionProcessor? submissionProcessor, WorkflowTaskService? workflowTasks, IWorkflowRepository? workflowRepository)
Parameters
formsIFormRepositorysubmissionsISubmissionRepositoryplatformIPlatformContextfilesIFileRepositorystorageIStorageServicesubmissionProcessorSubmissionProcessorworkflowTasksWorkflowTaskServiceworkflowRepositoryIWorkflowRepository
Properties
Dashboard
Dashboard summaries for customers building an in-host dashboard.
public IDashboardApi Dashboard { get; }
Property Value
Files
Uploaded-file listing + download.
public IFileApi Files { get; }
Property Value
Forms
Form authoring + listing.
public IFormApi Forms { get; }
Property Value
Inbox
Human-task inbox operations backed by the host workflow task service.
public IInboxApi Inbox { get; }
Property Value
Schema
Parse a form's SchemaJson into typed, read-only field metadata.
public ISchemaApi Schema { get; }
Property Value
SubmissionDashboard
Submission dashboard search, detail, and status operations.
public ISubmissionDashboardApi SubmissionDashboard { get; }
Property Value
Submissions
Submission querying (FindData).
public ISubmissionApi Submissions { get; }
Property Value
Methods
ApproveAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)
Approve an open task and resume the workflow.
public Task<InboxTaskResultDto> ApproveAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxTaskActionRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
AttachFileAsync(InboxFileAttachmentRequest, MegaFormScope?, CancellationToken)
Attach a file to the task's linked submission, then return the stored file metadata.
public Task<InboxFileAttachmentResultDto> AttachFileAsync(InboxFileAttachmentRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxFileAttachmentRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
ClaimAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)
Claim an open task for the current actor.
public Task<InboxTaskResultDto> ClaimAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxTaskActionRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
CommentAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)
Add a comment to an open task without changing its state.
public Task<InboxTaskResultDto> CommentAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxTaskActionRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
CreateFormAsync(CreateFormRequest, MegaFormScope?, CancellationToken)
Create a new form. Returns the created form (with its new id).
public Task<FormDto> CreateFormAsync(CreateFormRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestCreateFormRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
DeleteAsync(int, MegaFormScope?, CancellationToken)
Permanently delete a submission. No-op if the submission is not in this portal.
public Task DeleteAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
DeleteFormAsync(int, MegaFormScope?, CancellationToken)
Permanently delete a form.
public Task DeleteFormAsync(int formId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
formIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
FindAsync(SubmissionQuery, MegaFormScope?, CancellationToken)
Find submissions for a form with optional status filter + paging (FindData).
public Task<PagedResult<SubmissionDto>> FindAsync(SubmissionQuery query, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
querySubmissionQueryscopeMegaFormScopecancellationTokenCancellationToken
Returns
ForwardAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)
Forward an open task to another user or role target.
public Task<InboxTaskResultDto> ForwardAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxTaskActionRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetAsync(int, MegaFormScope?, CancellationToken)
Get a single submission by id, or null if not found.
public Task<SubmissionDto?> GetAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetDetailAsync(int, MegaFormScope?, CancellationToken)
Load a submission detail payload with schema-derived values, files, and workflow summary when available.
public Task<SubmissionDetailDto?> GetDetailAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetFormAsync(int, MegaFormScope?, CancellationToken)
Get a single form by id, or null if not found / not in this portal.
public Task<FormDto?> GetFormAsync(int formId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
formIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetMyInboxAsync(InboxQuery?, MegaFormScope?, CancellationToken)
Return the current actor's workboard: incoming, in-progress, completed, and KPI counts.
public Task<InboxBoardDto> GetMyInboxAsync(InboxQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
queryInboxQueryscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetOverviewAsync(DashboardQuery?, MegaFormScope?, CancellationToken)
Return per-form counts and recent-submission totals for the current portal.
public Task<DashboardOverviewDto> GetOverviewAsync(DashboardQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
queryDashboardQueryscopeMegaFormScopecancellationTokenCancellationToken
Returns
GetTaskAsync(string, MegaFormScope?, CancellationToken)
Load one visible task with action history and linked submission summary.
public Task<InboxTaskResultDto> GetTaskAsync(string taskId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
taskIdstringscopeMegaFormScopecancellationTokenCancellationToken
Returns
ListForSubmissionAsync(int, MegaFormScope?, CancellationToken)
List the files uploaded against a submission (metadata only).
public Task<IReadOnlyList<FileDto>> ListForSubmissionAsync(int submissionId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
ListFormsAsync(FormQuery?, MegaFormScope?, CancellationToken)
List forms in the current portal with optional filter + paging.
public Task<PagedResult<FormDto>> ListFormsAsync(FormQuery? query = null, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
queryFormQueryscopeMegaFormScopecancellationTokenCancellationToken
Returns
OpenAsync(int, int, MegaFormScope?, CancellationToken)
Read a file's bytes + metadata for a download response, or null if not found.
public Task<MegaFormFileContent?> OpenAsync(int submissionId, int fileId, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintfileIdintscopeMegaFormScopecancellationTokenCancellationToken
Returns
Parse(string)
Parse a form's SchemaJson into typed FormSchemaInfo. Never throws on malformed JSON — returns an empty schema (mirrors the server's fail-soft schema resolver). Row layout is flattened so the field list matches what the server validates.
public FormSchemaInfo Parse(string schemaJson)
Parameters
schemaJsonstring
Returns
ParseForm(FormDto)
Convenience overload: parse form.SchemaJson. Throws ArgumentNullException when form is null.
public FormSchemaInfo ParseForm(FormDto form)
Parameters
formFormDto
Returns
RejectAsync(InboxTaskActionRequest, MegaFormScope?, CancellationToken)
Reject an open task and resume the workflow.
public Task<InboxTaskResultDto> RejectAsync(InboxTaskActionRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestInboxTaskActionRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
SearchAsync(SubmissionSearchQuery, MegaFormScope?, CancellationToken)
Search submissions with status/search/date filters and dashboard-friendly list rows.
public Task<PagedResult<SubmissionListItemDto>> SearchAsync(SubmissionSearchQuery query, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
querySubmissionSearchQueryscopeMegaFormScopecancellationTokenCancellationToken
Returns
SendSubmissionAsync(SendSubmissionToInboxRequest, MegaFormScope?, CancellationToken)
Create a one-step review task for a submission without requiring a preconfigured workflow.
public Task<InboxSendSubmissionResultDto> SendSubmissionAsync(SendSubmissionToInboxRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
requestSendSubmissionToInboxRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
SubmitAsync(int, Dictionary<string, object>, MegaFormScope?, CancellationToken)
Submit form data, running the same server-side validation as a public form submit. When the host registered the full submission pipeline (anti-spam, notifications, workflow), this delegates to it; otherwise it validates and inserts the row. On a validation failure the result's Success is false and no row is saved.
public Task<SubmitResult> SubmitAsync(int formId, Dictionary<string, object> data, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
formIdintdataDictionary<string, object>scopeMegaFormScopecancellationTokenCancellationToken
Returns
UpdateAsync(int, Dictionary<string, object>, MegaFormScope?, CancellationToken)
Replace a submission's stored data (full replace, not merge). No-op if the submission is not in this portal.
public Task UpdateAsync(int submissionId, Dictionary<string, object> data, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintdataDictionary<string, object>scopeMegaFormScopecancellationTokenCancellationToken
Returns
UpdateFormAsync(int, UpdateFormRequest, MegaFormScope?, CancellationToken)
Apply a partial update to a form (only non-null members of request change).
Returns the updated form. Throws InvalidOperationException when the form
does not exist or belongs to another portal.
public Task<FormDto> UpdateFormAsync(int formId, UpdateFormRequest request, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
formIdintrequestUpdateFormRequestscopeMegaFormScopecancellationTokenCancellationToken
Returns
UpdateStatusAsync(int, string, MegaFormScope?, CancellationToken)
Update a submission status after checking that the submission belongs to the current portal.
public Task UpdateStatusAsync(int submissionId, string status, MegaFormScope? scope = null, CancellationToken cancellationToken = default)
Parameters
submissionIdintstatusstringscopeMegaFormScopecancellationTokenCancellationToken