示例#1
0
        public WikiSerializable(IWorkWikiItem item)
        {
            if (item == null)
                throw new ArgumentNullException("item");

            _item = item;
            _id = item.ID;
            _title = item.Title;
            _content = item.Content;
        }
示例#2
0
    private void BindWikiContent()
    {
        if (string.IsNullOrEmpty(Request.QueryString["trackingNumber"]))
            throw new InvalidOperationException("A valid identifier is requested.");

        wiki = WikiHistory.Load(new Guid(Request.QueryString["trackingNumber"]));

        if (wiki == null)
            return;

        Page.Title = string.Format("Wiki - {0}", wiki.Title);
        TitleLabel.Text = string.Format("{0} ({1})", wiki.Title, wiki.Status == WikiStatus.AuthorizationAccepted ?
            "Autorizado" : "Rechazado");
        EditorLabel.Text = string.Format("Autor: {0}{1}", !string.IsNullOrEmpty(wiki.Editor) ? wiki.Editor : "ND",
            !string.IsNullOrEmpty(wiki.DepartmentArea) ? string.Format(" - {0}", wiki.DepartmentArea) : string.Empty);
        ContentLabel.Text = wiki.Content;
        BackButton.Visible = wiki.Editable || User.IsInRole("Administrator");
    }
示例#3
0
        public override void RequestAuthorization(IWorkWikiItem item)
        {
            try
            {
                // Fill the parameters collection for this instance of the workflow
                Dictionary<string, object> parameters = new Dictionary<string, object>();
                parameters.Add("WikiID", item.ID);

                Type type = typeof(AuthorizeEntries);

                WorkflowInstance instance = theWorkflowRuntime.CreateWorkflow(type, parameters);

                item.Status = WikiStatus.Processing;
                item.TrackingNumber = instance.InstanceId;
                item.IPAddress = HttpContext.Current.Request.UserHostAddress;
                item.Save();

                instance.Start();
            }
            catch (Exception ex)
            {
                if (ex.Message.ToUpperInvariant().Contains("PRIMARY KEY"))
                    throw new InvalidConstraintException("InsertWiki failed.", ex);
                else
                    throw ex;
            }
        }
示例#4
0
 public abstract void AuthorizeWiki(IWorkWikiItem item);
示例#5
0
 public abstract void UpdateWorkWikiItem(IWorkWikiItem item);
示例#6
0
 public abstract void UpdateWikiHistory(IWorkWikiItem item);
示例#7
0
 public static void RequestAuthorization(IWorkWikiItem item)
 {
     _defaultProvider.RequestAuthorization(item);
 }
示例#8
0
        public override void RejectAuthorization(IWorkWikiItem item)
        {
            try
            {
                WorkflowInstance instance = theWorkflowRuntime.GetWorkflow(item.TrackingNumber);
                instance.Load();

                item.Status = WikiStatus.Processing;

                item.Save();

                theServiceProvider.RejectAuthorization(item.TrackingNumber, item.ID);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#9
0
 public abstract void InsertWikiHistory(IWorkWikiItem item);
示例#10
0
 public abstract void DeleteWorkWikiItem(IWorkWikiItem item);
示例#11
0
 public abstract void DeleteWikiHistory(IWorkWikiItem item);
示例#12
0
 public static void DeleteWorkWikiItem(IWorkWikiItem item)
 {
     _defaultProvider.DeleteWorkWikiItem(item);
 }
示例#13
0
 public static void AuthorizeWiki(IWorkWikiItem item)
 {
     _defaultProvider.AuthorizeWiki(item);
 }
示例#14
0
 public static void UpdateWorkWikiItem(IWorkWikiItem item)
 {
     _defaultProvider.UpdateWorkWikiItem(item);
 }
示例#15
0
        public override void DeleteWorkWikiItem(IWorkWikiItem item)
        {
            WikiDataContext db = new WikiDataContext(
                ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString);

            Table<LinqWorkWikiItem> wikis = db.GetTable<LinqWorkWikiItem>();

            // BusinessBase inherited clases will have a downside effect with a ChangeConflictException
            // as it has changed LastUpdated row version in the call stack.
            IWiki wi = SelectWorkWikiItem(item.TrackingNumber);

            // BusinessBase inherited clases will have a downside effect with a ChangeConflictException
            // as it has changed LastUpdated row version in the call stack.
            LinqWorkWikiItem w = new LinqWorkWikiItem()
            {
                Action = (int)item.Action,
                ApplicationName = this.ApplicationName,
                Author = item.Author,
                Authorizer = item.Authorizer,
                Category = item.Category,
                Content = item.Content,
                DateCreated = item.DateCreated,
                DepartmentArea = item.DepartmentArea,
                Description = item.Description,
                Editable = item.Editable,
                Editor = item.Editor,
                ExpirationDate = item.ExpirationDate,
                ID = item.ID,
                IpAddress = item.IPAddress,
                IsVisible = item.IsVisible,
                Keywords = item.Keywords,
                LastUpdated = wi.LastUpdated,
                LastUpdatedBy = item.LastUpdatedBy,
                Messages = item.Messages,
                ReachLevel = (int)item.ReachLevel,
                Slug = item.Slug,
                Status = (int)item.Status,
                Title = item.Title,
                TrackingNumber = item.TrackingNumber
            };

            // Assume that "wiki" has been sent by client.
            // Attach with "true" to the change tracker to consider the entity modified
            // and it can be checked for optimistic concurrency because
            // it has a column that is marked with "RowVersion" attribute
            wikis.Attach(w);

            wikis.DeleteOnSubmit(w);

            try
            {
                db.SubmitChanges(ConflictMode.ContinueOnConflict);
            }
            catch (ChangeConflictException ex)
            {
                Trace.TraceError(ex.Message);

                // All database values overwrite current values.
                foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                    occ.Resolve(RefreshMode.OverwriteCurrentValues);
            }
            catch (DbException ex)
            {
                Trace.TraceError(ex.Message);
            }
        }
示例#16
0
        public override void InsertWorkWikiItem(IWorkWikiItem item)
        {
            if (item == null)
                throw new ArgumentNullException("item");

            WikiDataContext db = new WikiDataContext(
                ConfigurationManager.ConnectionStrings[this.ConnectionStringName].ConnectionString);

            Table<LinqWorkWikiItem> wikis = db.GetTable<LinqWorkWikiItem>();

            wikis.InsertOnSubmit(new LinqWorkWikiItem()
            {
                Action = (int)item.Action,
                ApplicationName = this.ApplicationName,
                Author = item.Author,
                Authorizer = item.Authorizer,
                Category = item.Category,
                Content = item.Content,
                DateCreated = item.DateCreated,
                DepartmentArea = item.DepartmentArea,
                Description = item.Description,
                Editable = item.Editable,
                Editor = item.Editor,
                ExpirationDate = item.ExpirationDate,
                ID = item.ID,
                IpAddress = item.IPAddress,
                IsVisible = item.IsVisible,
                Keywords = item.Keywords,
                LastUpdated = item.LastUpdated,
                LastUpdatedBy = item.LastUpdatedBy,
                Messages = item.Messages,
                ReachLevel = (int)item.ReachLevel,
                Slug = item.Slug,
                Status = (int)item.Status,
                Title = item.Title,
                TrackingNumber = item.TrackingNumber
            });

            try
            {
                db.SubmitChanges(ConflictMode.ContinueOnConflict);
            }
            catch (ChangeConflictException ex)
            {
                Trace.TraceWarning(ex.Message);

                // All database values overwrite current values.
                foreach (ObjectChangeConflict occ in db.ChangeConflicts)
                    occ.Resolve(RefreshMode.OverwriteCurrentValues);
            }
            catch (DbException ex)
            {
                Trace.TraceError(ex.Message);
                return;
            }
        }
示例#17
0
 public abstract void InsertWorkWikiItem(IWorkWikiItem item);
示例#18
0
 public abstract void RequestAuthorization(IWorkWikiItem item);
示例#19
0
 public static void InsertWorkWikiItem(IWorkWikiItem item)
 {
     _defaultProvider.InsertWorkWikiItem(item);
 }