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); }
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); }