コード例 #1
0
        public override async Task <Tuple <Core.Models.Admin.Admin, ApprovalStatus, string> > CreateApprovableAsync(Core.Models.Admin.Admin TEntity)
        {
            MethodBase method            = MethodBase.GetCurrentMethod();
            ApprovalActionAttribute attr = typeof(AdminRepository).GetMethod(GetActualAsyncMethodName()).GetCustomAttribute <ApprovalActionAttribute>();
            string actionName            = attr.ActionName;
            var    action = ActionByName(actionName);

            if (await CanSelfApprove(actionName))
            {
                return(new Tuple <Core.Models.Admin.Admin, ApprovalStatus, string>(await CreateAsync(TEntity), ApprovalStatus.Approved, "created successfully"));
            }
            else
            {
                if (await PreCreateCheckAsync(TEntity))
                {
                    await CreateApprovalObject(TEntity, action);

                    return(new Tuple <Core.Models.Admin.Admin, ApprovalStatus, string>(TEntity, ApprovalStatus.Pending, "creation logged for approval"));
                }
                else
                {
                    return(new Tuple <Core.Models.Admin.Admin, ApprovalStatus, string>(null, ApprovalStatus.Declined, "creation failed some prechecks"));
                }
            }
        }
コード例 #2
0
        public override async Task <Tuple <bool, ApprovalStatus, string> > DeleteApprovableAsync(long Id)
        {
            MethodBase method            = MethodBase.GetCurrentMethod();
            ApprovalActionAttribute attr = (ApprovalActionAttribute)method.GetCustomAttributes(typeof(ApprovalActionAttribute), true)[0];
            string actionName            = attr.ActionName;
            var    action = ActionByName(actionName);

            if (await CanSelfApprove(actionName))
            {
                return(new Tuple <bool, ApprovalStatus, string>((await DeleteAsync(Id)), ApprovalStatus.Approved, "deleted successfully"));
            }
            else
            {
                if (await PreDeleteCheckAsync(Id))
                {
                    await CreateApprovalObject(Id, action);

                    return(new Tuple <bool, ApprovalStatus, string>(true, ApprovalStatus.Pending, "acount creation logged for approval"));
                }
                else
                {
                    return(new Tuple <bool, ApprovalStatus, string>(false, ApprovalStatus.Declined, "acount deletion falied prechecks"));
                }
            }
        }
コード例 #3
0
        public override async Task <Tuple <ApprovalStatus, string> > UpdateApprovableAsync(Core.Models.Admin.Admin TEntity)
        {
            MethodBase method            = MethodBase.GetCurrentMethod();
            ApprovalActionAttribute attr = (ApprovalActionAttribute)method.GetCustomAttributes(typeof(ApprovalActionAttribute), true)[0];
            string actionName            = attr.ActionName;
            var    action = ActionByName(actionName);

            if (await CanSelfApprove(actionName))
            {
                await UpdateAsync(TEntity);

                return(new Tuple <ApprovalStatus, string>(ApprovalStatus.Approved, "update successful"));
            }
            else
            {
                if (await PreUpdateCheckAsync(TEntity))
                {
                    await CreateApprovalObject(TEntity, action, true);

                    return(new Tuple <ApprovalStatus, string>(ApprovalStatus.Pending, "update successfully logged for approval"));
                }
                else
                {
                    return(new Tuple <ApprovalStatus, string>(ApprovalStatus.Declined, "The update failed some PreChecks."));
                }
            }
        }