code: function (json) {
      var nameTest = true;
      if (json.hasOwnProperty("number")) {
          nameTest = isNaN(json.number);
      }
      if (json.hasOwnProperty("character")) {
          nameTest = (!json.character && 0 === json.character.length);
      }
      var dateTest = true;
      if (json.hasOwnProperty("date")) {
          dateTest = isNaN(Date.parse(json.date));
      }
      if (json.hasOwnProperty("startDate") && json.hasOwnProperty("endDate")) {
          dateTest = isNaN(Date.parse(json.startDate)) || isNaN(Date.parse(json.endDate));
      }
      var dateRange = false;
      if(!dateTest){
          dateRange = (new Date(json.endDate).getTime() - new Date(json.startDate).getTime())<0;
      }
      return !(nameTest || dateTest || dateRange);
  }
docs: /*
  Checks if the name and date combination are valid inputs. false -> bad input. true -> good input