package com.parttime.publish;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.View;
import android.widget.Button;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
import com.android.volley.VolleyError;
import com.parttime.common.activity.ChooseListActivity;
import com.parttime.common.head.ActivityHead;
import com.parttime.net.DefaultCallback;
import com.parttime.net.PublishRequest;
import com.parttime.net.ResponseBaseCommonError;
import com.parttime.pojo.PartJob;
import com.parttime.pojo.SalaryUnit;
import com.parttime.utils.ActionUtils;
import com.parttime.utils.ApplicationUtils;
import com.parttime.utils.CheckUtils;
import com.parttime.utils.FormatUtils;
import com.parttime.utils.IntentManager;
import com.parttime.utils.TimeUtils;
import com.qingmu.jianzhidaren.R;
import com.quark.jianzhidaren.BaseActivity;
import com.quark.ui.widget.ActionSheet;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/**
* 发布兼职页
*/
public class WriteJobActivity extends BaseActivity implements
View.OnClickListener, DialogInterface.OnCancelListener,
ActionSheet.OnActionSheetSelected {
public static final String EXTRA_TYPE = "type";
private static final int REQUEST_TXT_SELECT = 0x1001;
private String type;
private ActivityHead activityHead;
private TextView mTxtMoreRequire;
private TextView mTxtBeginTime, mTxtEndTime, mTxtPayType, mTxtWorkArea;
private TextView mTxtSalaryUnit, mTxtLanguage, mTxtHeight, mTxtMeasurements;
private TextView mTxtWorkRequireTip, mTxtSalaryUnitTip;
private EditText mEditJobTitle, mEditWorkAddress, mEditSalary;
private EditText mEditHeadSum, mEditMaleNum, mEditFemaleNum;
private EditText mEditWorkRequire;
private LinearLayout mLLHeadSumContainer, mLLSexContainer, mLLMoreRequireContainer;
private RadioButton mRadioSexUnlimited, mRadioSexLimited;
private RadioButton mRadioUnShowTel, mRadioShowTel;
private RadioButton mRadioNeedHealthProve, mRadioUnNeedHealthProve;
private Button mBtnPublish;
private TextView mTxtSelectTemp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_write_job);
initIntent();
initControls();
bindListener();
bindData();
refreshSalaryControls();
}
private void bindData() {
}
private void bindListener() {
activityHead.setRightTxtOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (verifyForm()) {
preview();
}
}
});
mTxtBeginTime.setOnClickListener(this);
mTxtEndTime.setOnClickListener(this);
mTxtPayType.setOnClickListener(this);
mTxtWorkArea.setOnClickListener(this);
mTxtSalaryUnit.setOnClickListener(this);
mTxtLanguage.setOnClickListener(this);
mTxtHeight.setOnClickListener(this);
mTxtMeasurements.setOnClickListener(this);
mTxtMoreRequire.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
toggleMoreRequire();
}
});
mEditWorkRequire.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable editable) {
// 改变工作要求右下角的字数提示
mTxtWorkRequireTip.setText(getString(R.string.publish_job_tip_work_require, editable.length()));
}
});
mRadioSexUnlimited.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
toggleSex();
}
});
mRadioSexLimited.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
}
});
mBtnPublish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (verifyForm()) {
publish();
}
}
});
}
private void initIntent() {
type = getIntent().getStringExtra(EXTRA_TYPE);
}
private void initControls() {
activityHead = new ActivityHead(this);
activityHead.setRightTxt(R.string.preview);
activityHead.setCenterTxt1(type);
mTxtMoreRequire = (TextView) findViewById(R.id.txt_more_require);
mTxtBeginTime = (TextView) findViewById(R.id.txt_begin_time);
mTxtEndTime = (TextView) findViewById(R.id.txt_end_time);
mTxtPayType = (TextView) findViewById(R.id.txt_pay_type);
mTxtWorkArea = (TextView) findViewById(R.id.txt_work_area);
mTxtSalaryUnit = (TextView) findViewById(R.id.txt_salary_unit);
mTxtLanguage = (TextView) findViewById(R.id.txt_language);
mTxtHeight = (TextView) findViewById(R.id.txt_height);
mTxtMeasurements = (TextView) findViewById(R.id.txt_measurements);
mTxtWorkRequireTip = (TextView) findViewById(R.id.edittxt_work_require_tip);
mTxtSalaryUnitTip = (TextView) findViewById(R.id.txt_salary_unit_tip);
mEditJobTitle = (EditText) findViewById(R.id.edittxt_job_title);
mEditWorkAddress = (EditText) findViewById(R.id.edittxt_work_address);
mEditSalary = (EditText) findViewById(R.id.edittxt_salary);
mEditHeadSum = (EditText) findViewById(R.id.edittxt_head_sum);
mEditMaleNum = (EditText) findViewById(R.id.edittxt_male_num);
mEditFemaleNum = (EditText) findViewById(R.id.edittxt_female_num);
mEditWorkRequire = (EditText) findViewById(R.id.edittxt_work_require_content);
mLLHeadSumContainer = (LinearLayout) findViewById(R.id.ll_head_sum_container);
mLLSexContainer = (LinearLayout) findViewById(R.id.ll_sex_container);
mLLMoreRequireContainer = (LinearLayout) findViewById(R.id.ll_more_require_container);
mRadioSexUnlimited = (RadioButton) findViewById(R.id.radio_sex_unlimited);
mRadioSexLimited = (RadioButton) findViewById(R.id.radio_sex_limited);
mRadioUnShowTel = (RadioButton) findViewById(R.id.radio_unshow_tel);
mRadioShowTel = (RadioButton) findViewById(R.id.radio_show_tel);
mRadioNeedHealthProve = (RadioButton) findViewById(R.id.radio_need_health_prove);
mRadioUnNeedHealthProve = (RadioButton) findViewById(R.id.radio_unneed_health_prove);
mBtnPublish = (Button) findViewById(R.id.btn_publish);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.txt_begin_time:
String beginTime = mTxtBeginTime.getText().toString();
Calendar calendarBeginTime = Calendar.getInstance();
if (!CheckUtils.isEmpty(beginTime)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(TimeUtils.DATE_FORMAT_YMD);
try {
calendarBeginTime.setTime(simpleDateFormat.parse(beginTime));
} catch (ParseException e) {
e.printStackTrace();
}
}
ActionUtils.selectDate(this, mTxtBeginTime, calendarBeginTime, getString(R.string.publish_job_label_begin_time));
break;
case R.id.txt_end_time:
String endTime = mTxtEndTime.getText().toString();
Calendar calendarEndTime = Calendar.getInstance();
calendarEndTime.add(Calendar.DATE, 1);
if (!CheckUtils.isEmpty(endTime)) {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat(TimeUtils.DATE_FORMAT_YMD);
try {
calendarEndTime.setTime(simpleDateFormat.parse(endTime));
} catch (ParseException e) {
e.printStackTrace();
}
}
ActionUtils.selectDate(this, mTxtEndTime, calendarEndTime, getString(R.string.publish_job_label_end_time));
break;
case R.id.txt_pay_type:
mTxtSelectTemp = mTxtPayType;
String[] payTypeArray = getResources().getStringArray(R.array.pay_type);
IntentManager.openChoooseListActivity(WriteJobActivity.this,
getString(R.string.publish_job_label_pay_type),
payTypeArray, REQUEST_TXT_SELECT);
break;
case R.id.txt_work_area:
mTxtSelectTemp = mTxtWorkArea;
String[] workAreaArray = new String[]{"南山区", "罗湖区", "福田区", "宝安区"};
IntentManager.openChoooseListActivity(WriteJobActivity.this,
getString(R.string.publish_job_label_work_area),
workAreaArray, REQUEST_TXT_SELECT);
break;
case R.id.txt_salary_unit:
mTxtSelectTemp = mTxtSalaryUnit;
String[] salaryUnitArray = getResources().getStringArray(R.array.salary_unit);
IntentManager.openChoooseListActivity(WriteJobActivity.this,
getString(R.string.publish_job_label_salary_unit),
salaryUnitArray, REQUEST_TXT_SELECT);
break;
case R.id.txt_language:
ActionSheet.showSheetLanguage(this, this, this,
mTxtLanguage);
break;
case R.id.txt_height:
mTxtSelectTemp = mTxtHeight;
String[] heightArray = getResources().getStringArray(R.array.height);
IntentManager.openChoooseListActivity(WriteJobActivity.this,
getString(R.string.publish_job_label_height),
heightArray, REQUEST_TXT_SELECT);
break;
case R.id.txt_measurements:
ActionUtils.selectMeasurements(this, mTxtMeasurements);
break;
default:
break;
}
}
@Override
public void setBackButton() {
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_TXT_SELECT:
if (data != null) {
String result = data.getStringExtra(ChooseListActivity.EXTRA_RESULT);
if (mTxtSelectTemp != null) {
mTxtSelectTemp.setText(result);
if (mTxtSelectTemp == mTxtSalaryUnit) {
refreshSalaryControls();
}
}
}
break;
default:
break;
}
}
}
/**
* 刷新薪酬单位关系
*/
private void refreshSalaryControls() {
SalaryUnit salaryUnit = SalaryUnit.parse(mTxtSalaryUnit.getText().toString());
if (salaryUnit == SalaryUnit.FACE_TO_FACE) {
mEditSalary.setText(R.string.publish_job_salary_unit_face_to_face);
mEditSalary.setEnabled(false);
} else {
if (mEditSalary.getText().toString().equals(getString(R.string.publish_job_salary_unit_face_to_face))) {
mEditSalary.setText("");
}
mEditSalary.setEnabled(true);
}
mTxtSalaryUnitTip.setText(LabelUtils.getSalaryUnit(this, salaryUnit));
}
/**
* 切换是否指定性别
*/
private void toggleSex() {
if (mRadioSexUnlimited.isChecked()) {
mLLHeadSumContainer.setVisibility(View.VISIBLE);
mLLSexContainer.setVisibility(View.GONE);
} else if (mRadioSexLimited.isChecked()) {
mLLHeadSumContainer.setVisibility(View.GONE);
mLLSexContainer.setVisibility(View.VISIBLE);
}
}
/**
* 切换更多要求
*/
private void toggleMoreRequire() {
if (mLLMoreRequireContainer.getVisibility() == View.GONE) {
mLLMoreRequireContainer.setVisibility(View.VISIBLE);
Drawable drawable = getResources().getDrawable(
R.drawable.other_btn_off);
mTxtMoreRequire.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
} else {
mLLMoreRequireContainer.setVisibility(View.GONE);
Drawable drawable = getResources().getDrawable(
R.drawable.other_btn_on);
mTxtMoreRequire.setCompoundDrawablesWithIntrinsicBounds(null, null, drawable, null);
}
}
@Override
public void onCancel(DialogInterface dialogInterface) {
}
@Override
public void onClick(int whichButton) {
}
private boolean verifyForm() {
String verifyStr;
verifyStr = mEditJobTitle.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_job_title)));
return false;
}
String beginTime;
beginTime = verifyStr = mTxtBeginTime.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_begin_time)));
return false;
}
// 判断开始时间是否早于今天
try {
if (TimeUtils.beforeToday(beginTime, TimeUtils.DATE_FORMAT_YMD)) {
showToast(R.string.publish_job_begin_time_warn);
return false;
}
} catch (ParseException e) {
e.printStackTrace();
}
String endTime;
endTime = verifyStr = mTxtEndTime.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_end_time)));
return false;
}
// 判断结束时间是否早于开始时间
try {
if (TimeUtils.before(endTime, beginTime, TimeUtils.DATE_FORMAT_YMD)) {
showToast(R.string.publish_job_end_time_warn);
return false;
}
} catch (ParseException e) {
e.printStackTrace();
}
verifyStr = mTxtPayType.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_pay_type)));
return false;
}
verifyStr = mTxtWorkArea.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_work_area)));
return false;
}
verifyStr = mEditWorkAddress.getText().toString();
if (CheckUtils.isEmpty(verifyStr) ||
verifyStr.length() < getResources().getInteger(R.integer.work_address_min_length)) {
showToast(R.string.publish_job_hint_work_address);
return false;
}
verifyStr = mEditSalary.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_salary)));
return false;
} else {
if (SalaryUnit.parse(mTxtSalaryUnit.getText().toString()) != SalaryUnit.FACE_TO_FACE) {
try {
Integer.parseInt(verifyStr);
} catch (NumberFormatException e) {
showToast(getString(R.string.publish_job_form_salary_format_error));
return false;
}
}
}
verifyStr = mTxtSalaryUnit.getText().toString();
if (CheckUtils.isEmpty(verifyStr)) {
showToast(getString(R.string.publish_job_form_uninput_warn_format, getString(R.string.publish_job_label_salary_unit)));
return false;
}
verifyStr = mEditWorkRequire.getText().toString();
if (CheckUtils.isEmpty(verifyStr) ||
verifyStr.length() < getResources().getInteger(R.integer.work_require_min_length)) {
showToast(R.string.publish_job_hint_work_require);
return false;
}
return true;
}
private void publish() {
PartJob partJob = buildPartJob();
showWait(true);
new PublishRequest().publish(partJob, queue, new DefaultCallback() {
@Override
public void success(Object obj) {
showWait(false);
showToast(R.string.publish_job_success);
IntentManager.goToMainTabActivity(WriteJobActivity.this);
}
@Override
public void failed(Object obj) {
showWait(false);
if (obj instanceof ResponseBaseCommonError) {
ResponseBaseCommonError error = (ResponseBaseCommonError) obj;
showToast(getString(R.string.publish_job_fail) + ":" + error.msg);
} else if (obj instanceof VolleyError) {
VolleyError error = (VolleyError) obj;
showToast(error.getMessage());
}
}
});
}
private void preview() {
PartJob partJob = buildPartJob();
IntentManager.openJobDetailActivity(this, partJob);
}
private PartJob buildPartJob() {
PartJob partJob = new PartJob();
partJob.companyId = ApplicationUtils.getLoginId();
partJob.companyName = ApplicationUtils.getLoginName();
partJob.type = type;
partJob.title = FormatUtils.formatStr(mEditJobTitle.getText().toString());
partJob.beginTime = FormatUtils.formatStr(mTxtBeginTime.getText().toString());
partJob.endTime = FormatUtils.formatStr(mTxtEndTime.getText().toString());
partJob.payType = FormatUtils.formatStr(mTxtPayType.getText().toString());
partJob.city = ApplicationUtils.getCity();
partJob.area = FormatUtils.formatStr(mTxtWorkArea.getText().toString());
partJob.address = FormatUtils.formatStr(mEditWorkAddress.getText().toString());
partJob.salaryUnit = SalaryUnit.parse(FormatUtils.formatStr(mTxtSalaryUnit.getText().toString()));
if (partJob.salaryUnit != SalaryUnit.FACE_TO_FACE) {
partJob.salary = FormatUtils.parseToInt(mEditSalary.getText().toString());
}
partJob.apartSex = mRadioSexLimited.isChecked();
if (partJob.apartSex) {
String maleNumStr = mEditMaleNum.getText().toString();
partJob.maleNum = CheckUtils.isEmpty(maleNumStr) ? 0 : FormatUtils.parseToInt(maleNumStr);
String femaleNumStr = mEditFemaleNum.getText().toString();
partJob.femaleNum = CheckUtils.isEmpty(femaleNumStr) ? 0 : FormatUtils.parseToInt(femaleNumStr);
} else {
String headSumStr = mEditHeadSum.getText().toString();
partJob.headSum = CheckUtils.isEmpty(headSumStr) ? 0 : FormatUtils.parseToInt(headSumStr);
}
partJob.workRequire = FormatUtils.formatStr(mEditWorkRequire.getText().toString());
partJob.isShowTel = mRadioShowTel.isChecked();
String heightTxt = mTxtHeight.getText().toString();
if (!CheckUtils.isEmpty(heightTxt)) {
// 设置了身高
partJob.height = Integer.valueOf(heightTxt);
}
String measurementsTxt = mTxtMeasurements.getText().toString();
if (!CheckUtils.isEmpty(measurementsTxt)) {
// 设置了三围
String[] measurementsArray = measurementsTxt.split("、");
partJob.bust = Integer.valueOf(measurementsArray[0].substring(2));
partJob.beltline = Integer.valueOf(measurementsArray[1].substring(2));
partJob.hipline = Integer.valueOf(measurementsArray[2].substring(2));
}
if (mRadioNeedHealthProve.isChecked() || mRadioUnNeedHealthProve.isChecked()) {
// 选择了是否要健康证
partJob.healthProve = mRadioNeedHealthProve.isChecked();
}
String language = mTxtLanguage.getText().toString();
if (!CheckUtils.isEmpty(language)) {
// 设置了擅长的语言
partJob.language = language;
}
return partJob;
}
}