// プロパティの型がString?やint?などのオプショナル型になっています。
// これらのプロパティが常に値を持つことが保証されている場合は、非オプショナル型を使用することで、不要なnullチェックを回避できます。
//
class Destination {
  String? name;
  String? address;
  String? phone;
  String? email;
  String? webcontents;
  String? videos;
  String? category;
  int? series;
  double? lat;
  double? lon;
  String? sub_loc_id;
  int? location_id;
  int? list_order;
  String? photos;
  double? checkin_radious;
  int? auto_checkin;
  bool? selected = false;
  bool? checkedin = false;
  double? cp;
  double? checkin_point;
  double? buy_point;
  int? hidden_location;
  String? checkin_image;
  String? buypoint_image;
  bool forced_checkin = false;
  int recipt_times = 0;
  String? tags;

  bool use_qr_code = false;   // QR code を使用するかどうか。default=false

  Destination(
      {this.name,
      this.address,
      this.phone,
      this.email,
      this.webcontents,
      this.videos,
      this.category,
      this.series,
      this.lat,
      this.lon,
      this.sub_loc_id,
      this.location_id,
      this.list_order,
      this.photos,
      this.checkin_radious,
      this.auto_checkin,
      this.selected,
      this.checkedin,
      this.cp,
      this.checkin_point,
      this.buy_point,
      this.hidden_location,
      this.checkin_image,
      this.buypoint_image,
      this.forced_checkin = false,
      this.recipt_times = 0,
      this.tags}); //,   ... use_qr_code をDBに追加したらオープン
//      this.use_qr_code = false});

  factory Destination.fromMap(Map<String, dynamic> json) {
    bool selec = json['selected'] == 0 ? false : true;
    bool checkin = json['checkedin'] == 0 ? false : true;
    bool forcedCheckin = json['forced_checkin'] == 0 ? false : true;
    bool useQrCode = json['use_qr_code'] == 1 ? true : false;
    //print("-----tags model----- ${json}");

    return Destination(
        name: json['name'],
        address: json['address'],
        phone: json['phone'],
        email: json['email'],
        webcontents: json['webcontents'],
        videos: json['videos'],
        category: json['category'],
        series: json['series'],
        lat: json['lat'],
        lon: json['lon'],
        sub_loc_id: json['sub_loc_id'],
        location_id: json['location_id'],
        list_order: json['list_order'],
        photos: json['photos'],
        checkin_radious: json['checkin_radious'],
        auto_checkin: json['auto_checkin'],
        selected: selec,
        checkedin: checkin,
        cp: json['cp'],
        checkin_point: json['checkin_point'],
        buy_point: json['buy_point'],
        hidden_location: json['hidden_location'],
        checkin_image: json['checkin_image'],
        buypoint_image: json["buypoint_image"],
        forced_checkin: forcedCheckin,
        recipt_times: json["recipt_times"],
        tags: json["tags"] );  //,
//        use_qr_code: useQrCode);
  }

  Map<String, dynamic> toMap() {
    int sel = selected == false ? 0 : 1;
    int check = checkedin == false ? 0 : 1;
    int forcedCheckin = forced_checkin == false ? 0 : 1;
    return {
      'name': name,
      'address': address,
      'phone': phone,
      'email': email,
      'webcontents': webcontents,
      'videos': videos,
      'category': category,
      'series': series,
      'lat': lat,
      'lon': lon,
      'sub_loc_id': sub_loc_id,
      'location_id': location_id,
      'list_order': list_order,
      'photos': photos,
      'checkin_radious': checkin_radious,
      'auto_checkin': auto_checkin,
      'selected': sel,
      'checkedin': check,
      'cp': cp,
      'checkin_point': checkin_point,
      'buy_point': buy_point,
      'hidden_location': hidden_location,
      'checkin_image': checkin_image,
      'buypoint_image': buypoint_image,
      'forced_checkin': forcedCheckin,
      'recipt_times': recipt_times,
      'tags': tags  //,
      //'use_qr_code': use_qr_code
    };
  }
}
