コード例 #1
0
        private FacadeClass Create(JObject fields, NfDbConnection connection, NfDbTransaction transaction)
        {
            var facade = FacadeObjectFactory.CreateIndividual();

            // Copy the JObject fields into the FacadeClass
            facade.Merge(fields);

            // Try to add them to the database
            var error = facade.Insert(connection, transaction);

            // Throw on error
            if (error != null && error.HasError)
            {
                throw new ApplicationException(error.Message);
            }

            // Tell NetForum we are done with this operation so it can do any background tasks
            // Neccessity of this varies by Facade Object
            facade.ProcessRoundTripEvents(connection, transaction);

            // Reload it so all the computed/denormalized fields are present
            facade.CurrentKey = facade.GetValue("cst_key");
            facade.SelectByKey(connection, transaction);

            return(facade);
        }
コード例 #2
0
        private FacadeClass Existing(string eml_address, NfDbConnection connection, NfDbTransaction transaction)
        {
            // Quick and dirty duplicate check by email address
            using (var cmd = new NfDbCommand("SELECT cst_key FROM co_customer WHERE cst_delete_flag = 0 AND cst_type = 'Individual' AND cst_eml_address_dn = @eml_address", connection, transaction))
            {
                cmd.Parameters.AddWithValue("@eml_address", eml_address);

                var result = cmd.ExecuteScalar();

                // If a match was found
                if (result is Guid cst_key)
                {
                    // Instanciate a facade and pull down their record
                    var facade = FacadeObjectFactory.CreateIndividual();
                    facade.CurrentKey = cst_key.ToString();
                    facade.SelectByKey(connection, transaction);
                    return(facade);
                }
            }

            return(null);
        }