protected virtual void WriteTrackChargeJson(JsonWriter writer, PersonTransactionEvent personEvent)
        {
            // https://mixpanel.com/docs/people-analytics/people-http-specification-insert-data
            //{
            //    "$append": {
            //        "$transactions": {
            //            "$time": "2013-01-03T00:58:05",
            //            "$amount": 25.34
            //        }
            //    },
            //    "$token": "36ada5b10da39a1347559321baf13063",
            //    "$distinct_id": "13793"
            //}

            writer.WriteStartObject();
            writer.WritePropertyName("$append");
            writer.WriteStartObject();
            writer.WritePropertyName("$transactions");
            writer.WriteStartObject();
            writer.WritePropertyName("$time");
            writer.CastAndWriteValue(personEvent.TransactionDateTime);
            writer.WritePropertyName("$amount");
            writer.WriteValue(personEvent.TransactionAmount);
            writer.WriteEnd();
            writer.WriteEnd();

            this.WriteCommonPersonValues(writer, personEvent);

            writer.WriteEnd();
        }
        public PersonTransactionEvent CreatePersonTransactionEvent()
        {
            this.AssertValidProjectToken();
            var personEvent = new PersonTransactionEvent();

            this.OnCreatePersonEvent(personEvent);
            return(personEvent);
        }
        public PersonTransactionEvent CreatePersonTransactionEvent(String distinctId)
        {
            this.AssertValidProjectToken();
            var personEvent = new PersonTransactionEvent();

            personEvent.DistinctUserId = distinctId;
            this.OnCreatePersonEvent(personEvent);
            return(personEvent);
        }
 protected virtual void OnCreatePersonEvent(PersonTransactionEvent personEvent)
 {
     personEvent.ProjectToken = this.ProjectToken;
 }