using BizProcessDAL.DTO; using BizProcessDAL.Query; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace BizProcessDAL.CustomCode { public class BizProcessDAL : IBizProcessDAL { private readonly IQueryExecutor _QueryExecutor; public BizProcessDAL(IQueryExecutor QueryExecutor) { _QueryExecutor = QueryExecutor; } // ── MBIZPROCESS ────────────────────────────────────────────── public async Task GetProcess(int bizProcessId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, BizProcessQB.GET_PROCESS, new { BizProcessId = bizProcessId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetSelectListProcess(LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_SELECTLIST_PROCESS, new { TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveProcess(BizProcessDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_PROCESS, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateProcess(BizProcessDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_PROCESS, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSVARIANT ─────────────────────────────────────── public async Task GetProcessVariant(int bizProcessVariantId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, BizProcessQB.GET_PROCESS_VARIANT, new { BizProcessVariantId = bizProcessVariantId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetSelectListVariant(int bizProcessId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_SELECTLIST_VARIANT, new { BizProcessId = bizProcessId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetSelectListAllStages(LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_SELECTLIST_ALL_STAGES, new { TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task GetLatestVariantForProcess(int bizProcessId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, BizProcessQB.GET_LATEST_VARIANT_FOR_PROCESS, new { BizProcessId = bizProcessId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveProcessVariant(BizProcessVariantDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_PROCESS_VARIANT, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateProcessVariant(BizProcessVariantDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_PROCESS_VARIANT, dto, cancellationToken: ct).ConfigureAwait(false); public async Task PublishProcessVariant(BizProcessVariantDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.PUBLISH_PROCESS_VARIANT, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSSTAGE ───────────────────────────────────────── public async Task> GetStagesForVariant(int bizProcessVariantId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_STAGES_FOR_VARIANT, new { BizProcessVariantId = bizProcessVariantId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task GetStage(int bizProcessStageId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, BizProcessQB.GET_STAGE, new { BizProcessStageId = bizProcessStageId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveStage(BizProcessStageDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_STAGE, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateStage(BizProcessStageDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_STAGE, dto, cancellationToken: ct).ConfigureAwait(false); public async Task DeleteStage(int bizProcessStageId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync( login, BizProcessQB.DELETE_STAGE, new { BizProcessStageId = bizProcessStageId, TenantId = login.ClientId, ModifiedById = login.UserId, ModifiedOn = DateTime.UtcNow }, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSSTAGEEDGE ───────────────────────────────────── public async Task> GetEdgesForVariant(int bizProcessVariantId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_EDGES_FOR_VARIANT, new { BizProcessVariantId = bizProcessVariantId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveStageEdge(BizProcessStageEdgeDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_STAGE_EDGE, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateStageEdge(BizProcessStageEdgeDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_STAGE_EDGE, dto, cancellationToken: ct).ConfigureAwait(false); public async Task DeleteStageEdge(int bizProcessStageEdgeId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync( login, BizProcessQB.DELETE_STAGE_EDGE, new { BizProcessStageEdgeId = bizProcessStageEdgeId, TenantId = login.ClientId, ModifiedById = login.UserId, ModifiedOn = DateTime.UtcNow }, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSFRAMEWORK ───────────────────────────────────── public async Task> GetSelectListFramework(LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync(login, BizProcessQB.GET_SELECTLIST_FRAMEWORK, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSSTAGEANNOTATION ──────────────────────────────── public async Task> GetAnnotationsForStage(int bizProcessStageId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_ANNOTATIONS_FOR_STAGE, new { BizProcessStageId = bizProcessStageId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveStageAnnotation(BizProcessStageAnnotationDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_STAGE_ANNOTATION, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateStageAnnotation(BizProcessStageAnnotationDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_STAGE_ANNOTATION, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSSTAGECOMPETENCYREQUIREMENT ───────────────────── public async Task> GetCompetencyRequirementsForStage(int bizProcessStageId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_COMPETENCY_REQUIREMENTS_FOR_STAGE, new { BizProcessStageId = bizProcessStageId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveCompetencyRequirement(BizProcessStageCompetencyRequirementDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_COMPETENCY_REQUIREMENT, dto, cancellationToken: ct).ConfigureAwait(false); public async Task UpdateCompetencyRequirement(BizProcessStageCompetencyRequirementDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.UPDATE_COMPETENCY_REQUIREMENT, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSROLEDEVPLAN ───────────────────────────────────── public async Task> GetRoleDevPlanForJobRole(int jobRoleId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_ROLEDEVPLAN_FOR_JOBROLE, new { JobRoleId = jobRoleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveRoleDevPlan(BizProcessRoleDevPlanDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_ROLEDEVPLAN, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSGOVERNANCE ────────────────────────────────────── public async Task> GetGovernanceForProcess(int bizProcessId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_GOVERNANCE_FOR_PROCESS, new { BizProcessId = bizProcessId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveGovernance(BizProcessGovernanceDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_GOVERNANCE, dto, cancellationToken: ct).ConfigureAwait(false); // ── MBIZPROCESSVARIANTMETRIC ───────────────────────────────────── public async Task> GetMetricsForVariant(int bizProcessVariantId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, BizProcessQB.GET_METRICS_FOR_VARIANT, new { BizProcessVariantId = bizProcessVariantId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task SaveVariantMetric(BizProcessVariantMetricDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, BizProcessQB.SAVE_VARIANT_METRIC, dto, cancellationToken: ct).ConfigureAwait(false); } }