public Citizen getCitizenByUser(Long userId) {
    try {
      log.info("1.====userLiferayId:" + userId);
      TaiKhoanNguoiDung taiKhoanNguoiDung =
          TaiKhoanNguoiDungLocalServiceUtil.findByTaiKhoanNguoiDungId(userId);
      if (taiKhoanNguoiDung != null) {
        log.info("2.====taikhoannguoidungid:" + taiKhoanNguoiDung.getId());
        CongDan congDan =
            CongDanLocalServiceUtil.findByTaiKhoanNguoiDungId(taiKhoanNguoiDung.getId());
        if (congDan != null) {
          log.info("3.====congdanid:" + congDan.getId());

          return getCongDanSoap(congDan);
        } else {
          log.info("====Khong tim thay cong dan voi taikhoanid:" + taiKhoanNguoiDung.getId());
        }
      } else {
        log.info("=====Khong tim thay tai khoan voi account:" + userId);
      }
    } catch (Exception e) {
      // TODO: handle exception
      log.error("===lOI XAY RA", e);
      e.printStackTrace();
    }
    return null;
  }
  public Citizen getCitizenByCode(String code) {
    try {
      if (code == null) return null;
      CongDan congDan = CongDanLocalServiceUtil.findByMa(code);
      if (congDan == null) {
        log.info("=====Khong tim thaycong dan oi ma:" + code);
        return null;
      }
      return getCongDanSoap(congDan);

    } catch (Exception e) {
      // TODO: handle exception
    }
    return null;
  }
  @Override
  public Citizen getCitizenById(Long id) {
    if (id == null) return null;
    try {

      CongDan congDan = CongDanLocalServiceUtil.fetchCongDan(id);

      if (congDan != null) {
        return getCitizenByCode(congDan.getMa());
      }

    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
    return null;
  }
  private Citizen getCongDanSoap(CongDan congDan) {
    try {
      CongDanSoap congDanSoap = CongDanSoap.toSoapModel(congDan);
      Citizen citizen = new Citizen();
      citizen.setCongDan(congDanSoap);

      if (congDan.getQuanHeChuHoId() != null) {
        citizen.setQuanHeChuHo(getQuanHeGiaDinhTheoId(congDan.getQuanHeChuHoId()));
      }

      if (congDan.getQuocTichId() != null) {
        // set quoc tich
        citizen.setQuocTich(getQuocGiaTheoId(congDan.getQuocTichId()));
      }

      if (congDan.getTrinhDoChuyenMonId() != null) {
        citizen.setTrinhDoChuyenMon(getTrinhDoChuyenMonTheoId(congDan.getTrinhDoChuyenMonId()));
      }

      if (congDan.getSoDinhDanhChaId() != null) {
        CongDan soDinhDanhCha = CongDanLocalServiceUtil.fetchCongDan(congDan.getSoDinhDanhChaId());
        if (soDinhDanhCha != null) {
          CongDanSoap congDanSoap2 = CongDanSoap.toSoapModel(soDinhDanhCha);
          citizen.setSoDinhDanhCha(congDanSoap2);
        }
      }

      if (congDan.getTrinhDoHocVanId() != null) {
        citizen.setTrinhDoHocVan(getTrinhDoHocVanTheoId(congDan.getTrinhDoHocVanId()));
      }

      if (congDan.getDanTocId() != null) {
        citizen.setDanToc(getDanTocTheoId(congDan.getDanTocId()));
      }

      if (congDan.getNgheNghiepId() != null) {

        NgheNghiep ngheNghiep =
            NgheNghiepLocalServiceUtil.fetchNgheNghiep(
                (new Long(congDan.getNgheNghiepId())).intValue());
        if (ngheNghiep != null) {
          NgheNghiepSoap ngheNghiepSoap = NgheNghiepSoap.toSoapModel(ngheNghiep);
          citizen.setNgheNghiep(ngheNghiepSoap);
        }
      }

      if (congDan.getTonGiaoId() != null) {
        citizen.setTonGiao(getTonGiaoTheoId(congDan.getTonGiaoId()));
      }

      if (congDan.getSoDinhDanhMeId() != null) {
        CongDan congDan2 =
            CongDanLocalServiceUtil.fetchCongDan(
                (new Long(congDan.getSoDinhDanhMeId())).intValue());
        if (congDan2 != null) {
          CongDanSoap congDanSoap2 = CongDanSoap.toSoapModel(congDan2);
          citizen.setSoDinhDanhMe(congDanSoap2);
        }
      }

      if (congDan.getSoDinhDanhVoHoacChongId() != null) {
        CongDan congDan2 =
            CongDanLocalServiceUtil.fetchCongDan(
                (new Long(congDan.getSoDinhDanhVoHoacChongId())).intValue());
        if (congDan2 != null) {
          CongDanSoap congDanSoap2 = CongDanSoap.toSoapModel(congDan2);
          citizen.setSoDinhDanhMe(congDanSoap2);
        }
      }

      if (congDan.getDiaChiHienNayTinhId() != null) {
        citizen.setDiaChiHienNayTinh(getDonViHanhchinhTheoId(congDan.getDiaChiHienNayTinhId()));
      }

      if (congDan.getDiaChiHienNayHuyenId() != null) {
        citizen.setDiaChiHienNayHuyen(getDonViHanhchinhTheoId(congDan.getDiaChiHienNayHuyenId()));
      }
      if (congDan.getDiaChiHienNayXaId() != null) {
        citizen.setDiaChiHienNayXa(getDonViHanhchinhTheoId(congDan.getDiaChiHienNayXaId()));
      }

      if (congDan.getDiaChiThuongTruTinhId() != null) {
        citizen.setDiaChiThuongTruTinh(getDonViHanhchinhTheoId(congDan.getDiaChiThuongTruTinhId()));
      }

      if (congDan.getDiaChiThuongTruHuyenId() != null) {
        citizen.setDiaChiThuongTruHuyen(
            getDonViHanhchinhTheoId(congDan.getDiaChiThuongTruHuyenId()));
      }
      if (congDan.getDiaChiThuongTruXaId() != null) {
        citizen.setDiaChiThuongTruXa(getDonViHanhchinhTheoId(congDan.getDiaChiThuongTruXaId()));
      }
      // CongDanLocalServiceUtil.getCongDan(id)
      return citizen;
    } catch (Exception e) {
      // TODO: handle exception
      e.printStackTrace();
    }
    return null;
  }