// insert all object members as a new row in table, in a transaction
        // the transaction and or connection state is not changed in any way other than what SqlClient does to it.
        // it is the callers responsibility to commit or rollback the transaction
        // links:
        //  docLink: http://sql2x.org/documentationLink/542f9458-c3b9-4edf-8575-0870086f3a7f
        public void Insert(CrudeDefaultUserActivityContract contract, SqlConnection connection, SqlTransaction transaction)
        {
            var data = new CrudeDefaultUserActivityData();

            ContractToData(contract, data);
            data.Insert(connection, transaction);
        }
        // insert all object members as a new row in table
        // links:
        //  docLink: http://sql2x.org/documentationLink/75aad010-e6aa-4f19-a6e5-597456aa20d8
        public void Insert(CrudeDefaultUserActivityContract contract)
        {
            var data = new CrudeDefaultUserActivityData();

            ContractToData(contract, data);
            data.Insert();
        }
        // transfer model to data and insert
        // links:
        //  docLink: http://sql2x.org/documentationLink/17cd8423-3c78-459f-a45b-773fcfbc3b7d
        public void Insert(CrudeDefaultUserActivityModel model)
        {
            var data = new CrudeDefaultUserActivityData();

            ModelToData(model, data);
            data.Insert();
        }
        // transfer model to data and insert, on transaction
        // links:
        //  docLink: http://sql2x.org/documentationLink/fbeb7c34-b2d7-403b-a9fd-503ab705ef81
        public void Insert(CrudeDefaultUserActivityModel model, SqlConnection connection, SqlTransaction transaction)
        {
            var data = new CrudeDefaultUserActivityData();

            ModelToData(model, data);
            data.Insert(connection, transaction);
        }
        /// <summary>
        /// Add an activity
        /// </summary>
        /// <param name="userId">User who triggered the activity</param>
        public void AddActivity(
            Guid userId,
            string userActivityTypeRcd,
            string activityNote,
            string originatingAddress
            )
        {
            var defaultUserActivity = new CrudeDefaultUserActivityData();

            defaultUserActivity.DefaultUserActivityId      = Guid.NewGuid();
            defaultUserActivity.DefaultUserActivityTypeRcd = userActivityTypeRcd;
            defaultUserActivity.UserActivityNote           = activityNote;
            defaultUserActivity.OriginatingAddress         = originatingAddress;
            defaultUserActivity.DefaultUserId = userId;
            defaultUserActivity.DateTime      = DateTime.UtcNow;
            defaultUserActivity.Insert();

            var defaultUser = new CrudeDefaultUserData();

            defaultUser.FetchByDefaultUserId(userId);
            defaultUser.LastActivityDateTime = DateTime.UtcNow;
            defaultUser.Update(); // todo, possible to only update LastActivityDateTime?
        }