/**
* Odoo, Open Source Management Solution
* Copyright (C) 2012-today Odoo SA (<http:www.odoo.com>)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http:www.gnu.org/licenses/>
*
* Created on 25/2/15 11:49 AM
*/
package com.odoo.base.addons.mail;
import android.content.Context;
import com.odoo.base.addons.ir.IrAttachment;
import com.odoo.base.addons.res.ResPartner;
import com.odoo.core.orm.ODataRow;
import com.odoo.core.orm.OModel;
import com.odoo.core.orm.OValues;
import com.odoo.core.orm.annotation.Odoo;
import com.odoo.core.orm.fields.OColumn;
import com.odoo.core.orm.fields.types.OBoolean;
import com.odoo.core.orm.fields.types.ODateTime;
import com.odoo.core.orm.fields.types.OInteger;
import com.odoo.core.orm.fields.types.OText;
import com.odoo.core.orm.fields.types.OVarchar;
import com.odoo.core.support.OUser;
import org.json.JSONArray;
import java.util.ArrayList;
import java.util.List;
public class MailMessage extends OModel {
public static final String TAG = MailMessage.class.getSimpleName();
OColumn author_id = new OColumn("Author", ResPartner.class, OColumn.RelationType.ManyToOne);
OColumn email_from = new OColumn("Email From", OVarchar.class).setDefaultValue("false");
OColumn subject = new OColumn("Subject", OVarchar.class).setSize(100);
OColumn body = new OColumn("Body", OText.class);
OColumn date = new OColumn("Date", ODateTime.class);
OColumn record_name = new OColumn("Record Name", OVarchar.class).setSize(150);
OColumn model = new OColumn("Model", OVarchar.class).setDefaultValue("false");
OColumn res_id = new OColumn("Resource Id", OInteger.class).setDefaultValue(0);
OColumn attachment_ids = new OColumn("Attachments", IrAttachment.class,
OColumn.RelationType.ManyToMany);
OColumn type = new OColumn("Type", OVarchar.class);
OColumn subtype_id = new OColumn("Subtype", MailMessageSubType.class, OColumn.RelationType.ManyToOne);
@Odoo.Functional(method = "authorName", depends = {"author_id", "email_from"}, store = true)
OColumn author_name = new OColumn("Author Name", OVarchar.class).setLocalColumn();
@Odoo.Functional(method = "hasAttachment", depends = {"attachment_ids"}, store = true)
OColumn has_attachments = new OColumn("Has Attachments", OBoolean.class).setLocalColumn()
.setDefaultValue(false);
public MailMessage(Context context, OUser user) {
super(context, "mail.message", user);
}
public boolean hasAttachment(OValues values) {
try {
JSONArray attachment_ids = (JSONArray) values.get("attachment_ids");
if (attachment_ids.length() > 0) {
return true;
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
public String authorName(OValues values) {
try {
if (!values.getString("author_id").equals("false")) {
JSONArray author_id = new JSONArray(values.getString("author_id"));
return author_id.getString(1);
} else {
return values.getString("email_from");
}
} catch (Exception e) {
}
return "";
}
public String getAuthorImage(int row_id) {
ODataRow row = browse(new String[]{"author_id"}, row_id);
if (row.getInt("author_id") != 0) {
ODataRow author_id = row.getM2ORecord("author_id").browse();
return author_id.getString("image_small");
}
return "false";
}
public List<Integer> getServerIds(String model, int res_server_id) {
List<Integer> ids = new ArrayList<>();
for (ODataRow row : select(new String[]{}, "model = ? and res_id = ?",
new String[]{model, res_server_id + ""})) {
ids.add(row.getInt("id"));
}
return ids;
}
@Override
public boolean checkForWriteDate() {
return false;
}
@Override
public boolean allowCreateRecordOnServer() {
return false;
}
@Override
public boolean allowDeleteRecordOnServer() {
return false;
}
@Override
public boolean allowUpdateRecordOnServer() {
return false;
}
}