Example #1
0
        /// <summary>
        /// Given the DataSet of a Report query this will check if there currently last known entry,
        /// has the consent to use this data in this report, if not it will be replaced by a empty string
        /// </summary>
        public static DataTable PartnerRemoveUnconsentReportData(DataTable PartnerTable, string CheckConsentCode)
        {
            // check if its allowed that this data type is showed in report
            foreach (DataRow Row in PartnerTable.Rows)
            {
                Int64          PartnerKey = Int64.Parse(Row["PartnerKey"].ToString());
                DataConsentTDS LastEntry;

                // Note: this could be much simplyfied, and i mean a lot, llike cobining it to one sql
                // but for now, we keep it by using already present functions.

                // address
                if (
                    PartnerTable.Columns.Contains("p_street_name_c") ||
                    PartnerTable.Columns.Contains("p_city_c") ||
                    PartnerTable.Columns.Contains("p_postal_code_c") ||
                    PartnerTable.Columns.Contains("p_country_code_c")
                    )
                {
                    LastEntry = TDataHistoryWebConnector.LastKnownEntry(PartnerKey, "address");
                    if (LastEntry.PConsentHistory.Count == 0 || !LastEntry.PConsentHistory[0].AllowedPurposes.Split(',').ToList().Contains(CheckConsentCode))
                    {
                        if (PartnerTable.Columns.Contains("p_street_name_c"))
                        {
                            Row["p_street_name_c"] = "";
                        }

                        if (PartnerTable.Columns.Contains("p_city_c"))
                        {
                            Row["p_city_c"] = "";
                        }

                        if (PartnerTable.Columns.Contains("p_postal_code_c"))
                        {
                            Row["p_postal_code_c"] = "";
                        }

                        if (PartnerTable.Columns.Contains("p_country_code_c"))
                        {
                            Row["p_country_code_c"] = "";
                        }
                    }
                }

                // phone mobile
                if (PartnerTable.Columns.Contains("Mobile"))
                {
                    LastEntry = TDataHistoryWebConnector.LastKnownEntry(PartnerKey, "phone mobile");
                    if (LastEntry.PConsentHistory.Count == 0 || !LastEntry.PConsentHistory[0].AllowedPurposes.Split(',').ToList().Contains(CheckConsentCode))
                    {
                        Row["Mobile"] = "";
                    }
                }

                // phone landline
                if (PartnerTable.Columns.Contains("Phone"))
                {
                    LastEntry = TDataHistoryWebConnector.LastKnownEntry(PartnerKey, "phone landline");
                    if (LastEntry.PConsentHistory.Count == 0 || !LastEntry.PConsentHistory[0].AllowedPurposes.Split(',').ToList().Contains(CheckConsentCode))
                    {
                        Row["Phone"] = "";
                    }
                }

                // email address
                if (PartnerTable.Columns.Contains("EMail"))
                {
                    LastEntry = TDataHistoryWebConnector.LastKnownEntry(PartnerKey, "email address");
                    if (LastEntry.PConsentHistory.Count == 0 || !LastEntry.PConsentHistory[0].AllowedPurposes.Split(',').ToList().Contains(CheckConsentCode))
                    {
                        Row["EMail"] = "";
                    }
                }
            }



            return(PartnerTable);
        }
Example #2
0
        /// <summary>
        /// generate the partners from a text file that was generated with Benerator
        /// </summary>
        /// <param name="AInputBeneratorFile"></param>
        public static void GenerateFamilyPartners(string AInputBeneratorFile)
        {
            TDataBase      db          = DBAccess.Connect("GenerateFamilyPartners");
            TDBTransaction Transaction = db.BeginTransaction(IsolationLevel.ReadCommitted);

            // get a list of banks (all class BANK)
            string    sqlGetBankPartnerKeys = "SELECT p_partner_key_n FROM PUB_p_bank";
            DataTable BankKeys = db.SelectDT(sqlGetBankPartnerKeys, "keys", Transaction);

            Transaction.Rollback();

            PartnerEditTDS MainDS = new PartnerEditTDS();

            // AlanP: May 2016 - We may no longer need the UTF8 because the method now automatically discovers the encoding even with no BOM
            XmlDocument doc = TCsv2Xml.ParseCSVFile2Xml(AInputBeneratorFile, ",", Encoding.UTF8);

            XmlNode RecordNode = doc.FirstChild.NextSibling.FirstChild;

            while (RecordNode != null)
            {
                string familySituation = TXMLParser.GetAttribute(RecordNode, "familySituation");

                PFamilyRow  familyRecord     = null;
                PPartnerRow FamilyPartnerRow = null;

                if (familySituation == "singleMan")
                {
                    familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Male", MainDS);
                    SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Male", MainDS);
                }
                else if (familySituation == "singleWoman")
                {
                    familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Female", MainDS);
                    SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Female", MainDS);
                }
                else if (familySituation == "family")
                {
                    familyRecord = SampleDataWorkers.GenerateFamilyRecord(RecordNode, "Male", MainDS);
                    SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Male", MainDS);
                    SampleDataWorkers.GeneratePersonRecord(RecordNode, familyRecord, "Female", MainDS);

                    int NumberOfChildren = Convert.ToInt32(TXMLParser.GetAttribute(RecordNode, "numberOfChildren"));

                    if (NumberOfChildren > 0)
                    {
                        FamilyPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(familyRecord.PartnerKey);
                        FamilyPartnerRow.AddresseeTypeCode = MPartnerConstants.ADDRESSEETYPE_FAMILY;
                    }
                }

                FamilyPartnerRow = (PPartnerRow)MainDS.PPartner.Rows.Find(familyRecord.PartnerKey);
                FamilyPartnerRow.ReceiptEachGift        = false;
                FamilyPartnerRow.ReceiptLetterFrequency = "Annual";

                SampleDataWorkers.GenerateAddressForFamily(RecordNode, familyRecord, MainDS);

                SampleDataWorkers.GenerateBankDetails(RecordNode, familyRecord, MainDS, BankKeys);

                if (MainDS.PFamily.Rows.Count % 100 == 0)
                {
                    TLogging.Log("created donor " + MainDS.PFamily.Rows.Count.ToString() + " " + familyRecord.FamilyName);
                }

                RecordNode = RecordNode.NextSibling;
            }

            // we do not save person records for normal family partners
            MainDS.PPerson.Clear();

            // need to clear all partner records of the PERSON partners as well
            DataView PersonPartners = new DataView(MainDS.PPartner);

            PersonPartners.RowFilter =
                string.Format("{0} = '{1}'",
                              PPartnerTable.GetPartnerClassDBName(),
                              MPartnerConstants.PARTNERCLASS_PERSON);

            DataView PartnerLocations = new DataView(MainDS.PPartnerLocation);

            foreach (DataRowView rv in PersonPartners)
            {
                PPartnerRow partnerRow = (PPartnerRow)rv.Row;

                PartnerLocations.RowFilter =
                    string.Format("{0} = {1}",
                                  PPartnerLocationTable.GetPartnerKeyDBName(),
                                  partnerRow.PartnerKey);

                PartnerLocations[0].Row.Delete();

                partnerRow.Delete();
            }

            // MainDS.ThrowAwayAfterSubmitChanges = true;

            PartnerEditTDSAccess.SubmitChanges(MainDS);

            RecordNode = doc.FirstChild.NextSibling.FirstChild;

            DataView FamilyPartners = new DataView(MainDS.PFamily);

            foreach (DataRowView rv in FamilyPartners)
            {
                PFamilyRow partnerRow = (PFamilyRow)rv.Row;

                string familySituation = TXMLParser.GetAttribute(RecordNode, "familySituation");
                string setmail;
                if (familySituation == "singleWoman")
                {
                    setmail = TXMLParser.GetAttribute(RecordNode, "FemaleEmail");
                }
                else
                {
                    setmail = TXMLParser.GetAttribute(RecordNode, "MaleEmail");
                }

                string allowed_contents = TXMLParser.GetAttribute(RecordNode, "AllowedConsents");
                string channel_contents = TXMLParser.GetAttribute(RecordNode, "ConsentChannel");

                DataHistoryChange change = new DataHistoryChange
                {
                    PartnerKey  = partnerRow.PartnerKey,
                    Type        = "email address",
                    Value       = setmail,
                    ConsentDate = DateTime.Now,
                    ChannelCode = channel_contents,
                    Permissions = allowed_contents
                };

                // Build verification string
                List <string> Changes  = new List <string>();
                List <string> Expected = new List <string>()
                {
                    "email address"
                };

                Changes.Add(JsonConvert.SerializeObject(change));

                // RegisterChanges ()
                bool success = TDataHistoryWebConnector.RegisterChanges(Changes, Expected);
                if (!success)
                {
                    throw new Exception("saving conents failed");
                }
                RecordNode = RecordNode.NextSibling;
            }


            TLogging.Log("after saving donors");
        }