Example #1
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="APartnerKey"></param>
        /// <param name="ALastContactDate"></param>
        /// <param name="ADataBase">An instantiated <see cref="TDataBase" /> object, or null (default = null). If null
        /// gets passed then the Method executes DB commands with a new Database connection</param>
        public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate,
                                              TDataBase ADataBase = null)
        {
            TDBTransaction ReadTransaction = new TDBTransaction();

            DataSet        LastContactDS;
            PContactLogRow ContactDR;
            DateTime       LastContactDate = new DateTime();

            LastContactDS = new DataSet("LastContactDate");
            LastContactDS.Tables.Add(new PContactLogTable());

            TDataBase db = DBAccess.Connect("GetLastContactDate", ADataBase);

            db.ReadTransaction(
                ref ReadTransaction,
                delegate
            {
                PContactLogAccess.LoadViaPPartner(LastContactDS, APartnerKey,
                                                  StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction,
                                                  StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1);

                if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0)
                {
                    ContactDR       = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0];
                    LastContactDate = ContactDR.ContactDate;
                }
                else
                {
                    LastContactDate = DateTime.MinValue;
                }
            });

            ALastContactDate = LastContactDate;
        }
Example #2
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="APartnerKey"></param>
        /// <param name="ALastContactDate"></param>
        /// <param name="ADataBase">An instantiated <see cref="TDataBase" /> object, or null (default = null). If null
        /// gets passed then the Method executes DB commands with the 'globally available'
        /// <see cref="DBAccess.GDBAccessObj" /> instance, otherwise with the instance that gets passed in with this
        /// Argument!</param>
        public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate,
                                              TDataBase ADataBase = null)
        {
            TDBTransaction ReadTransaction = null;

            DataSet        LastContactDS;
            PContactLogRow ContactDR;
            DateTime       LastContactDate = new DateTime();

            LastContactDS = new DataSet("LastContactDate");
            LastContactDS.Tables.Add(new PContactLogTable());

            DBAccess.GetDBAccessObj(ADataBase).GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted,
                                                                                   TEnforceIsolationLevel.eilMinimum,
                                                                                   ref ReadTransaction,
                                                                                   delegate
            {
                PContactLogAccess.LoadViaPPartnerPPartnerContact(LastContactDS, APartnerKey,
                                                                 StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction,
                                                                 StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1);

                if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0)
                {
                    ContactDR       = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0];
                    LastContactDate = ContactDR.ContactDate;
                }
                else
                {
                    LastContactDate = DateTime.MinValue;
                }
            });

            ALastContactDate = LastContactDate;
        }
Example #3
0
        /// <summary>
        /// todoComment
        /// </summary>
        /// <param name="APartnerKey"></param>
        /// <param name="ALastContactDate"></param>
        public static void GetLastContactDate(Int64 APartnerKey, out DateTime ALastContactDate)
        {
            TDBTransaction ReadTransaction;
            Boolean        NewTransaction;
            DataSet        LastContactDS;
            PContactLogRow ContactDR;

            LastContactDS = new DataSet("LastContactDate");
            LastContactDS.Tables.Add(new PContactLogTable());
            ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                                TEnforceIsolationLevel.eilMinimum,
                                                                                out NewTransaction);
            PContactLogAccess.LoadViaPPartnerPPartnerContact(LastContactDS, APartnerKey,
                                                             StringHelper.InitStrArr(new String[] { PContactLogTable.GetContactDateDBName() }), ReadTransaction,
                                                             StringHelper.InitStrArr(new String[] { "ORDER BY " + PContactLogTable.GetContactDateDBName() + " DESC" }), 0, 1);

            if (LastContactDS.Tables[PContactLogTable.GetTableName()].Rows.Count > 0)
            {
                ContactDR        = ((PContactLogTable)LastContactDS.Tables[PContactLogTable.GetTableName()])[0];
                ALastContactDate = ContactDR.ContactDate;
            }
            else
            {
                ALastContactDate = DateTime.MinValue;
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.CommitTransaction();
                TLogging.LogAtLevel(7, "TMailroom.GetLastContactDate: committed own transaction.");
            }
        }
Example #4
0
        public static PContactLogTable FindContactLogsForPartner(long partnerKey)
        {
            Boolean          NewTransaction;
            PContactLogTable contacts = new PContactLogTable();

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                contacts = PContactLogAccess.LoadViaPPartnerPPartnerContact(partnerKey, WriteTransaction);
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.RollbackTransaction();
            }

            return(contacts);
        }
        /// <summary>
        /// Add Contact Log record for Partners in selected Extract
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AddContactLog(object sender, EventArgs e)
        {
            PContactLogTable ContactLogTable = new PContactLogTable();
            PContactLogRow   ContactLogRow   = ContactLogTable.NewRowTyped();

            string MessageText;

            if (!WarnIfNotSingleSelection(Catalog.GetString("Add Contact Log")) &&
                (GetSelectedDetailRow() != null))
            {
                TFrmUpdateExtractAddContactLogDialog dialog = new TFrmUpdateExtractAddContactLogDialog(this.FindForm());
                dialog.SetExtractName(GetSelectedDetailRow().ExtractName);

                if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dialog.GetReturnedParameters(ref ContactLogRow);
                    ContactLogTable.Rows.Add(ContactLogRow);
                    // perform update of extract data on server side
                    TRemote.MPartner.Partner.WebConnectors.AddContactLog(
                        GetSelectedDetailRow().ExtractId, ref ContactLogTable);

                    MessageText =
                        string.Format(Catalog.GetString(
                                          "Contact Log {0} - {1} successfully added for {2} Partner(s) in Extract {3}."),
                                      ContactLogRow.ContactCode, ContactLogRow.ContactDate, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName);

                    MessageBox.Show(MessageText,
                                    Catalog.GetString("Add Contact Log"),
                                    MessageBoxButtons.OK,
                                    MessageBoxIcon.Information);
                }
            }
        }
Example #6
0
 /// <summary>
 /// Selects the given contact log.
 /// </summary>
 /// <param name="AContactLogID">Contact Log identifier.</param>
 public void SelectContactLogID(string AContactLogID)
 {
     foreach (DataRowView RowView in FMainDS.PContactLog.DefaultView)
     {
         if (RowView[PContactLogTable.GetContactLogIdDBName()].ToString() == AContactLogID)
         {
             grdDetails.SelectRowInGrid(grdDetails.Rows.DataSourceRowToIndex(RowView) + 1);
             return;
         }
     }
 }
Example #7
0
        public static void AddContactLog(List <Int64> APartnerKeys,
                                         DateTime AContactDate,
                                         string AContactor,
                                         string AMethodOfContact,
                                         string AComment,
                                         string AModuleID,
                                         string AMailingCode)
        {
            TDBTransaction Transaction  = new TDBTransaction();
            bool           SubmissionOK = false;

            DBAccess.WriteTransaction(
                ref Transaction,
                ref SubmissionOK,
                delegate
            {
                PContactLogTable contacts = new PContactLogTable();
                PContactLogRow contact    = contacts.NewRowTyped();
                contact.ContactLogId      = Transaction.DataBaseObj.GetNextSequenceValue("seq_contact", Transaction);
                contact.ContactDate       = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day);
                //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute;
                contact.ContactCode    = AMethodOfContact;
                contact.ContactComment = AComment;
                contact.ModuleId       = AModuleID;
                contact.Contactor      = AContactor;
                contact.UserId         = UserInfo.GetUserInfo().UserID;
                contacts.Rows.Add(contact);

                if (AMailingCode.Length > 0)
                {
                    contact.MailingCode = AMailingCode;
                }

                // TODO: restrictions implemented via p_restricted_l or s_user_id_c

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                APartnerKeys.ForEach(partnerKey =>
                {
                    PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                    partnerContact.ContactLogId       = contact.ContactLogId;
                    partnerContact.PartnerKey         = partnerKey;
                    partnerContacts.Rows.Add(partnerContact);
                });

                PContactLogAccess.SubmitChanges(contacts, Transaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, Transaction);

                SubmissionOK = true;
            });
        }
Example #8
0
        private void InitializeManualCode()
        {
            if (!FMainDS.Tables.Contains(PContactLogTable.GetTableName()))
            {
                FMainDS.Merge(TRemote.MPartner.Partner.WebConnectors.GetPartnerContactLogData(FMainDS.PPartner[0].PartnerKey));
                FMainDS.PContactLog.DefaultView.AllowNew = false;
            }

            FMainDS.InitVars();

            OnHookupDataChange(new THookupPartnerEditDataChangeEventArgs(TPartnerEditTabPageEnum.petpContacts));
            //Hook up DataSavingStarted Event to be able to run code before SaveChanges is doing anything
            FPetraUtilsObject.DataSavingStarted += new TDataSavingStartHandler(this.DataSavingStarted);
            ucoDetails.SpecialInitUserControl();
        }
Example #9
0
        public static void AddContactLog(int ExtractId, ref PContactLogTable ContactLogTable)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                var extractTable = MExtractAccess.LoadViaMExtractMaster(ExtractId, WriteTransaction).AsEnumerable();
                var partnerKeys  = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                ContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                partnerKeys.ToList().ForEach(partnerKey =>
                {
                    PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                    partnerContact.ContactLogId       = ContactLogId;
                    partnerContact.PartnerKey         = (long)partnerKey;
                    partnerContacts.Rows.Add(partnerContact);
                });

                PContactLogAccess.SubmitChanges(ContactLogTable, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception e)
            {
                TLogging.Log(
                    "An Exception occured during the adding of a Contact to Partners in an Extract:" +
                    Environment.NewLine + e.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
        private void InitializeManualCode()
        {
            // show this dialog in center of screen
            this.StartPosition = FormStartPosition.CenterScreen;

            FMainDS = new PartnerEditTDS();

            // now add the one subscription row to the DS that we are working with
            PContactLogTable ContactLogTable = new PContactLogTable();
            FMainDS.Merge(ContactLogTable);
            PContactLogRow ContactLogRow = FMainDS.PContactLog.NewRowTyped(true);
            ContactLogRow.ContactCode = "";
            FMainDS.PContactLog.Rows.Add(ContactLogRow);

            ucoContactLog.MainDS = FMainDS;
            ucoContactLog.SpecialInitUserControl();
            FPetraUtilsObject.HasChanges = false;
        }
Example #11
0
        public static void DeleteContacts(
            PContactLogTable AContactLogs)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                foreach (PContactLogRow contactLogRow in AContactLogs.Rows)
                {
                    var contactLogs = PPartnerContactAccess.LoadViaPContactLog((long)contactLogRow[PContactLogTable.ColumnContactLogIdId],
                                                                               WriteTransaction);

                    foreach (PPartnerContactRow partnerContactRow in contactLogs.Rows)
                    {
                        partnerContactRow.Delete();
                    }

                    PPartnerContactAccess.SubmitChanges(contactLogs, WriteTransaction);
                    contactLogRow.Delete();
                }

                PContactLogAccess.SubmitChanges(AContactLogs, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured during the deletion of Contact Logs:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
        private void InitializeManualCode()
        {
            // show this dialog in center of screen
            this.StartPosition = FormStartPosition.CenterScreen;

            FMainDS = new PartnerEditTDS();

            // now add the one subscription row to the DS that we are working with
            PContactLogTable ContactLogTable = new PContactLogTable();

            FMainDS.Merge(ContactLogTable);
            PContactLogRow ContactLogRow = FMainDS.PContactLog.NewRowTyped(true);

            ContactLogRow.ContactCode = "";
            FMainDS.PContactLog.Rows.Add(ContactLogRow);

            ucoContactLog.MainDS = FMainDS;
            ucoContactLog.SpecialInitUserControl();
            FPetraUtilsObject.HasChanges = false;
        }
Example #13
0
        public static void AddContactLog(int AExtractId,
                                         PContactLogTable AContactLogTable,
                                         PPartnerContactAttributeTable APartnerContactAttributeTable)
        {
            TDBTransaction WriteTransaction = null;
            bool           SubmissionOK     = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                                                                  TEnforceIsolationLevel.eilMinimum, ref WriteTransaction, ref SubmissionOK,
                                                                  delegate
            {
                var extractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, WriteTransaction).AsEnumerable();
                var partnerKeys  = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                AContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                partnerKeys.ToList().ForEach(partnerKey =>
                {
                    PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                    partnerContact.ContactLogId       = ContactLogId;
                    partnerContact.PartnerKey         = (long)partnerKey;
                    partnerContacts.Rows.Add(partnerContact);
                });

                foreach (PPartnerContactAttributeRow Row in APartnerContactAttributeTable.Rows)
                {
                    Row.ContactId = ContactLogId;
                }

                PContactLogAccess.SubmitChanges(AContactLogTable, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);
                PPartnerContactAttributeAccess.SubmitChanges(APartnerContactAttributeTable, WriteTransaction);

                SubmissionOK = true;
            });
        }
Example #14
0
        public static void DeleteContacts(
            PContactLogTable AContactLogs)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                foreach (PContactLogRow contactLogRow in AContactLogs.Rows)
                {
                    var contactLogs = PPartnerContactAccess.LoadViaPContactLog((long)contactLogRow[PContactLogTable.ColumnContactLogIdId],
                        WriteTransaction);

                    foreach (PPartnerContactRow partnerContactRow in contactLogs.Rows)
                    {
                        partnerContactRow.Delete();
                    }

                    PPartnerContactAccess.SubmitChanges(contactLogs, WriteTransaction);
                    contactLogRow.Delete();
                }

                PContactLogAccess.SubmitChanges(AContactLogs, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured during the deletion of Contact Logs:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
Example #15
0
        public static PContactLogTable FindContactLogsForPartner(long partnerKey)
        {
            Boolean NewTransaction;
            PContactLogTable contacts = new PContactLogTable();

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                contacts = PContactLogAccess.LoadViaPPartnerPPartnerContact(partnerKey, WriteTransaction);
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.RollbackTransaction();
            }

            return contacts;
        }
Example #16
0
        public static PContactLogTable FindContacts(string AContactor,
            DateTime? AContactDate,
            string ACommentContains,
            string AMethodOfContact,
            string AModuleID,
            string AMailingCode)
        {
            Boolean NewTransaction;
            PContactLogTable contacts = new PContactLogTable();

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PContactLogTable TempTable = new PContactLogTable();
                PContactLogRow TemplateRow = TempTable.NewRowTyped(false);

                if (AContactor.Length > 0)
                {
                    TemplateRow.Contactor = AContactor;
                }

                if (AContactDate.HasValue)
                {
                    TemplateRow.ContactDate = new DateTime(AContactDate.Value.Year, AContactDate.Value.Month, AContactDate.Value.Day);
                }

                if (AMethodOfContact.Length > 0)
                {
                    TemplateRow.ContactCode = AMethodOfContact;
                }

                if (AModuleID.Length > 0)
                {
                    TemplateRow.ModuleId = AModuleID;
                }

                if (AMailingCode.Length > 0)
                {
                    TemplateRow.MailingCode = AMailingCode;
                }

                contacts = PContactLogAccess.LoadUsingTemplate(TemplateRow, WriteTransaction);

                Int32 Counter = 0;

                while (Counter < contacts.Rows.Count)
                {
                    if ((ACommentContains.Length > 0) && !StringHelper.ContainsI(contacts[Counter].ContactComment, ACommentContains))
                    {
                        contacts.Rows.RemoveAt(Counter);
                    }
                    else
                    {
                        Counter++;
                    }
                }
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.RollbackTransaction();
            }

            return contacts;
        }
Example #17
0
        public static void AddContactLog(List <Int64>APartnerKeys,
            DateTime AContactDate,
            string AContactor,
            string AMethodOfContact,
            string AComment,
            string AModuleID,
            string AMailingCode)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PContactLogTable contacts = new PContactLogTable();
                PContactLogRow contact = contacts.NewRowTyped();
                contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);
                contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day);
                //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute;
                contact.ContactCode = AMethodOfContact;
                contact.ContactComment = AComment;
                contact.ModuleId = AModuleID;
                contact.Contactor = AContactor;
                contact.UserId = UserInfo.GUserInfo.UserID;
                contacts.Rows.Add(contact);

                if (AMailingCode.Length > 0)
                {
                    contact.MailingCode = AMailingCode;
                }

                // TODO: restrictions implemented via p_restricted_l or s_user_id_c

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                APartnerKeys.ForEach(partnerKey =>
                    {
                        PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                        partnerContact.ContactLogId = contact.ContactLogId;
                        partnerContact.PartnerKey = partnerKey;
                        partnerContacts.Rows.Add(partnerContact);
                    });

                PContactLogAccess.SubmitChanges(contacts, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured during the adding of a Contact:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
Example #18
0
        public static void AddContactLog(int ExtractId, ref PContactLogTable ContactLogTable)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                var extractTable = MExtractAccess.LoadViaMExtractMaster(ExtractId, WriteTransaction).AsEnumerable();
                var partnerKeys = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                ContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                partnerKeys.ToList().ForEach(partnerKey =>
                    {
                        PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                        partnerContact.ContactLogId = ContactLogId;
                        partnerContact.PartnerKey = (long)partnerKey;
                        partnerContacts.Rows.Add(partnerContact);
                    });

                PContactLogAccess.SubmitChanges(ContactLogTable, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception e)
            {
                TLogging.Log(
                    "An Exception occured during the adding of a Contact to Partners in an Extract:" +
                    Environment.NewLine + e.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
        private PContactLogTable GetContactsInternal(out int ACount, out DateTime ALastContact)
        {
            TDBTransaction ReadTransaction;
            Boolean NewTransaction = false;
            PContactLogTable ContactDT;

            ALastContact = DateTime.MinValue;
            ContactDT = new PContactLogTable();
            try
            {
                ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.RepeatableRead,
                    TEnforceIsolationLevel.eilMinimum,
                    out NewTransaction);

                var PartnerContacts = PPartnerContactAccess.LoadViaPPartner(FPartnerKey, ReadTransaction);
                ACount = PartnerContacts.Rows.Count;

                ContactDT = PContactLogAccess.LoadViaPPartnerPPartnerContact(FPartnerKey, ReadTransaction);

                foreach (PContactLogRow row in ContactDT.Rows)
                {
                    ALastContact = row.ContactDate > ALastContact ? row.ContactDate : ALastContact;
                }
            }
            finally
            {
                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                    TLogging.LogAtLevel(7, "TPartnerEditUIConnector.GetSubscriptionsInternal: committed own transaction.");
                }
            }

            return ContactDT;
        }
Example #20
0
 /// <summary>
 /// Count the subscriptions
 /// </summary>
 /// <param name="ATable">table with contacts</param>
 /// <param name="ATotalContacts">returns the total number of contacts</param>
 public static void CalculateTabCountsContacts(PContactLogTable ATable, out Int32 ATotalContacts)
 {
     // Inspect only CurrentRows (this excludes Deleted DataRows)
     ATotalContacts = new DataView(ATable, "", "", DataViewRowState.CurrentRows).Count;
 }
Example #21
0
        public static void AddContactLog(List <Int64> APartnerKeys,
                                         DateTime AContactDate,
                                         string AContactor,
                                         string AMethodOfContact,
                                         string AComment,
                                         string AModuleID,
                                         string AMailingCode)
        {
            Boolean NewTransaction;

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.Serializable,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PContactLogTable contacts = new PContactLogTable();
                PContactLogRow   contact  = contacts.NewRowTyped();
                contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);
                contact.ContactDate  = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day);
                //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute;
                contact.ContactCode    = AMethodOfContact;
                contact.ContactComment = AComment;
                contact.ModuleId       = AModuleID;
                contact.Contactor      = AContactor;
                contact.UserId         = UserInfo.GUserInfo.UserID;
                contacts.Rows.Add(contact);

                if (AMailingCode.Length > 0)
                {
                    contact.MailingCode = AMailingCode;
                }

                // TODO: restrictions implemented via p_restricted_l or s_user_id_c

                PPartnerContactTable partnerContacts = new PPartnerContactTable();
                APartnerKeys.ForEach(partnerKey =>
                {
                    PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                    partnerContact.ContactLogId       = contact.ContactLogId;
                    partnerContact.PartnerKey         = partnerKey;
                    partnerContacts.Rows.Add(partnerContact);
                });

                PContactLogAccess.SubmitChanges(contacts, WriteTransaction);
                PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured during the adding of a Contact:" + Environment.NewLine + Exc.ToString());

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.RollbackTransaction();
                }

                throw;
            }
        }
Example #22
0
        public static PContactLogTable FindContacts(string AContactor,
                                                    DateTime?AContactDate,
                                                    string ACommentContains,
                                                    string AMethodOfContact,
                                                    string AModuleID,
                                                    string AMailingCode)
        {
            Boolean          NewTransaction;
            PContactLogTable contacts = new PContactLogTable();

            TDBTransaction WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                                                TEnforceIsolationLevel.eilMinimum, out NewTransaction);

            try
            {
                PContactLogTable TempTable   = new PContactLogTable();
                PContactLogRow   TemplateRow = TempTable.NewRowTyped(false);

                if (AContactor.Length > 0)
                {
                    TemplateRow.Contactor = AContactor;
                }

                if (AContactDate.HasValue)
                {
                    TemplateRow.ContactDate = new DateTime(AContactDate.Value.Year, AContactDate.Value.Month, AContactDate.Value.Day);
                }

                if (AMethodOfContact.Length > 0)
                {
                    TemplateRow.ContactCode = AMethodOfContact;
                }

                if (AModuleID.Length > 0)
                {
                    TemplateRow.ModuleId = AModuleID;
                }

                if (AMailingCode.Length > 0)
                {
                    TemplateRow.MailingCode = AMailingCode;
                }

                contacts = PContactLogAccess.LoadUsingTemplate(TemplateRow, WriteTransaction);

                Int32 Counter = 0;

                while (Counter < contacts.Rows.Count)
                {
                    if ((ACommentContains.Length > 0) && !StringHelper.ContainsI(contacts[Counter].ContactComment, ACommentContains))
                    {
                        contacts.Rows.RemoveAt(Counter);
                    }
                    else
                    {
                        Counter++;
                    }
                }
            }
            catch (Exception e)
            {
                TLogging.Log(e.Message);
                TLogging.Log(e.StackTrace);
            }

            if (NewTransaction)
            {
                DBAccess.GDBAccessObj.RollbackTransaction();
            }

            return(contacts);
        }
Example #23
0
        public static void AddContactLog(List <Int64>APartnerKeys,
            DateTime AContactDate,
            string AContactor,
            string AMethodOfContact,
            string AComment,
            string AModuleID,
            string AMailingCode)
        {
            TDBTransaction Transaction = null;
            bool SubmissionOK = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                ref Transaction,
                ref SubmissionOK,
                delegate
                {
                    PContactLogTable contacts = new PContactLogTable();
                    PContactLogRow contact = contacts.NewRowTyped();
                    contact.ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", Transaction);
                    contact.ContactDate = new DateTime(AContactDate.Year, AContactDate.Month, AContactDate.Day);
                    //contact.ContactTime = AContactDate.Hour * 60 + AContactDate.Minute;
                    contact.ContactCode = AMethodOfContact;
                    contact.ContactComment = AComment;
                    contact.ModuleId = AModuleID;
                    contact.Contactor = AContactor;
                    contact.UserId = UserInfo.GUserInfo.UserID;
                    contacts.Rows.Add(contact);

                    if (AMailingCode.Length > 0)
                    {
                        contact.MailingCode = AMailingCode;
                    }

                    // TODO: restrictions implemented via p_restricted_l or s_user_id_c

                    PPartnerContactTable partnerContacts = new PPartnerContactTable();
                    APartnerKeys.ForEach(partnerKey =>
                        {
                            PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                            partnerContact.ContactLogId = contact.ContactLogId;
                            partnerContact.PartnerKey = partnerKey;
                            partnerContacts.Rows.Add(partnerContact);
                        });

                    PContactLogAccess.SubmitChanges(contacts, Transaction);
                    PPartnerContactAccess.SubmitChanges(partnerContacts, Transaction);

                    SubmissionOK = true;
                });
        }
Example #24
0
        public static void AddContactLog(int AExtractId,
            PContactLogTable AContactLogTable,
            PPartnerContactAttributeTable APartnerContactAttributeTable)
        {
            TDBTransaction WriteTransaction = null;
            bool SubmissionOK = false;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable,
                TEnforceIsolationLevel.eilMinimum, ref WriteTransaction, ref SubmissionOK,
                delegate
                {
                    var extractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, WriteTransaction).AsEnumerable();
                    var partnerKeys = extractTable.Select(e => e.ItemArray[MExtractTable.ColumnPartnerKeyId]);

                    long ContactLogId = DBAccess.GDBAccessObj.GetNextSequenceValue("seq_contact", WriteTransaction);

                    AContactLogTable.Rows[0][PContactLogTable.ColumnContactLogIdId] = ContactLogId;

                    PPartnerContactTable partnerContacts = new PPartnerContactTable();
                    partnerKeys.ToList().ForEach(partnerKey =>
                        {
                            PPartnerContactRow partnerContact = partnerContacts.NewRowTyped();
                            partnerContact.ContactLogId = ContactLogId;
                            partnerContact.PartnerKey = (long)partnerKey;
                            partnerContacts.Rows.Add(partnerContact);
                        });

                    foreach (PPartnerContactAttributeRow Row in APartnerContactAttributeTable.Rows)
                    {
                        Row.ContactId = ContactLogId;
                    }

                    PContactLogAccess.SubmitChanges(AContactLogTable, WriteTransaction);
                    PPartnerContactAccess.SubmitChanges(partnerContacts, WriteTransaction);
                    PPartnerContactAttributeAccess.SubmitChanges(APartnerContactAttributeTable, WriteTransaction);

                    SubmissionOK = true;
                });
        }
        /// <summary>
        /// Add Contact Log record for Partners in selected Extract
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void AddContactLog(object sender, EventArgs e)
        {
            PContactLogTable ContactLogTable = new PContactLogTable();
            PContactLogRow ContactLogRow = ContactLogTable.NewRowTyped();

            string MessageText;

            if (!WarnIfNotSingleSelection(Catalog.GetString("Add Contact Log"))
                && (GetSelectedDetailRow() != null))
            {
                TFrmUpdateExtractAddContactLogDialog dialog = new TFrmUpdateExtractAddContactLogDialog(this.FindForm());
                dialog.SetExtractName(GetSelectedDetailRow().ExtractName);

                if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    dialog.GetReturnedParameters(ref ContactLogRow);
                    ContactLogTable.Rows.Add(ContactLogRow);
                    // perform update of extract data on server side
                    TRemote.MPartner.Partner.WebConnectors.AddContactLog(
                        GetSelectedDetailRow().ExtractId, ref ContactLogTable);

                    MessageText =
                        string.Format(Catalog.GetString(
                                "Contact Log {0} - {1} successfully added for {2} Partner(s) in Extract {3}."),
                            ContactLogRow.ContactCode, ContactLogRow.ContactDate, GetSelectedDetailRow().KeyCount, GetSelectedDetailRow().ExtractName);

                    MessageBox.Show(MessageText,
                        Catalog.GetString("Add Contact Log"),
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Information);
                }
            }
        }
Example #26
0
 /// <summary>
 /// Count the subscriptions
 /// </summary>
 /// <param name="ATable">table with contacts</param>
 /// <param name="ATotalContacts">returns the total number of contacts</param>
 public static void CalculateTabCountsContacts(PContactLogTable ATable, out Int32 ATotalContacts)
 {
     // Inspect only CurrentRows (this excludes Deleted DataRows)
     ATotalContacts = new DataView(ATable, "", "", DataViewRowState.CurrentRows).Count;
 }