protected override void CollectValues
     (out IDictionary <XName, object> readWriteValues,
     out IDictionary <XName, object> writeOnlyValues)
 {
     // We're not actually providing data to the caller
     readWriteValues = null;
     writeOnlyValues = null;
     // See if there is any work to do...
     if (_object.Count > 0)
     {
         // Get the current transaction
         Transaction t = System.Transactions.Transaction.Current;
         // Setup the DataContext
         LeadDataDataContext dc = new LeadDataDataContext(_connectionString);
         // Open the connection, if necessary
         if (dc.Connection.State == System.Data.ConnectionState.Closed)
         {
             dc.Connection.Open();
         }
         if (t != null)
         {
             dc.Connection.EnlistTransaction(t);
         }
         // Process each object in our work queue
         foreach (KeyValuePair <Guid, Assignment> kvp in _object)
         {
             Assignment a      = kvp.Value as Assignment;
             string     action = _action[kvp.Key];
             // Perform the insert
             if (action == "Insert")
             {
                 dc.Assignments.InsertOnSubmit(a);
             }
             // Perform the update
             if (action == "Update")
             {
                 dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Leads);
                 Assignment aTmp = dc.Assignments
                                   .SingleOrDefault <Assignment>
                                       (x => x.WorkflowID == kvp.Key);
                 if (aTmp != null)
                 {
                     aTmp.DateCompleted = a.DateCompleted;
                     aTmp.Remarks       = a.Remarks;
                     aTmp.Status        = a.Status;
                 }
             }
         }
         // Submit all the changes to the database
         dc.SubmitChanges();
         // Remove all objects since the changes have been submitted
         _object.Clear();
         _action.Clear();
     }
 }
        private void LoadExistingLeads()
        {
            LeadDataDataContext dc = new LeadDataDataContext(_connectionString);

            dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Leads);
            IEnumerable <Lead> q = dc.Leads
                                   .Where <Lead>(x => x.Status == "Open" || x.Status == "Assigned");

            foreach (Lead l in q)
            {
                AddNewLead(l);
            }
        }
 protected override void CollectValues
 (out IDictionary<XName, object> readWriteValues,
 out IDictionary<XName, object> writeOnlyValues)
 {
     // We're not actually providing data to the caller
     readWriteValues = null;
     writeOnlyValues = null;
     // See if there is any work to do...
     if (_object.Count > 0)
     {
         // Get the current transaction
         Transaction t = System.Transactions.Transaction.Current;
         // Setup the DataContext
         LeadDataDataContext dc = new LeadDataDataContext(_connectionString);
         // Open the connection, if necessary
         if (dc.Connection.State == System.Data.ConnectionState.Closed)
             dc.Connection.Open();
         if (t != null)
             dc.Connection.EnlistTransaction(t);
         // Process each object in our work queue
         foreach (KeyValuePair<Guid, Assignment> kvp in _object)
         {
             Assignment a = kvp.Value as Assignment;
             string action = _action[kvp.Key];
             // Perform the insert
             if (action == "Insert")
             {
                 dc.Assignments.InsertOnSubmit(a);
             }
             // Perform the update
             if (action == "Update")
             {
                 dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Leads);
                 Assignment aTmp = dc.Assignments
                 .SingleOrDefault<Assignment>
                 (x => x.WorkflowID == kvp.Key);
                 if (aTmp != null)
                 {
                     aTmp.DateCompleted = a.DateCompleted;
                     aTmp.Remarks = a.Remarks;
                     aTmp.Status = a.Status;
                 }
             }
         }
         // Submit all the changes to the database
         dc.SubmitChanges();
         // Remove all objects since the changes have been submitted
         _object.Clear();
         _action.Clear();
     }
 }
Пример #4
0
        public void AddAssignment(Assignment a)
        {
            LeadDataDataContext dc = new LeadDataDataContext(_connectionString);

            dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Leads);
            Assignment aTmp = dc.Assignments
                              .SingleOrDefault <Assignment>
                                  (x => x.AssignmentID == a.AssignmentID);

            if (aTmp != null)
            {
                this.lstLeads.Items.Add(aTmp);
            }
        }
Пример #5
0
        private void LoadExistingLeads()
        {
            LeadDataDataContext dc = new LeadDataDataContext(_connectionString);

            dc.Refresh(RefreshMode.OverwriteCurrentValues, dc.Assignments);
            IEnumerable <Assignment> q = dc.Assignments
                                         .Where <Assignment>(x => x.Status == "Assigned" ||
                                                             x.Status == "Completed");

            foreach (Assignment a in q)
            {
                AddAssignment(a);
            }
        }
        protected override void Track(TrackingRecord record, TimeSpan timeout)
        {
            WorkflowInstanceRecord instanceTrackingRecord =
                record as WorkflowInstanceRecord;
            if (instanceTrackingRecord != null)
            {
                TrackInstance t = new TrackInstance();

                t.WorkflowID = instanceTrackingRecord.InstanceId;
                t.Status = instanceTrackingRecord.State;
                t.EventDate = DateTime.UtcNow;

                // Insert a record into the TrackInstance table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackInstances.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            BookmarkResumptionRecord bookTrackingRecord =
                record as BookmarkResumptionRecord;

            if (bookTrackingRecord != null)
            {
                TrackBookmark t = new TrackBookmark();

                t.WorkflowID = bookTrackingRecord.InstanceId;
                t.BookmarkName = bookTrackingRecord.BookmarkName;
                t.EventDate = DateTime.UtcNow;

                // Insert a record into the TrackBookmark table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackBookmarks.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            ActivityStateRecord activityStateRecord =
                record as ActivityStateRecord;
            if (activityStateRecord != null)
            {
                TrackActivity t = new TrackActivity();

                t.ActivityName = activityStateRecord.Activity.Name;
                t.WorkflowID = activityStateRecord.InstanceId;
                t.Status = activityStateRecord.State;
                t.EventDate = DateTime.UtcNow;

                // Concatenate all the variables into a string
                IDictionary<String, object> variables =
                    activityStateRecord.Variables;
                StringBuilder s = new StringBuilder();

                if (variables.Count > 0)
                {
                    foreach (KeyValuePair<string, object> v in variables)
                    {
                        s.AppendLine(String.Format("{0}: Value = [{1}]",
                            v.Key, v.Value));
                    }
                }

                // Store the variables string
                t.Variables = s.ToString();

                // Insert a record into the TrackActivity table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackActivities.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            CustomTrackingRecord customTrackingRecord =
                record as CustomTrackingRecord;

            if (customTrackingRecord != null)
            {
                TrackCustom t = new TrackCustom();

                t.WorkflowID = customTrackingRecord.InstanceId;
                t.CustomEventName = customTrackingRecord.Name;
                t.EventDate = DateTime.UtcNow;

                // Concatenate all the user data into a string
                string s = "";
                if ((customTrackingRecord != null) &&
                    (customTrackingRecord.Data.Count > 0))
                {
                    foreach (string data in customTrackingRecord.Data.Keys)
                    {
                        if (s.Length > 1)
                            s += "\r\n";
                        s += String.Format("{0}: Value = [{1}]", data,
                            customTrackingRecord.Data[data]);
                    }
                }
                t.UserData = s;

                // Insert a record into the TrackUser table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackCustoms.InsertOnSubmit(t);
                dc.SubmitChanges();
            }
        }
Пример #7
0
        protected override void Track(TrackingRecord record, TimeSpan timeout)
        {
            WorkflowInstanceRecord instanceTrackingRecord =
                record as WorkflowInstanceRecord;

            if (instanceTrackingRecord != null)
            {
                TrackInstance t = new TrackInstance();

                t.WorkflowID = instanceTrackingRecord.InstanceId;
                t.Status     = instanceTrackingRecord.State;
                t.EventDate  = DateTime.UtcNow;

                // Insert a record into the TrackInstance table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackInstances.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            BookmarkResumptionRecord bookTrackingRecord =
                record as BookmarkResumptionRecord;

            if (bookTrackingRecord != null)
            {
                TrackBookmark t = new TrackBookmark();

                t.WorkflowID   = bookTrackingRecord.InstanceId;
                t.BookmarkName = bookTrackingRecord.BookmarkName;
                t.EventDate    = DateTime.UtcNow;

                // Insert a record into the TrackBookmark table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackBookmarks.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            ActivityStateRecord activityStateRecord =
                record as ActivityStateRecord;

            if (activityStateRecord != null)
            {
                TrackActivity t = new TrackActivity();

                t.ActivityName = activityStateRecord.Activity.Name;
                t.WorkflowID   = activityStateRecord.InstanceId;
                t.Status       = activityStateRecord.State;
                t.EventDate    = DateTime.UtcNow;

                // Concatenate all the variables into a string
                IDictionary <String, object> variables =
                    activityStateRecord.Variables;
                StringBuilder s = new StringBuilder();

                if (variables.Count > 0)
                {
                    foreach (KeyValuePair <string, object> v in variables)
                    {
                        s.AppendLine(String.Format("{0}: Value = [{1}]",
                                                   v.Key, v.Value));
                    }
                }

                // Store the variables string
                t.Variables = s.ToString();

                // Insert a record into the TrackActivity table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackActivities.InsertOnSubmit(t);
                dc.SubmitChanges();
            }

            CustomTrackingRecord customTrackingRecord =
                record as CustomTrackingRecord;

            if (customTrackingRecord != null)
            {
                TrackCustom t = new TrackCustom();

                t.WorkflowID      = customTrackingRecord.InstanceId;
                t.CustomEventName = customTrackingRecord.Name;
                t.EventDate       = DateTime.UtcNow;

                // Concatenate all the user data into a string
                string s = "";
                if ((customTrackingRecord != null) &&
                    (customTrackingRecord.Data.Count > 0))
                {
                    foreach (string data in customTrackingRecord.Data.Keys)
                    {
                        if (s.Length > 1)
                        {
                            s += "\r\n";
                        }
                        s += String.Format("{0}: Value = [{1}]", data,
                                           customTrackingRecord.Data[data]);
                    }
                }
                t.UserData = s;

                // Insert a record into the TrackUser table
                LeadDataDataContext dc =
                    new LeadDataDataContext(_connectionString);
                dc.TrackCustoms.InsertOnSubmit(t);
                dc.SubmitChanges();
            }
        }