/**
* Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.parttime.IM.activitysetting;
import android.annotation.SuppressLint;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.android.volley.RequestQueue;
import com.carson.constant.ConstantForSaveList;
import com.easemob.chat.EMGroup;
import com.easemob.chat.EMGroupManager;
import com.easemob.chatuidemo.activity.BaseActivity;
import com.parttime.common.Image.ContactImageLoader;
import com.parttime.common.head.ActivityHead2;
import com.parttime.constants.ActivityExtraAndKeys;
import com.parttime.net.DefaultCallback;
import com.parttime.net.GroupSettingRequest;
import com.parttime.net.HuanXinRequest;
import com.parttime.utils.IntentManager;
import com.parttime.utils.SharePreferenceUtil;
import com.parttime.widget.RankView;
import com.parttimejob.swipe.SwipeListView;
import com.qingmu.jianzhidaren.BuildConfig;
import com.qingmu.jianzhidaren.R;
import com.quark.jianzhidaren.ApplicationControl;
import com.quark.model.HuanxinUser;
import com.quark.volley.VolleySington;
import java.util.ArrayList;
import java.util.List;
/**
*
* @ClassName: GroupResumeSettingActivity
* @Description: 群管理
*
*/
public class GroupResumeSettingActivity extends BaseActivity implements
View.OnClickListener {
private static final String TAG = "GroupResumeSettingActivity";
public static GroupResumeSettingActivity instance;
private ActivityHead2 headView;
private TextView tip; //显示已录取和待处理的人数
private SwipeListView listView ;
private SettingAdapter adapter = new SettingAdapter();
protected RequestQueue queue = VolleySington.getInstance().getRequestQueue();
private SharePreferenceUtil sp;
private ArrayList<GroupSettingRequest.UserVO> data = new ArrayList<>();
private String groupId;
private EMGroup group;
private GroupSettingRequest.AppliantResult appliantResult;
private int isEnd;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_group_setting);
sp = SharePreferenceUtil.getInstance(ApplicationControl.getInstance());
Intent intent = getIntent();
groupId = intent.getStringExtra(ActivityExtraAndKeys.GroupSetting.GROUPID);
initView();
instance = this;
}
private void initView() {
headView = new ActivityHead2(this);
headView.setCenterTxt1(R.string.group_member);
headView.setTxtRight2Text(R.string.more);
headView.progressBar.setVisibility(View.GONE);
headView.txtRight2.setOnClickListener(this);
headView.imgRightContainer2.setOnClickListener(this);
tip = (TextView) findViewById(R.id.tip);
listView = (SwipeListView) findViewById(R.id.listView);
listView.setAdapter(adapter);
}
private void bindView(){
if(groupId != null) {
group = EMGroupManager.getInstance().getGroup(groupId);
List<String> count = group.getMembers();
headView.setCenterTxt2(getString(R.string.group_member_number, count != null ? count.size() : 1));
}
appliantResult = ConstantForSaveList.groupAppliantCache.get(groupId);
if(appliantResult != null){
isEnd = appliantResult.isEnd;
if(BuildConfig.DEBUG){
//isEnd = GroupSettingRequest.AppliantResult.YES_END;
}
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
tip.setText(getString(R.string.admitted_pending_tip, appliantResult.approvedCount, appliantResult.unApprovedCount));
data.clear();
data.addAll(appliantResult.userList);
adapter.notifyDataSetChanged();
}else if(isEnd == GroupSettingRequest.AppliantResult.YES_END){ //活动结束
tip.setText(getString(R.string.admitted_pending_finished_tip, appliantResult.approvedCount, appliantResult.unApprovedCount));
data.clear();
data.addAll(appliantResult.userList);
adapter.notifyDataSetChanged();
}
}
getGroupApliantResult(groupId);
// 保证每次进详情看到的都是最新的group
//updateGroup();
}
/**
* 更新已录取,和待处理的数量
*/
public void updateTip(){
appliantResult = ConstantForSaveList.groupAppliantCache.get(groupId);
if(appliantResult != null) {
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
tip.setText(getString(R.string.admitted_pending_tip, appliantResult.approvedCount, appliantResult.unApprovedCount));
}else if(isEnd == GroupSettingRequest.AppliantResult.YES_END) { //活动结束
tip.setText(getString(R.string.admitted_pending_finished_tip, appliantResult.approvedCount, appliantResult.unApprovedCount));
}
}
}
public void getGroupApliantResult(String id){
new GroupSettingRequest().getUserList(id, queue, new DefaultCallback() {
@Override
public void success(Object obj) {
super.success(obj);
if (obj instanceof GroupSettingRequest.AppliantResult) {
GroupSettingRequest.AppliantResult result = (GroupSettingRequest.AppliantResult) obj;
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
tip.setText(getString(R.string.admitted_pending_tip, result.approvedCount, result.unApprovedCount));
}else if(isEnd == GroupSettingRequest.AppliantResult.YES_END) { //活动结束
tip.setText(getString(R.string.admitted_pending_finished_tip, result.approvedCount, result.unApprovedCount));
}
List<GroupSettingRequest.UserVO> userVOs = result.userList;
if(result.userList != null) {
data.clear();
data.addAll(userVOs);
adapter.notifyDataSetChanged();
}
}
}
});
}
protected void updateGroup() {
headView.progressBar.setVisibility(View.VISIBLE);
new Thread(new Runnable() {
public void run() {
try {
EMGroup returnGroup = EMGroupManager.getInstance()
.getGroupFromServer(groupId);
// 更新本地数据
EMGroupManager.getInstance().createOrUpdateLocalGroup(
returnGroup);
List<String> members = group.getMembers();
runOnUiThread(new Runnable() {
public void run() {
headView.setCenterTxt1(group.getGroupName());
headView.setCenterTxt2("(" + group.getAffiliationsCount() + "人)");
headView.progressBar.setVisibility(View.INVISIBLE);
}
});
} catch (Exception e) {
runOnUiThread(new Runnable() {
public void run() {
headView.progressBar.setVisibility(View.INVISIBLE);
}
});
}
}
},"huanxinGroup").start();
}
private void getNick(List<String> members){
StringBuilder contactIdsStr = new StringBuilder("");
int size = members.size();
for (int i = 0; i < size; i++) {
if(i < size -1 ) {
contactIdsStr.append(members.get(i)).append(",");
}else{
contactIdsStr.append(members.get(i));
}
}
new HuanXinRequest().getHuanxinUserList(contactIdsStr.toString(), queue, new DefaultCallback(){
@Override
public void success(Object obj) {
super.success(obj);
if(obj instanceof ArrayList){
@SuppressLint("Unchecked")
ArrayList<HuanxinUser> list = (ArrayList<HuanxinUser>)obj;
if (list.size() > 0) {
ConstantForSaveList.usersNick = list;// 保存缓存
}
}
}
});
}
@Override
protected void onResume() {
super.onResume();
bindView();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.img_right2:
case R.id.container_right2_image:
showMore();
break;
}
}
public Dialog showMore() {
/*if(more != null){
if(more.isShowing()){
more.dismiss();
}else{
more.show();
}
return more;
}*/
final Dialog more = new Dialog(this, R.style.ActionSheet);
LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(
R.layout.activity_group_setting_more, null);
final int cFullFillWidth = 10000;
layout.setMinimumWidth(cFullFillWidth);
//批量处理
TextView batch = (TextView) layout.findViewById(R.id.batch);
//发送到邮箱
TextView email = (TextView) layout.findViewById(R.id.email);
//群设置
TextView setting = (TextView) layout.findViewById(R.id.setting);
//取消
TextView cancel = (TextView) layout.findViewById(R.id.cancel);
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
batch.setVisibility(View.VISIBLE);
}else if(isEnd == GroupSettingRequest.AppliantResult.YES_END) {
batch.setVisibility(View.GONE);
}
// 批量处理
batch.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(GroupResumeSettingActivity.this, ResumeBatchManagementActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID,groupId);
startActivity(intent);
more.dismiss();
}
});
email.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(GroupResumeSettingActivity.this, SendAdmitToEmailActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID,groupId);
startActivity(intent);
more.dismiss();
}
});
setting.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(GroupResumeSettingActivity.this, GroupSettingActivity.class);
intent.putExtra(ActivityExtraAndKeys.GroupSetting.GROUPID,groupId);
startActivity(intent);
more.dismiss();
}
});
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
more.dismiss();
}
});
Window w = more.getWindow();
WindowManager.LayoutParams lp = w.getAttributes();
lp.x = 0;
lp.y = -1000;
lp.gravity = Gravity.BOTTOM;
more.onWindowAttributesChanged(lp);
more.setCanceledOnTouchOutside(true);
more.setContentView(layout);
more.show();
return more;
}
private class SettingAdapter extends BaseAdapter{
@Override
public int getCount() {
return data.size();
}
@Override
public GroupSettingRequest.UserVO getItem(int position) {
return data.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public int getItemViewType(int position) {
GroupSettingRequest.UserVO userVO = getItem(position);
if(userVO.apply == GroupSettingRequest.UserVO.APPLY_OK){
return 0 ;
}else{
return 1;
}
}
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view ;
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
if (getItem(position).apply == GroupSettingRequest.UserVO.APPLY_OK) {
view = getLayoutInflater().inflate(R.layout.activity_group_setting_item_swip2, parent, false);
} else {
view = getLayoutInflater().inflate(R.layout.activity_group_setting_item_swip, parent, false);
holder.reject = (Button) view.findViewById(R.id.reject);
}
}else{
view = getLayoutInflater().inflate(R.layout.activity_group_setting_item_swip2, parent, false);
}
holder.head = (ImageView) view.findViewById(R.id.head);
holder.name = (TextView) view.findViewById(R.id.name);
holder.resumeStatus = (TextView) view.findViewById(R.id.resume_status);
holder.moneyStatus = (TextView) view.findViewById(R.id.money_status);
holder.accountStatus = (TextView) view.findViewById(R.id.account_status);
holder.rankView = (RankView) view.findViewById(R.id.reputation_value_star_container);
holder.resumeButton = (Button) view.findViewById(R.id.button);
view.setTag(holder);
}else{
view = convertView;
holder = (ViewHolder)convertView.getTag();
}
bindData(position, holder, view);
return view;
}
private void bindData(int position, ViewHolder holder, View view) {
GroupSettingRequest.UserVO userVO = getItem(position);
if(userVO == null){
view.setVisibility(View.GONE);
}else{
view.setVisibility(View.VISIBLE);
}
//设置头像
String head = userVO.picture;
if (! TextUtils.isEmpty(head)) {
// 默认加载本地图片
holder.head.setTag(R.id.picture,head);
ContactImageLoader.loadNativePhoto(String.valueOf(userVO.userId),
head, holder.head,queue);
sp.loadStringSharedPreference(userVO.userId+ "realname", userVO.name);
} else {
holder.head.setBackgroundResource(R.drawable.default_avatar);
}
holder.name.setText(userVO.name);
holder.resumeButton.setVisibility(View.VISIBLE);
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
//待处理
int apply = userVO.apply;
if (apply == GroupSettingRequest.UserVO.APPLY_OK) {
holder.resumeStatus.setText(R.string.already_resume);
holder.resumeStatus.setSelected(true);
holder.resumeButton.setText(R.string.cancel_resume);
holder.resumeButton.setSelected(true);
} else if (apply == GroupSettingRequest.UserVO.APPLY_UNLOOK || apply == GroupSettingRequest.UserVO.APPLY_LOOKED) {
holder.resumeStatus.setText(R.string.unresume);
holder.resumeStatus.setSelected(false);
holder.resumeButton.setText(R.string.resume);
holder.resumeButton.setSelected(false);
}
holder.resumeButton.setBackgroundResource(R.drawable.selector_btn_bg_blue_gray);
}else{
int isCommented = userVO.isCommented;
if (isCommented == GroupSettingRequest.UserVO.ISCOMMENT_NO) {
holder.resumeStatus.setText(R.string.uncomment);
holder.resumeStatus.setSelected(false);
holder.resumeButton.setText(R.string.go_comment);
holder.resumeButton.setEnabled(true);
}else if (isCommented == GroupSettingRequest.UserVO.ISCOMMENT_OK){
holder.resumeStatus.setText(R.string.commented);
holder.resumeStatus.setSelected(true);
holder.resumeButton.setText(R.string.commented);
holder.resumeButton.setEnabled(false);
}
holder.resumeButton.setBackgroundResource(R.drawable.selector_btn_orange);
}
holder.resumeButton.setTag(userVO);
holder.head.setTag(userVO);
//设置诚意金和认证
// StringBuilder moneyAndCertification = new StringBuilder();
int moneyStatus = userVO.earnestMoney;
int accountStatus = userVO.certification;
if(moneyStatus == 0) {
// moneyAndCertification.append(getString(R.string.no_money));
holder.moneyStatus.setText(getString(R.string.no_money));
holder.moneyStatus.setSelected(false);
}else {
// moneyAndCertification.append(getString(R.string.had_money));
holder.moneyStatus.setText(getString(R.string.had_money));
holder.moneyStatus.setSelected(false);
}
// moneyAndCertification.append("/");
/*if(accountStatus == 0){
moneyAndCertification.append(getString(R.string.no_certification));
}else if(accountStatus == 1){
moneyAndCertification.append(getString(R.string.submit_certification));
}else if(accountStatus == 2){
moneyAndCertification.append(getString(R.string.had_certification));
}else if(accountStatus == 3){
moneyAndCertification.append(getString(R.string.reject_certification));
}*/
if(accountStatus == 2){
holder.accountStatus.setText(getString(R.string.had_certification));
holder.accountStatus.setSelected(true);
}else {
holder.accountStatus.setText(getString(R.string.no_certification));
holder.accountStatus.setSelected(false);
}
// holder.moneyStatus.setText(moneyAndCertification.toString());
//设置信誉
String creditworthiness = userVO.creditworthiness;
// Utils.addStars(creditworthiness, holder.reputationValueStar, GroupResumeSettingActivity.this, R.drawable.ee_27);
holder.rankView.setTotalScore(Integer.valueOf(creditworthiness) / 10);
holder.rankView.rank(0);
if(holder.reject != null){
holder.reject.setTag(userVO);
}
setListener(holder);
}
private void setListener(ViewHolder holder) {
//录取和取消录取点击事件
holder.resumeButton.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
if(v instanceof Button) {
final GroupSettingRequest.UserVO userVO = (GroupSettingRequest.UserVO)v.getTag();
if(isEnd == GroupSettingRequest.AppliantResult.NO_END) {
int apply = userVO.apply;
if (apply == GroupSettingRequest.UserVO.APPLY_OK) {
//取消录取 已录用的人员,点击取消录用,弹窗提示“确认取消录用改用,取消后该用户将被移除聊天群组”——取消,确认
new GroupSettingUtils().showAlertDialog( GroupResumeSettingActivity.this,
null ,
getString(R.string.cacel_resume_or_not_and_remove_from_group),
Action.UNRESUME, userVO ,
R.string.ok, R.string.cancel,
String.valueOf(userVO.userId), groupId, queue,
new DefaultCallback(){
@Override
public void success(Object obj) {
data.remove(userVO);
updateTip();
adapter.notifyDataSetChanged();
}
});
} else if (apply == GroupSettingRequest.UserVO.APPLY_UNLOOK || apply == GroupSettingRequest.UserVO.APPLY_LOOKED) {
//录取 确认后可取消录用该用户,信息中心会提醒用户‘已被商家取消录用’。同时该用户也将被移除聊天群组
new GroupSettingUtils().showAlertDialog( GroupResumeSettingActivity.this,
null ,
getString(R.string.cacel_resume_or_not),
Action.RESUME, userVO,
R.string.yes , R.string.no,
String.valueOf(userVO.userId), groupId, queue,
new DefaultCallback(){
@Override
public void success(Object obj) {
userVO.apply = GroupSettingRequest.UserVO.APPLY_OK;
updateTip();
notifyDataSetChanged();
}
});
}
}else{
int isCommented = userVO.isCommented;
if (isCommented == GroupSettingRequest.UserVO.ISCOMMENT_NO) {
ArrayList<String> userIds = null;
if(data != null && data.size() > 0){
userIds = new ArrayList<>();
for (GroupSettingRequest.UserVO vo : data){
if(vo == null){
continue;
}
userIds.add(String.valueOf(vo.userId));
}
}
if(userIds != null && userIds.size() > 0) {
IntentManager.toUserDetailFromActivityGroup(GroupResumeSettingActivity.this,
isEnd,
groupId,
userVO,
userIds,
group.getOwner());
}
}
}
}
}
});
holder.head.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
GroupSettingRequest.UserVO userVO = (GroupSettingRequest.UserVO)v.getTag();
ArrayList<String> userIds = null;
if(data != null && data.size() > 0){
userIds = new ArrayList<>();
for (GroupSettingRequest.UserVO vo : data){
if(vo == null){
continue;
}
userIds.add(String.valueOf(vo.userId));
}
}
if(userIds != null && userIds.size() > 0) {
IntentManager.toUserDetailFromActivityGroup(GroupResumeSettingActivity.this,
isEnd,
groupId,
userVO,
userIds,
group.getOwner());
}
}
});
if(holder.reject != null) {
holder.reject.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final GroupSettingRequest.UserVO userVO = (GroupSettingRequest.UserVO)v.getTag();
new GroupSettingUtils().showAlertDialog( GroupResumeSettingActivity.this,
null ,
getString(R.string.reject_one_resume_or_not_and_remove_from_group),
Action.REJECT, userVO ,
R.string.ok, R.string.cancel,
String.valueOf(userVO.userId), groupId, queue,
new DefaultCallback(){
@Override
public void success(Object obj) {
data.remove(userVO);
updateTip();
adapter.notifyDataSetChanged();
}
});
}
});
}
}
}
public static enum Action{
RESUME,
UNRESUME , Action, REJECT
}
private class ViewHolder{
public ImageView head; //头像
public TextView name, //名字
resumeStatus, //简历状态
moneyStatus, // 诚意金/实名认证
accountStatus;
// public LinearLayout reputationValueStar; //信誉值
public RankView rankView;
public Button resumeButton;
public Button reject;//拒绝
}
}