package ua.kpi.ecampus.ui.activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import ua.kpi.ecampus.Config;
import ua.kpi.ecampus.R;
import ua.kpi.ecampus.di.UIModule;
import ua.kpi.ecampus.model.Rating;
import ua.kpi.ecampus.model.pojo.VoteTeacher;
import ua.kpi.ecampus.ui.adapter.RateAdapter;
import ua.kpi.ecampus.util.SnackbarUtil;
/**
* Created by Administrator on 08.06.2016.
*/
public class RateTeacherActivity extends BaseActivity {
@Bind(R.id.toolbar)
Toolbar mToolbar;
@Bind(R.id.listview_rate)
ListView mList;
private RateAdapter mAdapter;
private VoteTeacher mTeacher;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rate_teacher);
mTeacher = getIntent().getParcelableExtra(Config.KEY_TEACHER);
bindViews();
setViews();
}
@Override
protected List<Object> getModules() {
List<Object> modules = new ArrayList<>();
modules.add(new UIModule());
return modules;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_rate_teacher, menu);
if (mTeacher.isVoted()) {
final MenuItem item = menu.findItem(R.id.action_done);
item.setVisible(false);
}
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
finish();
return true;
case R.id.action_done:
if (mAdapter.teacherIsRated()) {
saveRating();
} else
SnackbarUtil.show(getString(R.string.rate_by_all_criteria), findViewById(R.id.root_layout));
return true;
}
return super.onOptionsItemSelected(item);
}
private void setViews() {
setToolbar();
setListView();
TextView tv = (TextView) findViewById(R.id.tv_teacher_name);
tv.setText(mTeacher.getTeacherName());
}
private List<Rating> setRatingList() {
List<Rating> list = new ArrayList<>();
String[] criterion = getResources().getStringArray(R.array.voting_criteria);
if(!mTeacher.isVoted())
for (int i = 0; i < criterion.length; i++)
list.add(new Rating(0, criterion[i]));
else {
List<Rating> values = mTeacher.getCriteria();
for (int i = 0; i < criterion.length; i++)
list.add(new Rating(values.get(i).getRatingStar(), criterion[i]));
}
return list;
}
private void setToolbar() {
setSupportActionBar(mToolbar);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
mToolbar.setNavigationIcon(R.mipmap.ic_action_navigation_arrow_back);
getSupportActionBar().setTitle(R.string.activity_name_rate_teacher);
}
private void setListView() {
mAdapter = new RateAdapter(this, R.layout.list_rating_item, setRatingList());
mList.setAdapter(mAdapter);
}
private void saveRating() {
// send to server
List<Rating> rating = mAdapter.getData();
mTeacher.setCriteria(rating);
mTeacher.setIsVoted(true);
float ratingSum = 0;
for (Rating r : rating) ratingSum += r.getRatingStar();
mTeacher.setAvgResult(String.valueOf(ratingSum / (double) rating.size()));
Intent intent = new Intent();
intent.putExtra(Config.KEY_TEACHER, mTeacher);
setResult(RESULT_OK, intent);
finish();
}
}