class VisitsSearch {
  String? deviceSerialNumber;
  String? hospitalName;
  String? brand;
  String? model;
  String? contactStatus;
  DateTime? expectedDateFrom;
  DateTime? expectedDateTo;
  DateTime? actualDateFrom;
  DateTime? actualDateTo;
  int? statusValue;

  VisitsSearch({
    this.deviceSerialNumber,
    this.statusValue,
    this.brand,
    this.hospitalName,
    this.actualDateTo,
    this.actualDateFrom,
    this.model,
    this.contactStatus,
    this.expectedDateFrom,
    this.expectedDateTo,
  });

  fromSearch(VisitsSearch newSearch) {
    deviceSerialNumber = newSearch.deviceSerialNumber;
    brand = newSearch.brand;
    hospitalName = newSearch.hospitalName;
    actualDateTo = newSearch.actualDateTo;
    actualDateFrom = newSearch.actualDateFrom;
    model = newSearch.model;
    contactStatus = newSearch.contactStatus;
    expectedDateFrom = newSearch.expectedDateFrom;
    expectedDateTo = newSearch.expectedDateTo;
    statusValue = newSearch.statusValue;
  }

  String toSearchString() {
    String _search = "";
    if (deviceSerialNumber != null && (deviceSerialNumber?.isNotEmpty ?? false)) {
      _search += "&sn_id=$deviceSerialNumber";
    }

    if (hospitalName != null && (hospitalName?.isNotEmpty ?? false)) {
      _search += "&client=$hospitalName";
    }

    if (brand != null && (brand?.isNotEmpty ?? false)) {
      _search += "&brand=$brand";
    }

    if (model != null && (model?.isNotEmpty ?? false)) {
      _search += "&model=$model";
    }

    if (expectedDateFrom != null) {
      _search += "&expected_date_from=${(expectedDateFrom?.millisecondsSinceEpoch ?? 0) ~/ 1000}";
    }

    if (expectedDateTo != null) {
      _search += "&expected_date_to=${(expectedDateTo?.millisecondsSinceEpoch ?? 0) ~/ 1000}";
    }

    if (actualDateFrom != null) {
      _search += "&actual_date_from=${(actualDateFrom?.millisecondsSinceEpoch ?? 0) ~/ 1000}";
    }

    if (actualDateTo != null) {
      _search += "&actual_date_to=${(actualDateTo?.millisecondsSinceEpoch ?? 0) ~/ 1000}";
    }

    if (statusValue != null) {
      _search += "&status=$statusValue";
    }

    if (contactStatus != null) {
      _search += "&assigned_to=$contactStatus";
    }
    return _search;
  }
}
