package com.jiuqi.njt.register;
import java.util.List;
import com.jiuqi.mobile.nigo.comeclose.bean.base.RoleCode;
import com.jiuqi.mobile.nigo.comeclose.bean.base.UserBean;
import com.jiuqi.mobile.nigo.comeclose.exception.LoginException;
import com.jiuqi.mobile.nigo.comeclose.manager.base.IRegistManager;
import com.jiuqi.mobile.nigo.comeclose.manager.base.IUserRolesManager;
import com.jiuqi.mobile.nigo.comeclose.ws.client.ClientContext;
import com.jiuqi.njt.data.MyApp;
import com.jiuqi.njt.util.Constants;
import com.jiuqi.njt.util.RepairUtils;
import com.jiuqi.njt.util.UIUtil;
import android.app.Dialog;
import android.content.Context;
import android.os.AsyncTask;
/**
* 保存用户选择角色信息异步类
*
* @author joe
*
*/
public class SaveUserRolesTask extends AsyncTask<Void, Void, String> {
private Context context;
private List<RoleCode> roleCodeList;
private String sessionId;
private AllTaskInterface allTaskInterface;
private boolean showDialog;
private MyApp application;
private Dialog pd;
/**
*
* @param context
*
* @param roleCodeList
* 需要保存的角色集合
* @param sessionId
* 注册返回的SessionID
* @param allTaskInterface
* 返回数据接口
* @param showDialog
* 是否显示提示框
*/
public SaveUserRolesTask(Context context, List<RoleCode> roleCodeList,String sessionId,
AllTaskInterface allTaskInterface,boolean showDialog) {
super();
this.context = context;
this.roleCodeList = roleCodeList;
this.sessionId = sessionId;
this.allTaskInterface = allTaskInterface;
this.showDialog = showDialog;
application = (MyApp) context.getApplicationContext();
}
@Override
protected void onPreExecute() {
if(showDialog){
pd = RepairUtils.myShowDialog(context, 4);
}
super.onPreExecute();
}
@Override
protected String doInBackground(Void... params) {
ClientContext context;
String result = "";
try {
context = application.getClientContext();
if (null == context) {
context = ClientContext.getClientContext(Constants.SERVER_URL,
Constants.ANONYMOUS, Constants.ANONYMOUS);
application.setClientContext(context);
}
UserBean userBean = context.getUser();
IUserRolesManager manager = context.getManager(IUserRolesManager.class);
String[] roles = new String[ roleCodeList.size()];
for (int i = 0; i < roleCodeList.size(); i++) {
roles[i]= roleCodeList.get(i).getCode()+"";
}
result = manager.createUserRoles(roles, userBean, context.getSessionID());
ClientContext clientContext =ClientContext.getClientContext(Constants.SERVER_URL, context.getSessionID());
application.setClientContext(clientContext);
IRegistManager registerManager = context.getManager(IRegistManager.class);
result = registerManager.decideRegistAndLogin(userBean.getAccount(),context.getSessionID());
} catch (LoginException e) {
e.printStackTrace();
result = e.getMessage();
result = "请稍后重试";
} catch (Exception e) {
e.printStackTrace();
result = "请稍后重试";
}
return result;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
RepairUtils.myRemoveDialog(pd);
if ("请稍后重试".equals(result)) {
UIUtil.showMsg(context, result);
}
allTaskInterface.taskFinishReturn(result);
}
}