package com.odoo.addons.mail.models;
import java.util.List;
import odoo.OArguments;
import org.json.JSONArray;
import org.json.JSONObject;
import android.content.Context;
import com.odoo.R;
import com.odoo.addons.mail.providers.group.MailGroupProvider;
import com.odoo.base.mail.MailFollowers;
import com.odoo.orm.OColumn;
import com.odoo.orm.OColumn.RelationType;
import com.odoo.orm.OModel;
import com.odoo.orm.OSyncHelper;
import com.odoo.orm.OValues;
import com.odoo.orm.annotations.Odoo;
import com.odoo.orm.types.OBlob;
import com.odoo.orm.types.OBoolean;
import com.odoo.orm.types.OText;
import com.odoo.orm.types.OVarchar;
import com.odoo.support.provider.OContentProvider;
import com.odoo.util.JSONUtils;
public class MailGroup extends OModel {
Context mContext = null;
OColumn name = new OColumn("Name", OVarchar.class, 64);
OColumn description = new OColumn("Description", OText.class);
OColumn image_medium = new OColumn("Image_Medium", OBlob.class);
OColumn message_follower_ids = new OColumn("Followers",
MailFollowers.class, RelationType.ManyToMany);
@Odoo.Functional(method = "hasFollowed", depends = { "message_follower_ids" }, store = true)
OColumn has_followed = new OColumn("Followed", OBoolean.class)
.setDefault(0).setLocalColumn();
public MailGroup(Context context) {
super(context, "mail.group");
mContext = context;
}
public int hasFollowed(OValues vals) {
List<Integer> ids = JSONUtils.toList((JSONArray) vals
.get("message_follower_ids"));
if (ids.indexOf(user().getPartner_id()) > -1) {
return 1;
}
return 0;
}
public void followUnfollowGroup(int group_id, boolean follow) {
try {
OSyncHelper sync = getSyncHelper();
OValues values = new OValues();
OArguments args = new OArguments();
args.add(new JSONArray().put(selectServerId(group_id)));
if (follow) {
// Action Follow
sync.callMethod("action_follow", args, new JSONObject());
values.put("has_followed", 1);
} else {
// Action unfollow
sync.callMethod("action_unfollow", args, new JSONObject());
values.put("has_followed", 0);
}
resolver().update(group_id, values);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public Boolean checkForLocalLatestUpdate() {
return false;
}
@Override
public Boolean checkForLocalUpdate() {
return false;
}
@Override
public Boolean canCreateOnServer() {
return false;
}
@Override
public Boolean canDeleteFromLocal() {
return false;
}
@Override
public Boolean canDeleteFromServer() {
return false;
}
@Override
public Boolean canUpdateToServer() {
return false;
}
@Override
public Boolean checkForCreateDate() {
return false;
}
@Override
public Boolean checkForWriteDate() {
return false;
}
@Override
public OContentProvider getContentProvider() {
return new MailGroupProvider();
}
}