Example #1
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            ICollection <String> param_explicit_specialtypes;

            // prepare list of special types
            param_explicit_specialtypes = AParameters.Get("param_explicit_specialtypes").ToString().Split(new Char[] { ',', });

            if (param_explicit_specialtypes.Count == 0)
            {
                throw new NoNullAllowedException("At least one option must be checked.");
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("specialtype", OdbcType.VarChar, param_explicit_specialtypes));
            ASQLParameterList.Add(new OdbcParameter("param_dateFieldsIncluded", OdbcType.Bit)
            {
                Value = !AParameters.Get("param_date_set").IsZeroOrNull()
            });
            ASQLParameterList.Add(new OdbcParameter("Date", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_set").ToDate()
            });
            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }
Example #2
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            // prepare list of selected events
            List <String> param_events = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_events").ToComposite())
            {
                param_events.Add(choice.ToString());
            }

            if (param_events.Count == 0)
            {
                throw new NoNullAllowedException("At least one event must be checked.");
            }

            // prepare list of selected event roles (comes all in one comma separated string)
            List <String> param_event_roles = new List <String>();

            if (AParameters.Exists("param_event_roles"))
            {
                param_event_roles = new List <String>(AParameters.Get("param_event_roles").ToString().Split(','));
            }

            if (param_event_roles.Count == 0)
            {
                throw new NoNullAllowedException("At least one event role must be checked.");
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("events", OdbcType.BigInt, param_events));
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("event_roles", OdbcType.VarChar, param_event_roles));
            ASQLParameterList.Add(new OdbcParameter("Accepted", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_accepted").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Hold", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_hold").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Enquiry", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_enquiry").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Cancelled", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_cancelled").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Rejected", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_rejected").ToBool()
            });
        }
Example #3
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            bool AllLedgers;

            ICollection <String> param_ledgers;

            AllLedgers = AParameters.Get("param_all_ledgers").ToBool();

            // now add parameters to sql parameter list
            ASQLParameterList.Add(new OdbcParameter("param_all_ledgers", OdbcType.Bit)
            {
                Value = AllLedgers
            });

            if (AllLedgers)
            {
                // Add dummy value in case of an empty list so sql query does not fail.
                // This value is irrelevant in this case.
                ASQLParameterList.Add(new OdbcParameter("ledgers", OdbcType.BigInt)
                {
                    Value = 0
                });
            }
            else
            {
                // prepare list of ledgers
                param_ledgers = AParameters.Get("param_ledgers").ToString().Split(new Char[] { ',', });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("ledgers", OdbcType.BigInt, param_ledgers));
            }

            ASQLParameterList.Add(new OdbcParameter("param_date_from_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_from").IsZeroOrNull()
            });
            ASQLParameterList.Add(new OdbcParameter("param_date_from", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_from").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_date_to_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_to").IsZeroOrNull()
            });
            ASQLParameterList.Add(new OdbcParameter("param_date_to", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_to").ToDate()
            });
        }
Example #4
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            // prepare list of selected publications
            List <String> param_explicit_publication = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_explicit_publication").ToComposite())
            {
                param_explicit_publication.Add(choice.ToString());
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_explicit_publication",
                                                                               OdbcType.VarChar,
                                                                               param_explicit_publication));

            ASQLParameterList.Add(new OdbcParameter("param_free_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_free_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_include_active_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_include_active_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_include_active_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_include_active_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_subscription_status", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_subscription_status").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }
Example #5
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            // prepare list of selected events
            List <String> param_events = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_events").ToComposite())
            {
                param_events.Add(choice.ToString());
            }

            if (param_events.Count == 0)
            {
                throw new NoNullAllowedException("At least one option must be checked.");
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("events", OdbcType.BigInt, param_events));
            ASQLParameterList.Add(new OdbcParameter("Accepted", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_accepted").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Hold", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_hold").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Enquiry", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_enquiry").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Cancelled", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_cancelled").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Rejected", OdbcType.Bit)
            {
                Value = AParameters.Get("param_status_rejected").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("Exclude_no_soliciations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }
Example #6
0
        /// <summary>
        /// extend query statement and query parameter list by address filter information given in extract parameters
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="AOdbcParameterList"></param>
        /// <returns>true if address tables and fields were added</returns>
        protected static bool AddAddressFilter(TParameterList AParameters, ref string ASqlStmt,
                                               ref List <OdbcParameter> AOdbcParameterList)
        {
            string   WhereClause   = "";
            string   TableNames    = "";
            string   FieldNames    = "";
            string   OrderByClause = "";
            string   StringValue;
            DateTime DateValue;
            bool     LocationTableNeeded        = false;
            bool     PartnerLocationTableNeeded = false;
            bool     AddressFilterAdded         = false;

            // add check for mailing addresses only
            if (AParameters.Exists("param_mailing_addresses_only"))
            {
                if (AParameters.Get("param_mailing_addresses_only").ToBool())
                {
                    WhereClause = WhereClause + " AND pub_p_partner_location.p_send_mail_l";
                    PartnerLocationTableNeeded = true;
                }
            }

            // add city statement (allow any city that begins with search string)
            if (AParameters.Exists("param_city"))
            {
                StringValue = AParameters.Get("param_city").ToString();

                if ((StringValue.Trim().Length > 0) && (StringValue != "*"))
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_city", OdbcType.VarChar)
                    {
                        Value = StringValue + "%"
                    });
                    WhereClause         = WhereClause + " AND pub_p_location.p_city_c LIKE ?";
                    LocationTableNeeded = true;
                }
            }

            // add county statement (allow any county that begins with search string)
            if (AParameters.Exists("param_county"))
            {
                StringValue = AParameters.Get("param_county").ToString();

                if ((StringValue.Trim().Length > 0) && (StringValue != "*"))
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_county", OdbcType.VarChar)
                    {
                        Value = StringValue + "%"
                    });
                    WhereClause         = WhereClause + " AND pub_p_location.p_county_c LIKE ?";
                    LocationTableNeeded = true;
                }
            }

            // add statement for country
            if (AParameters.Exists("param_country"))
            {
                StringValue = AParameters.Get("param_country").ToString();

                if (StringValue.Trim().Length > 0)
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_country", OdbcType.VarChar)
                    {
                        Value = StringValue
                    });
                    WhereClause         = WhereClause + " AND pub_p_location.p_country_code_c = ?";
                    LocationTableNeeded = true;
                }
            }

            // postcode filter will be applied after the data is obtained
            if (AParameters.Exists("param_region") || AParameters.Exists("param_postcode_from") || AParameters.Exists("param_postcode_to"))
            {
                LocationTableNeeded = true;
            }

            // add date clause if address should only be valid at a certain date
            // when "mailing addresses only" is selected no expired or future addresses should be used
            if ((AParameters.Exists("param_only_addresses_valid_on") &&
                 (AParameters.Get("param_only_addresses_valid_on").ToBool())) ||
                (AParameters.Exists("param_mailing_addresses_only") &&
                 (AParameters.Get("param_mailing_addresses_only").ToBool())))
            {
                if ((AParameters.Exists("param_only_addresses_valid_on") &&
                     (AParameters.Get("param_only_addresses_valid_on").ToBool())) &&
                    (AParameters.Exists("param_address_date_valid_on") &&
                     !AParameters.Get("param_address_date_valid_on").IsZeroOrNull()))
                {
                    DateValue = AParameters.Get("param_address_date_valid_on").ToDate();
                }
                else
                {
                    // if date not given or "mailing addresses only" then use "Today"
                    DateValue = DateTime.Today;
                }

                AOdbcParameterList.Add(new OdbcParameter("param_address_date_valid_on_1", OdbcType.Date)
                {
                    Value = DateValue
                });
                AOdbcParameterList.Add(new OdbcParameter("param_address_date_valid_on_2", OdbcType.Date)
                {
                    Value = DateValue
                });
                AOdbcParameterList.Add(new OdbcParameter("param_address_date_valid_on_3", OdbcType.Date)
                {
                    Value = DateValue
                });

                WhereClause = WhereClause +
                              " AND (   (    pub_p_partner_location.p_date_effective_d <= ?" +
                              "      AND pub_p_partner_location.p_date_good_until_d IS NULL)" +
                              "  OR (    pub_p_partner_location.p_date_effective_d <= ?" +
                              "      AND pub_p_partner_location.p_date_good_until_d >= ?))";
                LocationTableNeeded = true;
            }
            else
            {
                // if not valid on certain date then check if date range is filled
                if (AParameters.Exists("param_address_start_from") &&
                    !AParameters.Get("param_address_start_from").IsZeroOrNull())
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_address_start_from", OdbcType.Date)
                    {
                        Value = AParameters.Get("param_address_start_from").ToDate()
                    });

                    WhereClause = WhereClause +
                                  " AND pub_p_partner_location.p_date_effective_d >= ?";
                    LocationTableNeeded = true;
                }

                if (AParameters.Exists("param_address_start_to") &&
                    !AParameters.Get("param_address_start_to").IsZeroOrNull())
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_address_start_to", OdbcType.Date)
                    {
                        Value = AParameters.Get("param_address_start_to").ToDate()
                    });

                    WhereClause = WhereClause +
                                  " AND pub_p_partner_location.p_date_effective_d <= ?";
                    LocationTableNeeded = true;
                }

                if (AParameters.Exists("param_address_end_from") &&
                    !AParameters.Get("param_address_end_from").IsZeroOrNull())
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_address_end_from", OdbcType.Date)
                    {
                        Value = AParameters.Get("param_address_end_from").ToDate()
                    });

                    WhereClause = WhereClause +
                                  " AND (    pub_p_partner_location.p_date_good_until_d IS NOT NULL" +
                                  "      AND pub_p_partner_location.p_date_good_until_d >= ?)";
                    LocationTableNeeded = true;
                }

                if (AParameters.Exists("param_address_end_to") &&
                    !AParameters.Get("param_address_end_to").IsZeroOrNull())
                {
                    AOdbcParameterList.Add(new OdbcParameter("param_address_end_to", OdbcType.Date)
                    {
                        Value = AParameters.Get("param_address_end_to").ToDate()
                    });

                    WhereClause = WhereClause +
                                  " AND (    pub_p_partner_location.p_date_good_until_d IS NOT NULL" +
                                  "      AND pub_p_partner_location.p_date_good_until_d <= ?)";
                    LocationTableNeeded = true;
                }
            }

            // add statement for location type
            if (AParameters.Exists("param_location_type"))
            {
                StringValue = AParameters.Get("param_location_type").ToString();

                if (StringValue.Trim().Length > 0)
                {
                    List <String> param_location_type = new List <String>();

                    foreach (TVariant choice in AParameters.Get("param_location_type").ToComposite())
                    {
                        param_location_type.Add(choice.ToString());
                    }

                    AOdbcParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_location_type",
                                                                                        OdbcType.VarChar,
                                                                                        param_location_type));
                    WhereClause = WhereClause + " AND pub_p_partner_location.p_location_type_c IN (?)";
                    PartnerLocationTableNeeded = true;
                }
            }

            // if location table is needed then automatically partner location table is needed as well
            if (LocationTableNeeded)
            {
                FieldNames = ", pub_p_partner_location.p_site_key_n, pub_p_partner_location.p_location_key_i ";
                TableNames = TableNames + ", pub_p_location, pub_p_partner_location";

                WhereClause = " AND pub_p_partner_location.p_partner_key_n = pub_p_partner.p_partner_key_n" +
                              " AND pub_p_location.p_site_key_n = pub_p_partner_location.p_site_key_n" +
                              " AND pub_p_location.p_location_key_i = pub_p_partner_location.p_location_key_i" +
                              WhereClause;

                OrderByClause = ", pub_p_partner.p_partner_key_n";
            }
            else if (PartnerLocationTableNeeded)
            {
                FieldNames = ", pub_p_partner_location.p_site_key_n, pub_p_partner_location.p_location_key_i ";
                TableNames = TableNames + ", pub_p_partner_location";

                WhereClause = " AND pub_p_partner_location.p_partner_key_n = pub_p_partner.p_partner_key_n" +
                              WhereClause;

                OrderByClause = ", pub_p_partner.p_partner_key_n";
            }

            // Set information if address filter was set. It is not enough to just check if extra fields or
            // clauses were built but filter fields to be replaced also need to exist.
            if ((ASqlStmt.Contains("##address_filter_fields##") ||
                 ASqlStmt.Contains("##address_filter_tables##") ||
                 ASqlStmt.Contains("##address_filter_where_clause##") ||
                 ASqlStmt.Contains("##address_filter_order_by_clause##")) &&
                ((TableNames.Length > 0) ||
                 (WhereClause.Length > 0)))
            {
                AddressFilterAdded = true;
            }
            else
            {
                AddressFilterAdded = false;
            }

            ASqlStmt = ASqlStmt.Replace("##address_filter_fields##", FieldNames);
            ASqlStmt = ASqlStmt.Replace("##address_filter_tables##", TableNames);
            ASqlStmt = ASqlStmt.Replace("##address_filter_where_clause##", WhereClause);
            ASqlStmt = ASqlStmt.Replace("##address_filter_order_by_clause##", OrderByClause);

            return(AddressFilterAdded);
        }
Example #7
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter>ASQLParameterList)
        {
            // prepare list of commitment types
            List <String>param_commitment_status_choices = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_commitment_status_choices").ToComposite())
            {
                param_commitment_status_choices.Add(choice.ToString());
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(new OdbcParameter("param_start_date_from_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_start_date_from").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_start_date_from", OdbcType.Date)
                {
                    Value = AParameters.Get("param_start_date_from").ToDate()
                });
            ASQLParameterList.Add(new OdbcParameter("param_start_date_to_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_start_date_to").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_start_date_to", OdbcType.Date)
                {
                    Value = AParameters.Get("param_start_date_to").ToDate()
                });
            ASQLParameterList.Add(new OdbcParameter("param_end_date_from_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_end_date_from").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_end_date_from", OdbcType.Date)
                {
                    Value = AParameters.Get("param_end_date_from").ToDate()
                });
            ASQLParameterList.Add(new OdbcParameter("param_end_date_to_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_end_date_to").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_end_date_to", OdbcType.Date)
                {
                    Value = AParameters.Get("param_end_date_to").ToDate()
                });
            ASQLParameterList.Add(new OdbcParameter("param_date_valid_on_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_date_valid_on").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_date_valid_on_a", OdbcType.Date)
                {
                    Value = AParameters.Get("param_date_valid_on").ToDate()
                });
            ASQLParameterList.Add(new OdbcParameter("param_date_valid_on_b", OdbcType.Date)
                {
                    Value = AParameters.Get("param_date_valid_on").ToDate()
                });

            ASQLParameterList.Add(new OdbcParameter("param_field_sending_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_field_sending").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_field_sending", OdbcType.Int)
                {
                    Value = AParameters.Get("param_field_sending").ToInt32()
                });
            ASQLParameterList.Add(new OdbcParameter("param_field_receiving_unset", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_field_receiving").IsZeroOrNull()
                });
            ASQLParameterList.Add(new OdbcParameter("param_field_receiving", OdbcType.Int)
                {
                    Value = AParameters.Get("param_field_receiving").ToInt32()
                });

            ASQLParameterList.Add(new OdbcParameter("param_consider_commitment_status_not", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_all_partners").ToBool()
                });
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_commitment_status_choices",
                    OdbcType.VarChar,
                    param_commitment_status_choices));
            ASQLParameterList.Add(new OdbcParameter("param_include_no_commitment_status", OdbcType.Bit)
                {
                    Value = AParameters.Get("param_include_no_commitment_status").ToBool()
                });

            ASQLParameterList.Add(new OdbcParameter("param_active_not", OdbcType.Bit)
                {
                    Value = !AParameters.Get("param_active").ToBool()
                });

            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations_not", OdbcType.Bit)
                {
                    Value = !AParameters.Get("param_exclude_no_solicitations").ToBool()
                });
        }
Example #8
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            bool   AllLedgers;
            bool   ReceiptLetterFrequencySet;
            string ReceiptLetterFrequency;

            ICollection <String> param_ledgers;

            AllLedgers = AParameters.Get("param_all_ledgers").ToBool();

            // now add parameters to sql parameter list
            ASQLParameterList.Add(new OdbcParameter("param_all_ledgers", OdbcType.Bit)
            {
                Value = AllLedgers
            });

            if (AllLedgers)
            {
                // Add dummy value in case of an empty list so sql query does not fail.
                // This value is irrelevant in this case.
                ASQLParameterList.Add(new OdbcParameter("ledgers", OdbcType.BigInt)
                {
                    Value = 0
                });
            }
            else
            {
                // prepare list of ledgers
                param_ledgers = AParameters.Get("param_ledgers").ToString().Split(new Char[] { ',', });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("ledgers", OdbcType.BigInt, param_ledgers));
            }

            ASQLParameterList.Add(new OdbcParameter("param_date_from_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_from").IsZeroOrNull()
            });
            ASQLParameterList.Add(new OdbcParameter("param_date_from", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_from").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_date_to_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_to").IsZeroOrNull()
            });
            ASQLParameterList.Add(new OdbcParameter("param_date_to", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_to").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_new_donors_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_new_donors_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_receipt_each_gift_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_receipt_each_gift_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });

            if (AParameters.Get("param_receipt_letter_frequency").IsZeroOrNull() ||
                (AParameters.Get("param_receipt_letter_frequency").ToString() == ""))
            {
                ReceiptLetterFrequencySet = false;
                ReceiptLetterFrequency    = "";
            }
            else
            {
                ReceiptLetterFrequencySet = true;
                ReceiptLetterFrequency    = AParameters.Get("param_receipt_letter_frequency").ToString();
            }

            ASQLParameterList.Add(new OdbcParameter("param_receipt_letter_frequency_set", OdbcType.Bit)
            {
                Value = ReceiptLetterFrequencySet
            });
            ASQLParameterList.Add(new OdbcParameter("param_receipt_letter_frequency", OdbcType.VarChar)
            {
                Value = ReceiptLetterFrequency
            });
        }
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            // prepare list of selected publications
            List <String> param_explicit_publication = new List <String>();

            foreach (var choice in AParameters.Get("param_explicit_publication").ToString().Split(','))
            {
                param_explicit_publication.Add(choice.ToString());
            }

            // now add parameters to sql parameter list
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_explicit_publication",
                                                                               OdbcType.VarChar,
                                                                               param_explicit_publication));

            ASQLParameterList.Add(new OdbcParameter("param_free_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_free_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_include_active_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_include_active_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_include_active_subscriptions_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_include_active_subscriptions_only").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_subscription_status", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_subscription_status").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_persons_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_persons_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });

            if (AParameters.Get("param_rgrCopies").ToString() == "Single")
            {
                ASQLParameterList.Add(new OdbcParameter("param_min_copies", OdbcType.Int)
                {
                    Value = 1
                });
                ASQLParameterList.Add(new OdbcParameter("param_max_copies", OdbcType.Int)
                {
                    Value = 1
                });
            }
            else if (AParameters.Get("param_rgrCopies").ToString() == "Bulk")
            {
                ASQLParameterList.Add(new OdbcParameter("param_min_copies", OdbcType.Int)
                {
                    Value = 2
                });
                ASQLParameterList.Add(new OdbcParameter("param_max_copies", OdbcType.Int)
                {
                    Value = 999999
                });
            }
            else
            {
                ASQLParameterList.Add(new OdbcParameter("param_min_copies", OdbcType.Int)
                {
                    Value = 1
                });
                ASQLParameterList.Add(new OdbcParameter("param_max_copies", OdbcType.Int)
                {
                    Value = 999999
                });
            }

            ASQLParameterList.Add(new OdbcParameter("param_start_date_from_notnull", OdbcType.Bit)
            {
                Value = AParameters.Get("param_start_date_from_notnull").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_start_date_from", OdbcType.Date)
            {
                Value = AParameters.Get("param_start_date_from").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_start_date_to_notnull", OdbcType.Bit)
            {
                Value = AParameters.Get("param_start_date_to_notnull").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_start_date_to", OdbcType.Date)
            {
                Value = AParameters.Get("param_start_date_to").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_expiry_date_from_notnull", OdbcType.Bit)
            {
                Value = AParameters.Get("param_expiry_date_from_notnull").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_expiry_date_from", OdbcType.Date)
            {
                Value = AParameters.Get("param_expiry_date_from").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_expiry_date_to_notnull", OdbcType.Bit)
            {
                Value = AParameters.Get("param_expiry_date_to_notnull").ToBool()
            });

            ASQLParameterList.Add(new OdbcParameter("param_expiry_date_to", OdbcType.Date)
            {
                Value = AParameters.Get("param_expiry_date_to").ToDate()
            });
        }
        /// <summary>
        /// Add persons or families to extract that have commitments to specified receiving/sending fields
        /// </summary>
        /// <param name="AProcessReceivingFields"></param>
        /// <param name="AParameters"></param>
        /// <param name="ATransaction"></param>
        /// <param name="AExtractId"></param>
        private bool ProcessCommitments(bool AProcessReceivingFields, TParameterList AParameters,
                                        TDBTransaction ATransaction, out int AExtractId)
        {
            bool   ReturnValue = false;
            bool   AddressFilterAdded;
            string SqlStmt = TDataBase.ReadSqlFile("Partner.Queries.ExtractPartnerByField.Commitment.sql");

            List <OdbcParameter> SqlParameterList = new List <OdbcParameter>();

            // need to set initial value here in case method needs to return before value is set
            AExtractId = -1;

            // prepare list of selected fields
            List <String> param_fields = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_fields").ToComposite())
            {
                param_fields.Add(choice.ToString());
            }

            if (param_fields.Count == 0)
            {
                throw new NoNullAllowedException("At least one option must be checked.");
            }

            // now add parameters to sql parameter list
            SqlParameterList.Add(TDbListParameterValue.OdbcListParameterValue("fields", OdbcType.BigInt, param_fields));

            SqlParameterList.Add(new OdbcParameter("param_from_date_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_from_date").IsZeroOrNull()
            });
            SqlParameterList.Add(new OdbcParameter("param_from_date", OdbcType.Date)
            {
                Value = AParameters.Get("param_from_date").ToDate()
            });
            SqlParameterList.Add(new OdbcParameter("param_until_date_unset", OdbcType.Bit)
            {
                Value = AParameters.Get("param_until_date").IsZeroOrNull()
            });
            SqlParameterList.Add(new OdbcParameter("param_until_date", OdbcType.Date)
            {
                Value = AParameters.Get("param_until_date").ToDate()
            });
            SqlParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            SqlParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });

            if (AProcessReceivingFields)
            {
                // for receiving fields target field table field needs to be used
                SqlStmt = SqlStmt.Replace("##sending_or_receiving_field##", "pm_receiving_field_n");
            }
            else
            {
                // for sending fields home office table field needs to be used
                SqlStmt = SqlStmt.Replace("##sending_or_receiving_field##", "pm_home_office_n");
            }

            if (AParameters.Get("param_families_only").ToBool())
            {
                /* In case that only family records are wanted a join via family key of a person is needed
                 * to find families of persons. */
                SqlStmt = SqlStmt.Replace("##person_table##", ", pub_p_person");
                SqlStmt = SqlStmt.Replace("##join_for_person_or_family##",
                                          " AND pub_p_person.p_partner_key_n = pub_pm_staff_data.p_partner_key_n" +
                                          " AND pub_p_partner.p_partner_key_n = pub_p_person.p_family_key_n ");
            }
            else
            {
                // in this case there will be person records in the extract
                SqlStmt = SqlStmt.Replace("##person_table##", "");
                SqlStmt = SqlStmt.Replace("##join_for_person_or_family##",
                                          " AND pub_p_partner.p_partner_key_n = pub_pm_staff_data.p_partner_key_n");
            }

            // add address filter information to sql statement and parameter list
            AddressFilterAdded = AddAddressFilter(AParameters, ref SqlStmt, ref SqlParameterList);

            // now run the database query
            TLogging.Log("Getting the data from the database...", TLoggingType.ToStatusBar);
            DataTable partnerkeys = DBAccess.GDBAccessObj.SelectDT(SqlStmt, "partners", ATransaction,
                                                                   SqlParameterList.ToArray());

            // filter data by postcode (if applicable)
            ExtractQueryBase.PostcodeFilter(ref partnerkeys, ref AddressFilterAdded, AParameters, ATransaction);

            // if this is taking a long time, every now and again update the TLogging statusbar, and check for the cancel button
            // TODO: we might need to add this functionality to TExtractsHandling.CreateExtractFromListOfPartnerKeys as well???
            if (AParameters.Get("CancelReportCalculation").ToBool() == true)
            {
                return(false);
            }

            TLogging.Log("Preparing the extract...", TLoggingType.ToStatusBar);

            // create an extract with the given name in the parameters
            ReturnValue = TExtractsHandling.CreateExtractFromListOfPartnerKeys(
                AParameters.Get("param_extract_name").ToString(),
                AParameters.Get("param_extract_description").ToString(),
                out AExtractId,
                partnerkeys,
                0,
                AddressFilterAdded);

            return(ReturnValue);
        }
        /// <summary>
        /// Run extract in case the user wants to analyze receiving fields.
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ATransaction"></param>
        /// <param name="AExtractId"></param>
        private bool ProcessReceivingFields(TParameterList AParameters, TDBTransaction ATransaction, out int AExtractId)
        {
            /*Approach:
             * In case of a specified "Period" only find persons
             * that have a commitment record.
             * In case of "Now" or "Ever" also find partners
             * (persons & families) without such a commitment
             * record, that match the specified criteria.
             * In case of "Now" only find partners with a "Worker" type.
             * (This check is dropped in case of "Ever")
             * When interested in families only, also find families
             * for which a member matches the specified criteria.*/

            bool ReturnValue = false;

            // for receiving fields first look at commitments
            ReturnValue = ProcessCommitments(true, AParameters, ATransaction, out AExtractId);

            if (ReturnValue == false)
            {
                return(ReturnValue);
            }

            // if only commitments need to be considered then no need to continue here
            if (AParameters.Get("param_commitments_and_worker_field").IsZeroOrNull() ||
                (AParameters.Get("param_commitments_and_worker_field").ToString() == "CommitmentsOnly"))
            {
                return(ReturnValue);
            }

            bool   AddressFilterAdded;
            string SqlStmtWorkerFieldOriginal = TDataBase.ReadSqlFile("Partner.Queries.ExtractPartnerByField.WorkerField.sql");
            string SqlStmt;
            List <OdbcParameter> SqlParameterList = new List <OdbcParameter>();
            string TypeCodeParameter;

            // If date range was specified then only look at staff data. Otherwise look for persons and families seperately.
            if (AParameters.Get("param_field_dates").ToString() == "DateRange")
            {
                return(ReturnValue);
            }

            // prepare parameter field for partner type code.
            if (AParameters.Get("param_field_dates").ToString() == "DateEver")
            {
                TypeCodeParameter = "";
            }
            else
            {
                TypeCodeParameter = "OMER%";
            }

            // prepare list of selected fields
            List <String> param_fields = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_fields").ToComposite())
            {
                param_fields.Add(choice.ToString());
            }

            if (param_fields.Count == 0)
            {
                throw new NoNullAllowedException("At least one option must be checked.");
            }

            // now add parameters to sql parameter list
            SqlParameterList.Add(TDbListParameterValue.OdbcListParameterValue("fields", OdbcType.BigInt, param_fields));

            SqlParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            SqlParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });

            // ----------------------------------------------------------------------------------------
            // now start retrieving either families or persons whose worker field is set to given value
            // ----------------------------------------------------------------------------------------

            SqlStmt = SqlStmtWorkerFieldOriginal;
            SqlStmt = SqlStmt.Replace("##person_or_family_table##", ", pub_p_person");
            SqlStmt = SqlStmt.Replace("##person_or_family_table_name##", "pub_p_person");
            SqlStmt = SqlStmt.Replace("##exclude_familiy_members_existing_in_extract##", "");
            SqlStmt = SqlStmt.Replace("##worker_type##", TypeCodeParameter);

            if (AParameters.Get("param_families_only").ToBool())
            {
                /* In case that only family records are wanted a join via family key of a person is needed
                 * to find families of persons. */
                SqlStmt = SqlStmt.Replace("##join_for_person_or_family##",
                                          " AND pub_p_partner.p_partner_key_n = pub_p_person.p_family_key_n");
            }
            else
            {
                // in this case there will be person records in the extract
                SqlStmt = SqlStmt.Replace("##join_for_person_or_family##",
                                          " AND pub_p_partner.p_partner_key_n = pub_p_person.p_partner_key_n");
            }

            // add address filter information to sql statement and parameter list
            AddressFilterAdded = AddAddressFilter(AParameters, ref SqlStmt, ref SqlParameterList);

            // now run the database query
            TLogging.Log("Getting the data from the database...", TLoggingType.ToStatusBar);
            DataTable partnerkeys = DBAccess.GDBAccessObj.SelectDT(SqlStmt, "partners", ATransaction,
                                                                   SqlParameterList.ToArray());

            // filter data by postcode (if applicable)
            ExtractQueryBase.PostcodeFilter(ref partnerkeys, ref AddressFilterAdded, AParameters, ATransaction);

            // if this is taking a long time, every now and again update the TLogging statusbar, and check for the cancel button
            // TODO: we might need to add this functionality to TExtractsHandling.CreateExtractFromListOfPartnerKeys as well???
            if (AParameters.Get("CancelReportCalculation").ToBool() == true)
            {
                return(false);
            }

            TLogging.Log("Preparing the extract...", TLoggingType.ToStatusBar);

            // create an extract with the given name in the parameters
            TExtractsHandling.ExtendExtractFromListOfPartnerKeys(
                AExtractId,
                partnerkeys,
                0,
                AddressFilterAdded,
                false);

            // ----------------------------------------------------------------------------------------
            // Now start retrieving families whose worker field is set to given value and that are not
            // already contained in the created extract.
            // ----------------------------------------------------------------------------------------

            SqlStmt = SqlStmtWorkerFieldOriginal;

            // need to rebuild parameter list as statement is also loaded again and filled
            SqlParameterList.Clear();
            SqlParameterList.Add(TDbListParameterValue.OdbcListParameterValue("fields", OdbcType.BigInt, param_fields));

            SqlParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            SqlParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });


            SqlStmt = SqlStmt.Replace("##person_or_family_table##", ", pub_p_family");
            SqlStmt = SqlStmt.Replace("##person_or_family_table_name##", "pub_p_family");
            SqlStmt = SqlStmt.Replace("##worker_type##", TypeCodeParameter);
            SqlStmt = SqlStmt.Replace("##join_for_person_or_family##",
                                      " AND pub_p_partner.p_partner_key_n = pub_p_family.p_partner_key_n");

            SqlStmt = SqlStmt.Replace("##exclude_familiy_members_existing_in_extract##",
                                      "AND NOT EXISTS (SELECT pub_p_family.p_partner_key_n " +
                                      " FROM pub_p_family, pub_p_person, pub_m_extract " +
                                      " WHERE pub_p_person.p_family_key_n = pub_p_family.p_partner_key_n " +
                                      " AND pub_m_extract.m_extract_id_i = " + AExtractId.ToString() +
                                      " AND pub_m_extract.p_partner_key_n = pub_p_person.p_partner_key_n)");

            // add address filter information to sql statement and parameter list
            AddressFilterAdded = AddAddressFilter(AParameters, ref SqlStmt, ref SqlParameterList);

            // now run the database query
            TLogging.Log("Getting the data from the database...", TLoggingType.ToStatusBar);
            partnerkeys.Clear();
            partnerkeys = DBAccess.GDBAccessObj.SelectDT(SqlStmt, "partners", ATransaction,
                                                         SqlParameterList.ToArray());

            // filter data by postcode (if applicable)
            ExtractQueryBase.PostcodeFilter(ref partnerkeys, ref AddressFilterAdded, AParameters, ATransaction);

            // if this is taking a long time, every now and again update the TLogging statusbar, and check for the cancel button
            // TODO: we might need to add this functionality to TExtractsHandling.CreateExtractFromListOfPartnerKeys as well???
            if (AParameters.Get("CancelReportCalculation").ToBool() == true)
            {
                return(false);
            }

            TLogging.Log("Preparing the extract...", TLoggingType.ToStatusBar);

            // create an extract with the given name in the parameters
            TExtractsHandling.ExtendExtractFromListOfPartnerKeys(
                AExtractId,
                partnerkeys,
                0,
                AddressFilterAdded,
                false);

            ReturnValue = true;

            return(ReturnValue);
        }
Example #12
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>S
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            List <String> param_relationships            = new List <String>();
            List <String> param_reciprocal_relationships = new List <String>();

            foreach (var choice in AParameters.Get("param_explicit_relationships").ToString().Split(','))
            {
                param_relationships.Add(choice);
            }

            foreach (var choice in AParameters.Get("param_reciprocal_relationships").ToString().Split(','))
            {
                param_reciprocal_relationships.Add(choice);
            }

            if ((param_relationships.Count == 0) && (param_reciprocal_relationships.Count == 0))
            {
                throw new NoNullAllowedException("At least one option must be checked.");
            }

            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });

            string paramName;

            if (AParameters.Get("param_selection").ToString() == "an extract")
            {
                paramName = "param_extract";
                ASQLParameterList.Add(new OdbcParameter(paramName, OdbcType.VarChar)
                {
                    Value = AParameters.Get(paramName).ToString()
                });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_relationships", OdbcType.VarChar, param_relationships));
                ASQLParameterList.Add(new OdbcParameter(paramName, OdbcType.VarChar)
                {
                    Value = AParameters.Get(paramName)
                });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_reciprocal_relationships", OdbcType.VarChar,
                                                                                   param_reciprocal_relationships));
            }
            else
            {
                paramName = "param_partnerkey";
                ASQLParameterList.Add(new OdbcParameter(paramName, OdbcType.Int)
                {
                    Value = AParameters.Get(paramName).ToInt32()
                });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_relationships", OdbcType.VarChar, param_relationships));
                ASQLParameterList.Add(new OdbcParameter(paramName, OdbcType.Int)
                {
                    Value = AParameters.Get(paramName).ToInt32()
                });
                ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_reciprocal_relationships", OdbcType.VarChar,
                                                                                   param_reciprocal_relationships));
            }

            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }
Example #13
0
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>S
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            ASQLParameterList.Add(new OdbcParameter("param_has_contactor", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_contactor").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_contactor", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_contactor").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_contact_code", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_contact_code").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_contact_code", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_contact_code").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_mailing_code", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_mailing_code").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_mailing_code", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_mailing_code").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_contact_attributes", OdbcType.Bit)
            {
                Value = !string.IsNullOrEmpty(AParameters.Get("param_contact_attributes").ToString())
            });

            ICollection <String> param_contact_attributes;

            param_contact_attributes = AParameters.Get("param_contact_attributes").ToString().Split(new Char[] { ',', });
            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_contact_attributes", OdbcType.VarChar, param_contact_attributes));

            ASQLParameterList.Add(new OdbcParameter("param_has_date_from", OdbcType.Bit)
            {
                Value = AParameters.Get("param_dtpDateFrom") != null && AParameters.Get("param_dtpDateFrom").ToDate() > DateTime.MinValue
            });

            ASQLParameterList.Add(new OdbcParameter("param_dtpDateFrom", OdbcType.Date)
            {
                Value = AParameters.Get("param_dtpDateFrom").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_date_to", OdbcType.Bit)
            {
                Value = AParameters.Get("param_dtpDateTo") != null && AParameters.Get("param_dtpDateTo").ToDate() > DateTime.MinValue
            });

            ASQLParameterList.Add(new OdbcParameter("param_dtpDateTo", OdbcType.Date)
            {
                Value = AParameters.Get("param_dtpDateTo").ToDate()
            });


            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }
        /// <summary>
        /// retrieve parameters from client sent in AParameters and build up AParameterList to run SQL query
        /// </summary>
        /// <param name="AParameters"></param>
        /// <param name="ASqlStmt"></param>
        /// <param name="ASQLParameterList"></param>S
        protected override void RetrieveParameters(TParameterList AParameters, ref string ASqlStmt, ref List <OdbcParameter> ASQLParameterList)
        {
            ASQLParameterList.Add(new OdbcParameter("param_has_contactor", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_contactor").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_contactor", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_contactor").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_contact_code", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_contact_code").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_contact_code", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_contact_code").ToString()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_mailing_code", OdbcType.Bit)
            {
                Value = !string.IsNullOrWhiteSpace(AParameters.Get("param_mailing_code").ToString())
            });

            ASQLParameterList.Add(new OdbcParameter("param_mailing_code", OdbcType.VarChar)
            {
                Value = AParameters.Get("param_mailing_code").ToString()
            });

            List <String> param_contact_attributes = new List <String>();

            foreach (TVariant choice in AParameters.Get("param_contact_attributes").ToComposite())
            {
                if (choice.ToString().Length > 0)
                {
                    param_contact_attributes.Add(choice.ToString());
                }
            }

            ASQLParameterList.Add(new OdbcParameter("param_has_contact_attributes", OdbcType.Bit)
            {
                Value = param_contact_attributes.Any()
            });

            ASQLParameterList.Add(TDbListParameterValue.OdbcListParameterValue("param_explicit_publication",
                                                                               OdbcType.VarChar,
                                                                               param_contact_attributes));

            ASQLParameterList.Add(new OdbcParameter("param_has_date_from", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_from") != null && AParameters.Get("param_date_from").ToDate() > DateTime.MinValue
            });

            ASQLParameterList.Add(new OdbcParameter("param_date_from", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_from").ToDate()
            });

            ASQLParameterList.Add(new OdbcParameter("param_has_date_to", OdbcType.Bit)
            {
                Value = AParameters.Get("param_date_to") != null && AParameters.Get("param_date_to").ToDate() > DateTime.MinValue
            });

            ASQLParameterList.Add(new OdbcParameter("param_date_to", OdbcType.Date)
            {
                Value = AParameters.Get("param_date_to").ToDate()
            });


            ASQLParameterList.Add(new OdbcParameter("param_active", OdbcType.Bit)
            {
                Value = AParameters.Get("param_active").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_families_only", OdbcType.Bit)
            {
                Value = AParameters.Get("param_families_only").ToBool()
            });
            ASQLParameterList.Add(new OdbcParameter("param_exclude_no_solicitations", OdbcType.Bit)
            {
                Value = AParameters.Get("param_exclude_no_solicitations").ToBool()
            });
        }