@OnClick(R.id.candidate_detail_party_flag)
 void toCandidateParty() {
   Intent intent = new Intent();
   intent.setClass(this, PartyDetailActivity.class);
   Bundle bundle = new Bundle();
   bundle.putSerializable("party_candidate", candidate.getParty());
   intent.putExtras(bundle);
   startActivity(intent);
 }
 @Override
 public boolean onOptionsItemSelected(MenuItem item) {
   switch (item.getItemId()) {
     case android.R.id.home:
       finish();
       return true;
     case R.id.party_detail_action_share:
       Intent i = new Intent(Intent.ACTION_SEND);
       i.setData(Uri.parse("http://mae.mmaug.org/share/" + candidate.getId()));
       startActivity(Intent.createChooser(i, "Share Via"));
       i.setType("text/plain");
       i.putExtra(Intent.EXTRA_SUBJECT, candidate.getName());
       i.putExtra(Intent.EXTRA_TEXT, "http://mae.mmaug.org/share/" + candidate.getId());
       startActivity(Intent.createChooser(i, "Share Via"));
       return true;
     default:
       return super.onOptionsItemSelected(item);
   }
 }
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_candidate_detail);
    ButterKnife.bind(this);
    // actionbar
    setSupportActionBar(toolbar);
    ActionBar actionBar = getSupportActionBar();
    assert actionBar != null;
    actionBar.setDisplayHomeAsUpEnabled(true);
    actionBar.setTitle("");

    typefaceTitle = FontCache.getTypefaceTitle(this);
    typefacelight = FontCache.getTypefaceTitle(this);
    isUnicode = UserPrefUtils.getInstance(this).getTextPref().equals(Config.UNICODE);

    mListener =
        new AppBarLayout.OnOffsetChangedListener() {
          @Override
          public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
            if (collapsingAvatarToolbar.getHeight() + verticalOffset
                < 2 * ViewCompat.getMinimumHeight(collapsingAvatarToolbar)) {
              MixUtils.toggleVisibilityWithAnim(cardView, 1000, false);
            } else {
              MixUtils.toggleVisibilityWithAnim(cardView, 1000, true);
            }
          }
        };

    appbar.addOnOffsetChangedListener(mListener);

    candidate = (Candidate) getIntent().getSerializableExtra(Config.CANDIDATE);
    candidateSearchResult =
        (CandidateSearchResult) getIntent().getSerializableExtra("searchResult");

    if (candidate != null) {
      Glide.with(this)
          .load(candidate.getParty().getPartyFlag())
          .bitmapTransform(new BlurTransformation(getApplicationContext(), 8, 1))
          .into(partyImage);

      Glide.with(this)
          .load(candidate.getPhotoUrl())
          .diskCacheStrategy(DiskCacheStrategy.ALL)
          .bitmapTransform(new CropCircleTransformation(this))
          .placeholder(R.drawable.profile_placeholder)
          .into(candidateImage);
      candidateName.setText(candidate.getName());

      Glide.with(this)
          .load(candidate.getParty().getPartyFlag())
          .diskCacheStrategy(DiskCacheStrategy.ALL)
          .into(mCandidatePartyFlag);

      if (candidate.getConstituency().getAMPCODE() == null) {
        upperHouseView.setVisibility(View.GONE);
      } else {
        upperHouseView.setVisibility(View.VISIBLE);
        upperHouse.setText(
            MixUtils.amConstituencyName(
                candidate.getConstituency().getName(), candidate.getConstituency().getNumber()));
      }

      mCandidateConstituency.setText(candidate.getConstituency().getName());
      mCandidateDateOfBirth.setText(
          MixUtils.convertToBurmese(String.valueOf(candidate.getBirthDateString())));
      mCandidateEducation.setText(candidate.getEducation());
      mCandidateFather.setText(candidate.getFather().getName());
      mCandidateMother.setText(candidate.getMother().getName());
      mCandidateOccupation.setText(candidate.getOccupation());
      mCandidateRace.setText(candidate.getEthnicity());
      mCandidateReligion.setText(candidate.getReligion());
      mCandidateLegalSlature.setText(candidate.getLegislature());
      mCandidateParty.setText(candidate.getParty().getPartyName());
      mCandidateAddress.setText(candidate.getWardVillage());
      RESTService mRESTService = RESTClient.getService(this);
      if (candidate.getMpid() == null) {
        // mCompareCandidate.setCardBackgroundColor(getResources().getColor(R.color.accent_color_error));
        // mCandidateCompareResult.setText(getResources().getString(R.string.first_time_candidate));
        mQuestionHeaderTv.setVisibility(View.GONE);
        mMotionHeaderTv.setVisibility(View.GONE);
        mCandidateQuestionCard.setVisibility(View.GONE);
        mCandidateMotionCard.setVisibility(View.GONE);
      } else {

        Call<JsonObject> questionMotionCall =
            mRESTService.getQuestionAndMotion(candidate.getMpid());
        questionMotionCall.enqueue(
            new RestCallback<JsonObject>() {
              @Override
              public void onResponse(Response<JsonObject> response) {
                if (response.code() == 200) {
                  int motionCount = response.body().get("motions_count").getAsInt();
                  JsonArray motions = response.body().get("motions").getAsJsonArray();

                  int questionCount = response.body().get("questions_count").getAsInt();
                  JsonArray questions = response.body().get("questions").getAsJsonArray();

                  makeMotionChart(motionCount, motions);
                  makeQuestionChart(questionCount, questions);
                }
              }
            });
      }
    } else {
      // TODO fetch Candidate by ID
      /* RESTService mRESTService = RESTClient.getService(this);
      Map<String, String> amyotharParams = new HashMap<>();
      amyotharParams.put(Config.WITH, "party");
      Call<JsonObject> candidateCall =
          mRESTService.getCandidate("7abd75a22042fe8e3faf931d710949fe", amyotharParams);
      candidateCall.enqueue(new RestCallback<JsonObject>() {
        @Override public void onResponse(Response<JsonObject> response) {

        }
      });*/
    }

    mCompareCandidate.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View view) {
            Intent i = new Intent(CandidateDetailActivity.this, CandidateListActivity.class);
            i.putExtra(Config.CANDIDATE, candidate);
            startActivity(i);
          }
        });

    setTypeFace();
  }