Ejemplo n.º 1
0
 public void UpdateRelatedRecords(
     SiteSettings ss,
     RdsUser rdsUser          = null,
     bool addUpdatedTimeParam = true,
     bool addUpdatorParam     = true,
     bool updateItems         = true)
 {
     Rds.ExecuteNonQuery(
         rdsUser: rdsUser,
         transactional: true,
         statements: new SqlStatement[]
     {
         Rds.UpdateItems(
             where : Rds.ItemsWhere().ReferenceId(WikiId),
             param: Rds.ItemsParam()
             .SiteId(SiteId)
             .Title(WikiUtilities.TitleDisplayValue(ss, this)),
             addUpdatedTimeParam: addUpdatedTimeParam,
             addUpdatorParam: addUpdatorParam,
             _using: updateItems),
         Rds.PhysicalDeleteLinks(
             where : Rds.LinksWhere().SourceId(WikiId)),
         InsertLinks(ss),
         Rds.UpdateSites(
             where : Rds.SitesWhere().SiteId(SiteId),
             param: Rds.SitesParam().Title(Title.Value))
     });
     Libraries.Search.Indexes.Create(ss, this);
 }
Ejemplo n.º 2
0
        public string Editor()
        {
            SetSite();
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.Editor(ReferenceId, clearSessions: true));

            case "Issues": return(IssueUtilities.Editor(
                                      ss: Site.IssuesSiteSettings(ReferenceId),
                                      issueId: ReferenceId,
                                      clearSessions: true));

            case "Results": return(ResultUtilities.Editor(
                                       ss: Site.ResultsSiteSettings(ReferenceId),
                                       resultId: ReferenceId,
                                       clearSessions: true));

            case "Wikis": return(WikiUtilities.Editor(
                                     ss: Site.WikisSiteSettings(ReferenceId),
                                     wikiId: ReferenceId,
                                     clearSessions: true));

            default: return(HtmlTemplates.Error(Error.Types.NotFound));
            }
        }
Ejemplo n.º 3
0
        public Error.Types Create(
            SiteSettings ss,
            RdsUser rdsUser           = null,
            Sqls.TableTypes tableType = Sqls.TableTypes.Normal,
            SqlParamCollection param  = null,
            bool notice   = false,
            bool paramAll = false)
        {
            var statements = CreateStatements(ss, tableType, param, paramAll);
            var newId      = Rds.ExecuteScalar_long(
                rdsUser: rdsUser,
                transactional: true,
                statements: statements.ToArray());

            WikiId = newId != 0 ? newId : WikiId;
            if (Contract.Notice() && notice)
            {
                CheckNotificationConditions(ss);
                Notice(ss, "Created");
            }
            Get(ss);
            Rds.ExecuteNonQuery(
                rdsUser: rdsUser,
                statements: Rds.UpdateItems(
                    param: Rds.ItemsParam()
                    .Title(WikiUtilities.TitleDisplayValue(ss, this)),
                    where : Rds.ItemsWhere().ReferenceId(WikiId)));
            Libraries.Search.Indexes.Create(ss, this);
            return(Error.Types.None);
        }
Ejemplo n.º 4
0
        private void Notice(SiteSettings ss, string type)
        {
            var title = WikiUtilities.TitleDisplayValue(ss, this);
            var url   = Url.AbsoluteUri().Replace(
                Url.AbsolutePath(), Locations.ItemEdit(WikiId));

            ss.Notifications.Where(o => o.Enabled).ForEach(notification =>
            {
                if (notification.HasRelatedUsers())
                {
                    var users = new List <long>();
                    Rds.ExecuteTable(statements: Rds.SelectWikis(
                                         tableType: Sqls.TableTypes.All,
                                         distinct: true,
                                         column: Rds.WikisColumn()
                                         .Creator()
                                         .Updator(),
                                         where : Rds.WikisWhere().WikiId(WikiId)))
                    .AsEnumerable()
                    .ForEach(dataRow =>
                    {
                        users.Add(dataRow["Creator"].ToLong());
                        users.Add(dataRow["Updator"].ToLong());
                    });
                    notification.ReplaceRelatedUsers(users);
                }
                switch (type)
                {
                case "Created":
                    notification.Send(
                        Displays.Created(title).ToString(),
                        url,
                        NoticeBody(ss, notification));
                    break;

                case "Updated":
                    var body = NoticeBody(ss, notification, update: true);
                    if (body.Length > 0)
                    {
                        notification.Send(
                            Displays.Updated(title).ToString(),
                            url,
                            body);
                    }
                    break;

                case "Deleted":
                    notification.Send(
                        Displays.Deleted(title).ToString(),
                        url,
                        NoticeBody(ss, notification));
                    break;
                }
            });
        }
Ejemplo n.º 5
0
        public string New()
        {
            SetSite(siteOnly: true, initSiteSettings: true);
            switch (Site.ReferenceType)
            {
            case "Issues": return(IssueUtilities.EditorNew(Site.SiteSettings));

            case "Results": return(ResultUtilities.EditorNew(Site.SiteSettings));

            case "Wikis": return(WikiUtilities.EditorNew(Site.SiteSettings));

            default: return(HtmlTemplates.Error(Error.Types.NotFound));
            }
        }
Ejemplo n.º 6
0
        private void Set(SiteSettings ss, DataRow dataRow)
        {
            AccessStatus = Databases.AccessStatuses.Selected;
            foreach (DataColumn dataColumn in dataRow.Table.Columns)
            {
                var name = dataColumn.ColumnName;
                switch (name)
                {
                case "SiteId": if (dataRow[name] != DBNull.Value)
                    {
                        SiteId = dataRow[name].ToLong(); SavedSiteId = SiteId;
                    }
                    break;

                case "UpdatedTime": if (dataRow[name] != DBNull.Value)
                    {
                        UpdatedTime = new Time(dataRow, "UpdatedTime"); Timestamp = dataRow.Field <DateTime>("UpdatedTime").ToString("yyyy/M/d H:m:s.fff"); SavedUpdatedTime = UpdatedTime.Value;
                    }
                    break;

                case "WikiId": if (dataRow[name] != DBNull.Value)
                    {
                        WikiId = dataRow[name].ToLong(); SavedWikiId = WikiId;
                    }
                    break;

                case "Ver": Ver = dataRow[name].ToInt(); SavedVer = Ver; break;

                case "Title": Title = new Title(dataRow, "WikiId"); SavedTitle = Title.Value; break;

                case "Body": Body = dataRow[name].ToString(); SavedBody = Body; break;

                case "Comments": Comments = dataRow["Comments"].ToString().Deserialize <Comments>() ?? new Comments(); SavedComments = Comments.ToJson(); break;

                case "Creator": Creator = SiteInfo.User(dataRow.Int(name)); SavedCreator = Creator.Id; break;

                case "Updator": Updator = SiteInfo.User(dataRow.Int(name)); SavedUpdator = Updator.Id; break;

                case "CreatedTime": CreatedTime = new Time(dataRow, "CreatedTime"); SavedCreatedTime = CreatedTime.Value; break;

                case "IsHistory": VerType = dataRow[name].ToBool() ? Versions.VerTypes.History : Versions.VerTypes.Latest; break;
                }
            }
            if (ss != null)
            {
                Title.DisplayValue = WikiUtilities.TitleDisplayValue(ss, this);
            }
        }
Ejemplo n.º 7
0
        public string Histories()
        {
            SetSite(initSiteSettings: true);
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.Histories(siteModel: Site));

            case "Issues": return(IssueUtilities.Histories(
                                      ss: Site.SiteSettings, issueId: ReferenceId));

            case "Results": return(ResultUtilities.Histories(
                                       ss: Site.SiteSettings, resultId: ReferenceId));

            case "Wikis": return(WikiUtilities.Histories(
                                     ss: Site.SiteSettings, wikiId: ReferenceId));

            default: return(Messages.ResponseNotFound().ToJson());
            }
        }
Ejemplo n.º 8
0
        public string DeleteComment()
        {
            SetSite();
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.Update(siteModel: Site, siteId: ReferenceId));

            case "Issues": return(IssueUtilities
                                  .Update(Site.IssuesSiteSettings(ReferenceId), ReferenceId));

            case "Results": return(ResultUtilities
                                   .Update(Site.ResultsSiteSettings(ReferenceId), ReferenceId));

            case "Wikis": return(WikiUtilities
                                 .Update(Site.WikisSiteSettings(ReferenceId), ReferenceId));

            default: return(Messages.ResponseNotFound().ToJson());
            }
        }
Ejemplo n.º 9
0
        public string EditorJson()
        {
            SetSite(initSiteSettings: true);
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.EditorJson(Site));

            case "Issues": return(IssueUtilities.EditorJson(
                                      Site.SiteSettings, ReferenceId));

            case "Results": return(ResultUtilities.EditorJson(
                                       Site.SiteSettings, ReferenceId));

            case "Wikis": return(WikiUtilities.EditorJson(
                                     Site.SiteSettings, ReferenceId));

            default: return(Messages.ResponseNotFound().ToJson());
            }
        }
Ejemplo n.º 10
0
        public string Restore(long referenceId)
        {
            ReferenceId = referenceId;
            Get(Sqls.TableTypes.Deleted, where : Rds.ItemsWhere().ReferenceId(ReferenceId));
            SetSite();
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.Restore(siteId: ReferenceId));

            case "Issues": return(IssueUtilities.Restore(
                                      ss: SiteSettingsUtilities.IssuesSiteSettings(Site, ReferenceId),
                                      issueId: ReferenceId));

            case "Results": return(ResultUtilities.Restore(
                                       ss: SiteSettingsUtilities.ResultsSiteSettings(Site, ReferenceId),
                                       resultId: ReferenceId));

            case "Wikis": return(WikiUtilities.Restore(
                                     ss: SiteSettingsUtilities.WikisSiteSettings(Site, ReferenceId),
                                     wikiId: ReferenceId));

            default: return(Messages.ResponseNotFound().ToJson());
            }
        }
Ejemplo n.º 11
0
        public string Delete()
        {
            SetSite();
            switch (ReferenceType)
            {
            case "Sites": return(SiteUtilities.Delete(
                                     ss: Site.SitesSiteSettings(ReferenceId),
                                     siteId: ReferenceId));

            case "Issues": return(IssueUtilities.Delete(
                                      ss: Site.IssuesSiteSettings(ReferenceId),
                                      issueId: ReferenceId));

            case "Results": return(ResultUtilities.Delete(
                                       ss: Site.ResultsSiteSettings(ReferenceId),
                                       resultId: ReferenceId));

            case "Wikis": return(WikiUtilities.Delete(
                                     ss: Site.WikisSiteSettings(ReferenceId),
                                     wikiId: ReferenceId));

            default: return(Messages.ResponseNotFound().ToJson());
            }
        }