示例#1
0
        public Error.Types UpdateOrCreate(
            SiteSettings ss,
            RdsUser rdsUser          = null,
            SqlWhereCollection where = null,
            SqlParamCollection param = null)
        {
            SetBySession();
            var statements = new List <SqlStatement>
            {
                Rds.UpdateOrInsertDepts(
                    selectIdentity: true,
                    where : where ?? Rds.DeptsWhereDefault(this),
                    param: param ?? Rds.DeptsParamDefault(this, setDefault: true)),
                StatusUtilities.UpdateStatus(StatusUtilities.Types.DeptsUpdated)
            };
            var newId = Rds.ExecuteScalar_int(
                rdsUser: rdsUser,
                transactional: true,
                statements: statements.ToArray());

            DeptId = newId != 0 ? newId : DeptId;
            Get(ss);
            return(Error.Types.None);
        }
示例#2
0
        public Error.Types UpdateOrCreate(
            SiteSettings ss,
            RdsUser rdsUser          = null,
            SqlWhereCollection where = null,
            SqlParamCollection param = null)
        {
            SetBySession();
            var statements = new List <SqlStatement>
            {
                Rds.UpdateOrInsertGroups(
                    where : where ?? Rds.GroupsWhereDefault(this),
                    param: param ?? Rds.GroupsParamDefault(this, setDefault: true)),
                StatusUtilities.UpdateStatus(StatusUtilities.Types.GroupsUpdated),
            };
            var response = Rds.ExecuteScalar_response(
                rdsUser: rdsUser,
                transactional: true,
                selectIdentity: true,
                statements: statements.ToArray());

            GroupId = (response.Identity ?? GroupId).ToInt();
            Get(ss);
            return(Error.Types.None);
        }
示例#3
0
 public List <SqlStatement> CreateStatements(
     SiteSettings ss,
     List <SqlStatement> statements,
     Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
     SqlParamCollection param  = null,
     bool otherInitValue       = false)
 {
     statements.AddRange(new List <SqlStatement>
     {
         Rds.InsertGroups(
             tableType: tableType,
             setIdentity: true,
             param: param ?? Rds.GroupsParamDefault(
                 this, setDefault: true, otherInitValue: otherInitValue)),
         Rds.InsertGroupMembers(
             tableType: tableType,
             param: param ?? Rds.GroupMembersParam()
             .GroupId(raw: Def.Sql.Identity)
             .UserId(Sessions.UserId())
             .Admin(true)),
         StatusUtilities.UpdateStatus(StatusUtilities.Types.GroupsUpdated),
     });
     return(statements);
 }
示例#4
0
        public ErrorData Delete(Context context, SiteSettings ss, bool notice = false)
        {
            var statements = new List <SqlStatement>();

            var where = Rds.DeptsWhere().DeptId(DeptId);
            statements.AddRange(new List <SqlStatement>
            {
                Rds.DeleteDepts(where : where),
                StatusUtilities.UpdateStatus(
                    tenantId: context.TenantId,
                    type: StatusUtilities.Types.DeptsUpdated),
            });
            var response = Rds.ExecuteScalar_response(
                context: context,
                transactional: true,
                statements: statements.ToArray());
            var deptHash = SiteInfo.TenantCaches.Get(context.TenantId)?.DeptHash;

            if (deptHash.Keys.Contains(DeptId))
            {
                deptHash.Remove(DeptId);
            }
            return(new ErrorData(type: Error.Types.None));
        }
 public List <SqlStatement> CreateStatements(
     IContext context,
     SiteSettings ss,
     List <SqlStatement> statements,
     Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
     SqlParamCollection param  = null,
     bool otherInitValue       = false)
 {
     statements.AddRange(new List <SqlStatement>
     {
         Rds.InsertDepts(
             tableType: tableType,
             setIdentity: true,
             param: param ?? Rds.DeptsParamDefault(
                 context: context,
                 deptModel: this,
                 setDefault: true,
                 otherInitValue: otherInitValue)),
         StatusUtilities.UpdateStatus(
             tenantId: context.TenantId,
             type: StatusUtilities.Types.DeptsUpdated),
     });
     return(statements);
 }
示例#6
0
        public Error.Types Update(
            Context context,
            SiteSettings ss,
            IEnumerable <string> permissions = null,
            bool permissionChanged           = false,
            bool extendedSqls                  = true,
            bool synchronizeSummary            = true,
            bool forceSynchronizeSourceSummary = false,
            bool notice = false,
            SqlParamCollection param = null,
            List <SqlStatement> additionalStatements = null,
            bool otherInitValue = false,
            bool setBySession   = true,
            bool get            = true)
        {
            if (context.ContractSettings.Notice != false && notice)
            {
                CheckNotificationConditions(context: context, ss: ss, before: true);
            }
            if (setBySession)
            {
                SetBySession(context: context);
            }
            var timestamp  = Timestamp.ToDateTime();
            var statements = new List <SqlStatement>();

            if (extendedSqls)
            {
                statements.OnUpdatingExtendedSqls(SiteId, WikiId, timestamp);
            }
            UpdateStatements(
                context: context,
                ss: ss,
                statements: statements,
                timestamp: timestamp,
                param: param,
                otherInitValue: otherInitValue,
                additionalStatements: additionalStatements);
            if (permissionChanged)
            {
                statements.UpdatePermissions(context, ss, WikiId, permissions);
            }
            var response = Rds.ExecuteScalar_response(
                context: context,
                transactional: true,
                statements: statements.ToArray());

            if (response.Count == 0)
            {
                return(Error.Types.UpdateConflicts);
            }
            if (Title_Updated(context: context))
            {
                Rds.ExecuteNonQuery(
                    context: context,
                    statements: new SqlStatement[]
                {
                    Rds.UpdateSites(
                        where : Rds.SitesWhere()
                        .TenantId(context.TenantId)
                        .SiteId(SiteId),
                        param: Rds.SitesParam().Title(Title.Value),
                        addUpdatedTimeParam: false,
                        addUpdatorParam: false),
                    StatusUtilities.UpdateStatus(
                        tenantId: context.TenantId,
                        type: StatusUtilities.Types.SitesUpdated)
                });
            }
            if (context.ContractSettings.Notice != false && notice)
            {
                CheckNotificationConditions(context: context, ss: ss);
                Notice(context: context, ss: ss, type: "Updated");
            }
            if (get)
            {
                Get(context: context, ss: ss);
            }
            UpdateRelatedRecords(context: context, ss: ss, extendedSqls: extendedSqls);
            if (get && Rds.ExtendedSqls(SiteId, WikiId)?.Any(o => o.OnUpdated) == true)
            {
                Get(context: context, ss: ss);
            }
            SiteInfo.Reflesh(context: context);
            return(Error.Types.None);
        }