Ejemplo n.º 1
0
        public static void AddContactAttributeToContacts(int contactId,
                                                         List <Int64> APartnerKeys,
                                                         List <int> attributeCode,
                                                         List <int> attributeDetailCode)
        {
            TDBTransaction Transaction  = new TDBTransaction();
            bool           SubmissionOK = false;

            DBAccess.WriteTransaction(
                ref Transaction,
                ref SubmissionOK,
                delegate
            {
                PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                for (int i = 0; i < APartnerKeys.Count; i++)
                {
                    PPartnerContactAttributeRow row = attributes.NewRowTyped();
                    row.ContactId = contactId;
                }

                PPartnerContactAttributeAccess.SubmitChanges(attributes, Transaction);

                SubmissionOK = true;
            });
        }
Ejemplo n.º 2
0
        public static void DeleteContacts(
            DataTable AContactLogs)
        {
            TDBTransaction Transaction  = new TDBTransaction();
            bool           SubmissionOK = false;

            DBAccess.WriteTransaction(
                ref Transaction,
                ref SubmissionOK,
                delegate
            {
                Boolean LastPartnerForThisContactLog = true;

                foreach (DataRow contactLogRow in AContactLogs.Rows)
                {
                    Int64 ContactLogId = Convert.ToInt64(contactLogRow["p_contact_log_id_i"]);
                    Int64 PartnerKey   = Convert.ToInt64(contactLogRow["p_partner_key_n"]);

                    LastPartnerForThisContactLog = true;

                    if (IsContactLogAssociatedWithMoreThanOnePartner(ContactLogId, Transaction))
                    {
                        LastPartnerForThisContactLog = false;
                    }

                    PPartnerContactTable contactLogs = PPartnerContactAccess.LoadByPrimaryKey(
                        PartnerKey, ContactLogId, Transaction);

                    contactLogs[0].Delete();

                    PPartnerContactAccess.SubmitChanges(contactLogs, Transaction);

                    if (LastPartnerForThisContactLog)
                    {
                        // now we also need to delete the contact attributes (linked with this contact log)
                        PPartnerContactAttributeRow template = new PPartnerContactAttributeTable().NewRowTyped(false);
                        template.ContactId = ContactLogId;

                        if (PPartnerContactAttributeAccess.CountUsingTemplate(template, null, Transaction) > 0)
                        {
                            PPartnerContactAttributeAccess.DeleteUsingTemplate(template, null, Transaction);
                        }

                        // and the contact log itself needs to be deleted (if no other partner refers to it)
                        PContactLogAccess.DeleteByPrimaryKey(ContactLogId, Transaction);
                    }

                    SubmissionOK = true;
                }
            });
        }
Ejemplo n.º 3
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;
            });
        }
Ejemplo n.º 4
0
        public static void AddContactAttributeToContacts(int contactId,
                                                         List <Int64> APartnerKeys,
                                                         List <int> attributeCode,
                                                         List <int> attributeDetailCode)
        {
            Boolean NewTransaction;

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

            try
            {
                PPartnerContactAttributeTable attributes = new PPartnerContactAttributeTable();

                for (int i = 0; i < APartnerKeys.Count; i++)
                {
                    PPartnerContactAttributeRow row = attributes.NewRowTyped();
                    row.ContactId = contactId;
                }

                PPartnerContactAttributeAccess.SubmitChanges(attributes, WriteTransaction);

                if (NewTransaction)
                {
                    DBAccess.GDBAccessObj.CommitTransaction();
                }
            }
            catch (Exception Exc)
            {
                TLogging.Log("An Exception occured while associating a Contact with a ContactAttribute:" + Environment.NewLine + Exc.ToString());

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

                throw;
            }
        }
Ejemplo n.º 5
0
        public static PartnerEditTDS GetPartnerContactLogData(long APartnerKey, TDataBase ADataBase = null)
        {
            PartnerEditTDS ReturnDS = new PartnerEditTDS();

            TDBTransaction Transaction = new TDBTransaction();
            TDataBase      db          = DBAccess.Connect("GetPartnerContactLogData", ADataBase);

            db.ReadTransaction(ref Transaction,
                               delegate
            {
                ReturnDS.Merge(PContactLogAccess.LoadViaPPartnerPPartnerContact(APartnerKey, Transaction));
                ReturnDS.Merge(PPartnerContactAccess.LoadViaPPartner(APartnerKey, Transaction));

                if ((ReturnDS.PContactLog != null) && (ReturnDS.PContactLog.Count > 0))
                {
                    foreach (PContactLogRow Row in ReturnDS.PContactLog.Rows)
                    {
                        ReturnDS.Merge(PPartnerContactAttributeAccess.LoadViaPContactLog(Row.ContactLogId, Transaction));
                    }
                }
            });

            return(ReturnDS);
        }
Ejemplo n.º 6
0
        public static PartnerEditTDS GetPartnerContactLogData(long APartnerKey)
        {
            PartnerEditTDS ReturnDS = new PartnerEditTDS();

            TDBTransaction Transaction = null;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted,
                                                                      TEnforceIsolationLevel.eilMinimum, ref Transaction,
                                                                      delegate
            {
                ReturnDS.Merge(PContactLogAccess.LoadViaPPartnerPPartnerContact(APartnerKey, Transaction));
                ReturnDS.Merge(PPartnerContactAccess.LoadViaPPartner(APartnerKey, Transaction));

                if ((ReturnDS.PContactLog != null) && (ReturnDS.PContactLog.Count > 0))
                {
                    foreach (PContactLogRow Row in ReturnDS.PContactLog.Rows)
                    {
                        ReturnDS.Merge(PPartnerContactAttributeAccess.LoadViaPContactLog(Row.ContactLogId, Transaction));
                    }
                }
            });

            return(ReturnDS);
        }