|
|
@@ -9,9 +9,11 @@ import android.support.v4.app.ActivityCompat;
|
|
|
import android.text.TextUtils;
|
|
|
import android.view.View;
|
|
|
import android.view.WindowManager;
|
|
|
+import android.widget.AdapterView;
|
|
|
import android.widget.Button;
|
|
|
import android.widget.EditText;
|
|
|
import android.widget.ImageView;
|
|
|
+import android.widget.LinearLayout;
|
|
|
import android.widget.RadioButton;
|
|
|
import android.widget.RadioGroup;
|
|
|
import android.widget.TextView;
|
|
|
@@ -54,12 +56,15 @@ import com.me.network.app.http.rx.ResultSubscriber;
|
|
|
import com.modular.booking.R;
|
|
|
import com.modular.booking.activity.utils.GridSelectActivity;
|
|
|
import com.modular.booking.activity.utils.GridSelectDateActivity;
|
|
|
+import com.modular.booking.adapter.ItemFoodStateAdapter;
|
|
|
import com.modular.booking.model.SBListModel;
|
|
|
import com.modular.booking.model.SBMenuModel;
|
|
|
+import com.modular.booking.model.SeatsStateModel;
|
|
|
import com.modular.booking.widget.AddSubUtils;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
import de.hdodenhof.circleimageview.CircleImageView;
|
|
|
@@ -99,9 +104,14 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
private TextView tvMSeatsName,tvMSeatsNum,tvZSeatsName,tvZSeatsNum,tvDSeatsName,tvDSeatsNum;
|
|
|
private TextView tv_food_seats;
|
|
|
private SwitchView sv_food_rooms;
|
|
|
- private boolean foodCheckRooms=true;
|
|
|
+ private boolean foodCheckRooms=false;
|
|
|
private TextView tvMSeatsTitle,tvZSeatsTitle,tvDSeatsTitle;
|
|
|
private NScrollerGridView gvMSeats,gvZSeats,gvDSeats;
|
|
|
+ private LinearLayout llPanelWait;
|
|
|
+ private LinearLayout llPanelBusiness;
|
|
|
+ private TextView tvSeatsLeft;
|
|
|
+ private TextView tvSeatsRight;
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
@@ -163,10 +173,15 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
|
|
|
tvMSeatsTitle=(TextView)findViewById(R.id.tvMSeatsTitle);
|
|
|
gvMSeats=(NScrollerGridView)findViewById(R.id.gvMSeats);
|
|
|
- tvMSeatsTitle=(TextView)findViewById(R.id.tvZSeatsTitle);
|
|
|
- gvMSeats=(NScrollerGridView)findViewById(R.id.gvZSeats);
|
|
|
- tvMSeatsTitle=(TextView)findViewById(R.id.tvDSeatsTitle);
|
|
|
- gvMSeats=(NScrollerGridView)findViewById(R.id.gvDSeats);
|
|
|
+ tvZSeatsTitle=(TextView)findViewById(R.id.tvZSeatsTitle);
|
|
|
+ gvZSeats=(NScrollerGridView)findViewById(R.id.gvZSeats);
|
|
|
+ tvDSeatsTitle=(TextView)findViewById(R.id.tvDSeatsTitle);
|
|
|
+ gvDSeats=(NScrollerGridView)findViewById(R.id.gvDSeats);
|
|
|
+
|
|
|
+ tvSeatsLeft=findViewById(R.id.tvSeatsLeft);
|
|
|
+ tvSeatsRight=findViewById(R.id.tvSeatsRight);
|
|
|
+ llPanelWait=(LinearLayout)findViewById(R.id.llPanelWait);
|
|
|
+ llPanelBusiness=(LinearLayout)findViewById(R.id.llPanelBusiness);
|
|
|
|
|
|
submit_btn.setOnClickListener(this);
|
|
|
et_book_name.setText(CommonUtil.getName());
|
|
|
@@ -224,7 +239,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
}
|
|
|
}
|
|
|
});
|
|
|
-
|
|
|
+ sv_food_rooms.setChecked(false);
|
|
|
sv_food_rooms.setOnCheckedChangeListener(new SwitchView.OnCheckedChangeListener() {
|
|
|
@Override
|
|
|
public void onCheckedChanged(View view, boolean isChecked) {
|
|
|
@@ -233,6 +248,25 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
|
|
|
}
|
|
|
});
|
|
|
+
|
|
|
+ tvSeatsLeft.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ tvSeatsLeft.setTextColor(mContext.getResources().getColor(R.color.blue_seats_num));
|
|
|
+ tvSeatsRight.setTextColor(mContext.getResources().getColor(R.color.gray));
|
|
|
+ llPanelBusiness.setVisibility(View.GONE);
|
|
|
+ llPanelWait.setVisibility(View.VISIBLE);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ tvSeatsRight.setOnClickListener(new View.OnClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onClick(View view) {
|
|
|
+ tvSeatsLeft.setTextColor(mContext.getResources().getColor(R.color.gray));
|
|
|
+ tvSeatsRight.setTextColor(mContext.getResources().getColor(R.color.blue_seats_num));
|
|
|
+ llPanelBusiness.setVisibility(View.VISIBLE);
|
|
|
+ llPanelWait.setVisibility(View.GONE);
|
|
|
+ }
|
|
|
+ });
|
|
|
}
|
|
|
|
|
|
private boolean isEdited = true;
|
|
|
@@ -251,7 +285,6 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
if (model != null) {
|
|
|
LogUtil.i(model.toString());
|
|
|
initType(model.getType());
|
|
|
- getSteatListStates();//获取餐饮类别状态信息
|
|
|
if (isEdited) {
|
|
|
submit_btn.setText("立即预约");
|
|
|
if (!StringUtil.isEmpty(sb_userid)) {
|
|
|
@@ -955,7 +988,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
map.put("sb_spname", tv_food_rooms.getText());
|
|
|
}else{
|
|
|
//选桌位
|
|
|
- map.put("sb_spname", tv_food_seats.getTag(R.id.tag_id));
|
|
|
+ map.put("sb_stname", tv_food_seats.getTag(R.id.tag_id));
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -1111,10 +1144,10 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
private void initType(String type) {
|
|
|
if (type == null) return;
|
|
|
JSONObject data = null;
|
|
|
+ if (dataService != null) {
|
|
|
+ data = JSON.parseObject(dataService);
|
|
|
+ }
|
|
|
if (!isEdited) {
|
|
|
- if (dataService != null) {
|
|
|
- data = JSON.parseObject(dataService);
|
|
|
- }
|
|
|
et_book_phone.setText(data.getString("sb_telephone"));
|
|
|
et_book_name.setText(data.getString("sb_recordor"));
|
|
|
et_book_notes.setText(data.getString("sb_remark"));
|
|
|
@@ -1131,7 +1164,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
tv_food_peoples.setOnClickListener(this);
|
|
|
tv_food_peoples.setVisibility(View.GONE);
|
|
|
addSubUtils.setVisibility(View.VISIBLE);
|
|
|
-
|
|
|
+ tvSeatsRight.setVisibility(View.GONE);
|
|
|
} else {
|
|
|
if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
|
|
|
tv_food_times.setText(data.getString("sb_endtime"));
|
|
|
@@ -1139,10 +1172,22 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
tv_food_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
|
|
|
+ data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
|
|
|
}
|
|
|
+
|
|
|
+ searchSeatNumbers(tv_food_times.getText().toString(),data.getString("sb_companyid"));
|
|
|
+ getSteatListStates(data.getString("sb_companyid"));//获取餐饮类别状态信息
|
|
|
tv_food_rooms.setText(data.getString("sb_stname"));
|
|
|
tv_food_peoples.setText(data.getString("sb_person"));
|
|
|
tv_food_peoples.setVisibility(View.VISIBLE);
|
|
|
addSubUtils.setVisibility(View.GONE);
|
|
|
+ if (!StringUtil.isEmpty(dataService)) {
|
|
|
+ JSONObject object = JSON.parseObject(dataService);
|
|
|
+ String recordId = object.getString("sb_recordid");
|
|
|
+ if (MyApplication.getInstance().mLoginUser.getUserId().equals(recordId)) {
|
|
|
+ tvSeatsRight.setVisibility(View.GONE);
|
|
|
+ } else {
|
|
|
+ tvSeatsRight.setVisibility(View.VISIBLE); //商家释放
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case "美容美发":// 美容美发
|
|
|
@@ -1275,6 +1320,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
tv_food_peoples.setOnClickListener(this);
|
|
|
addSubUtils.setVisibility(View.VISIBLE);
|
|
|
tv_food_peoples.setVisibility(View.GONE);
|
|
|
+ tvSeatsRight.setVisibility(View.GONE);
|
|
|
} else {
|
|
|
if (StringUtil.isEmpty(data.getString("sb_starttime"))) {
|
|
|
tv_food_times.setText(data.getString("sb_endtime"));
|
|
|
@@ -1282,10 +1328,20 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
tv_food_times.setText(data.getString("sb_starttime").substring(0, 10) + " "
|
|
|
+ data.getString("sb_starttime").substring(11, 16) + "-" + data.getString("sb_endtime").substring(11, 16));
|
|
|
}
|
|
|
+ searchSeatNumbers(tv_food_times.getText().toString(),data.getString("sb_companyid"));
|
|
|
tv_food_rooms.setText(data.getString("sb_spname"));
|
|
|
tv_food_peoples.setText(data.getString("sb_person"));
|
|
|
tv_food_peoples.setVisibility(View.VISIBLE);
|
|
|
addSubUtils.setVisibility(View.GONE);
|
|
|
+ if (!StringUtil.isEmpty(dataService)) {
|
|
|
+ JSONObject object = JSON.parseObject(dataService);
|
|
|
+ String recordId = object.getString("sb_recordid");
|
|
|
+ if (MyApplication.getInstance().mLoginUser.getUserId().equals(recordId)) {
|
|
|
+ tvSeatsRight.setVisibility(View.GONE);
|
|
|
+ } else {
|
|
|
+ tvSeatsRight.setVisibility(View.VISIBLE); //商家释放
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
break;
|
|
|
case "10004"://美容美发
|
|
|
@@ -1547,6 +1603,7 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
dimssLoading();
|
|
|
try {
|
|
|
LogUtil.d(TAG,o.toString());
|
|
|
+ boolean isEnter=false;
|
|
|
JSONArray deskbook=JSON.parseObject(o.toString()).getJSONArray("deskbook");
|
|
|
JSONArray desklist=JSON.parseObject(o.toString()).getJSONArray("desklist");
|
|
|
if (!ListUtils.isEmpty(deskbook)){
|
|
|
@@ -1554,23 +1611,26 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
JSONObject object=deskbook.getJSONObject(i);
|
|
|
String number= object.getString("number");//预约量
|
|
|
String king=object.getString("kind");//类型
|
|
|
- String booknumber=object.getString("booknumber");//总预约量
|
|
|
+ String booknumber=object.getString("as_booknumber");//总预约量
|
|
|
String deskcode=object.getString("deskcode");//桌位编号
|
|
|
Integer bookednumber=Integer.valueOf(booknumber)-Integer.valueOf(number);
|
|
|
- if(asType.contains(king)){
|
|
|
- if (asType.equals("小桌")){
|
|
|
+ if (king.equals("小桌")){
|
|
|
CommonUtil.textSpanForStyle(tvMSeatsNum,"前方"+number+"桌",number,ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
}
|
|
|
- if (asType.equals("中桌")){
|
|
|
+ if (king.equals("中桌")){
|
|
|
CommonUtil.textSpanForStyle(tvZSeatsNum,"前方"+number+"桌",number,ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
}
|
|
|
- if (asType.equals("大桌")){
|
|
|
+ if (king.equals("大桌")){
|
|
|
CommonUtil.textSpanForStyle(tvDSeatsNum,"前方"+number+"桌",number,ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
}
|
|
|
- }
|
|
|
+ if (asType.equals(king)){
|
|
|
+ tv_food_seats.setTag(R.id.tag_id,deskcode);
|
|
|
+ CommonUtil.textSpanForStyle(tv_food_seats,"仅剩"+bookednumber+"桌",String.valueOf(bookednumber),ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
+ }else{
|
|
|
+ isEnter=true;//置空,下面循环会进入指定逻辑代码
|
|
|
+ }
|
|
|
//tv_food_seats.setText("仅剩"+bookednumber+"桌");
|
|
|
- tv_food_seats.setTag(R.id.tag_id,deskcode);
|
|
|
- CommonUtil.textSpanForStyle(tv_food_seats,"仅剩"+bookednumber+"桌",String.valueOf(bookednumber),ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
if (desklist!=null){
|
|
|
@@ -1579,11 +1639,13 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
String as_type= object.getString("as_type");
|
|
|
String as_number=object.getString("as_number");
|
|
|
String as_remark=object.getString("as_remark");
|
|
|
+ String as_booknumber=object.getString("as_booknumber");
|
|
|
+ Integer bookNum=Integer.valueOf(as_booknumber)-Integer.valueOf(as_number);
|
|
|
String as_deskcode=object.getString("as_deskcode");
|
|
|
if (ListUtils.isEmpty(deskbook)) {
|
|
|
- if (as_type.equals(asType)) {
|
|
|
+ if (as_type.equals(asType)||isEnter) {
|
|
|
//tv_food_seats.setText("仅剩"+as_number+"桌");
|
|
|
- CommonUtil.textSpanForStyle(tv_food_seats,"仅剩"+as_number+"桌",as_number,ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
+ CommonUtil.textSpanForStyle(tv_food_seats,"仅剩"+bookNum+"桌",String.valueOf(bookNum),ct.getResources().getColor(R.color.blue_seats_num));
|
|
|
LogUtil.d(TAG,"as_number:"+as_number+" as_deskcode:"+as_deskcode);
|
|
|
// tv_food_seats.setTag(0,as_number);
|
|
|
tv_food_seats.setTag(R.id.tag_id,as_deskcode+"01");//桌位编号
|
|
|
@@ -1623,39 +1685,128 @@ public class BServiceAddActivity extends OABaseActivity implements View.OnClickL
|
|
|
|
|
|
|
|
|
//获取列表状态
|
|
|
- public void getSteatListStates(){
|
|
|
+ public void getSteatListStates(String companyId){
|
|
|
LogUtil.d(TAG,"model companyid:"+model.getCompanyid());
|
|
|
HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
|
|
|
httpClient.Api().send(new HttpClient.Builder()
|
|
|
.url("user/appDeskDetail")
|
|
|
- .add("companyid",model.getCompanyid())
|
|
|
+ .add("companyid",companyId)
|
|
|
.add("token",MyApplication.getInstance().mAccessToken)
|
|
|
.method(Method.POST)
|
|
|
.build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
|
|
|
|
|
|
@Override
|
|
|
public void onResponse(Object o) {
|
|
|
- LogUtil.d(TAG,o.toString());
|
|
|
+ try {
|
|
|
+ LogUtil.d(TAG,o.toString());
|
|
|
+ JSONArray jsonArray=JSON.parseObject(o.toString()).getJSONArray("result");
|
|
|
+ List< SeatsStateModel> seatsM=new ArrayList<>();
|
|
|
+ List< SeatsStateModel> seatsZ=new ArrayList<>();
|
|
|
+ List< SeatsStateModel> seatsD=new ArrayList<>();
|
|
|
+ for (int i = 0; i <jsonArray.size() ; i++) {
|
|
|
+ JSONObject object=jsonArray.getJSONObject(i);
|
|
|
+ String ad_deskcode=object.getString("ad_deskcode");
|
|
|
+ String ad_desktype=object.getString("ad_desktype");
|
|
|
+ String ad_status=object.getString("ad_status");
|
|
|
+ String ad_bookid=object.getString("ad_bookid");
|
|
|
+
|
|
|
+ SeatsStateModel model=new SeatsStateModel();
|
|
|
+ model.setAd_deskcode(ad_deskcode.substring(1,ad_deskcode.length()));
|
|
|
+ model.setAd_id(ad_deskcode);
|
|
|
+ model.setAd_status(ad_status);
|
|
|
+ model.setAd_bookid(ad_bookid);
|
|
|
+ model.setAd_companyid(object.getString("ad_companyid"));
|
|
|
+
|
|
|
+ if ("小桌".equals(ad_desktype)){
|
|
|
+ seatsM.add(model);
|
|
|
+ }else if("中桌".equals(ad_desktype)){
|
|
|
+ seatsZ.add(model);
|
|
|
+ }else{
|
|
|
+ seatsD.add(model);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ tvMSeatsTitle.setText("小桌(1-2人,共"+seatsM.size()+"桌)");
|
|
|
+ tvZSeatsTitle.setText("中桌(3-5人,共"+seatsZ.size()+"桌)");
|
|
|
+ tvDSeatsTitle.setText("大桌(6人以上,共"+seatsD.size()+"桌)");
|
|
|
+ gvMSeats.setAdapter(new ItemFoodStateAdapter(mContext,seatsM));
|
|
|
+ gvDSeats.setAdapter(new ItemFoodStateAdapter(mContext,seatsD));
|
|
|
+ gvZSeats.setAdapter(new ItemFoodStateAdapter(mContext,seatsZ));
|
|
|
+
|
|
|
+ gvMSeats.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
|
|
+ ItemFoodStateAdapter.ViewHolder viewHolder= (ItemFoodStateAdapter.ViewHolder) view.getTag();
|
|
|
+ LogUtil.d(TAG,"model:"+JSON.toJSONString(viewHolder.model));
|
|
|
+ steatAction(viewHolder.model.getAd_id(),viewHolder.model.getAd_status(),viewHolder.model.getAd_bookid());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ gvDSeats.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
|
|
+ ItemFoodStateAdapter.ViewHolder viewHolder= (ItemFoodStateAdapter.ViewHolder) view.getTag();
|
|
|
+ LogUtil.d(TAG,"model:"+JSON.toJSONString(viewHolder.model));
|
|
|
+ steatAction(viewHolder.model.getAd_id(),viewHolder.model.getAd_status(),viewHolder.model.getAd_bookid());
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ gvZSeats.setOnItemClickListener(new AdapterView.OnItemClickListener() {
|
|
|
+ @Override
|
|
|
+ public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
|
|
|
+ ItemFoodStateAdapter.ViewHolder viewHolder= (ItemFoodStateAdapter.ViewHolder) view.getTag();
|
|
|
+ LogUtil.d(TAG,"model:"+JSON.toJSONString(viewHolder.model));
|
|
|
+ steatAction(viewHolder.model.getAd_id(),viewHolder.model.getAd_status(),viewHolder.model.getAd_bookid());
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
}));
|
|
|
}
|
|
|
|
|
|
//释放操作,锁定操作
|
|
|
- public void steatAction(String deskcode,String actionType){
|
|
|
+ public void steatAction(String deskcode,String actionType,String bookid){
|
|
|
+ showLoading();
|
|
|
//companyid 公司ID,bookid 服务预约ID,deskcode 桌位号,type 0代表释放操作,1代表锁定操作,token
|
|
|
- HttpClient httpClient=new HttpClient.Builder("").build();
|
|
|
+ if ("0".equals(actionType)){
|
|
|
+ actionType="1";
|
|
|
+ }else if("1".equals(actionType)){
|
|
|
+ actionType="0";
|
|
|
+ }
|
|
|
+
|
|
|
+ final String sb_companyid=JSON.parseObject(dataService).getString("sb_companyid");
|
|
|
+ final String sb_id=JSON.parseObject(dataService).getString("sb_id");
|
|
|
+ HttpClient httpClient=new HttpClient.Builder(Constants.IM_BASE_URL()).build();
|
|
|
httpClient.Api().send(new HttpClient.Builder()
|
|
|
.url("user/appStoreRelease")
|
|
|
- .add("companyid",model.getCompanyid())
|
|
|
+ .add("companyid", sb_companyid)
|
|
|
+ .add("bookid",bookid)
|
|
|
.add("deskcode",deskcode)
|
|
|
- .add("type",actionType)
|
|
|
- .add("token",MyApplication.getInstance().mAccessToken)
|
|
|
+ .add("type",actionType)
|
|
|
+ .add("token",MyApplication.getInstance().mAccessToken)
|
|
|
.method(Method.POST)
|
|
|
.build(),new ResultSubscriber<Object>(new ResultListener<Object>() {
|
|
|
|
|
|
@Override
|
|
|
public void onResponse(Object o) {
|
|
|
- LogUtil.d(TAG,o.toString());
|
|
|
+ //{"result":"true"}
|
|
|
+ try {
|
|
|
+ dimssLoading();
|
|
|
+ LogUtil.d(TAG,o.toString());
|
|
|
+ if (JSONUtil.validate(o.toString())){
|
|
|
+ String result= JSON.parseObject(o.toString()).getString("result");
|
|
|
+ if (result.equals("true")){
|
|
|
+ getSteatListStates(sb_companyid);
|
|
|
+ }else{
|
|
|
+ ToastMessage("操作失败!");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
}
|
|
|
}));
|
|
|
}
|