import { mailModels } from "@mail/../tests/mail_test_helpers"; import { mailDataHelpers } from "@mail/../tests/mock_server/mail_mock_server"; import { serializeDate, today } from "@web/core/l10n/dates"; export class MailActivity extends mailModels.MailActivity { get_today_call_activities() { /** @type {import("mock_models").MailActivityType} */ const MailActivityType = this.env["mail.activity.type"]; const activityTypeIds = MailActivityType.search([["category", "=", "phonecall"]])[0]; const store = new mailDataHelpers.Store(); this._format_call_activities( this.search([ ["activity_type_id", "in", activityTypeIds], ["user_id", "=", this.env.uid], ["date_deadline", "<=", serializeDate(today())], ]), store ); return store.get_result(); } /** @param {number[]} ids */ _format_call_activities(ids, store) { /** @type {import("mock_models").ResPartner} */ const ResPartner = this.env["res.partner"]; const activities = this.browse(ids); const now = serializeDate(today()); for (const activity of activities) { const state = activity.date_deadline === now ? "today" : activity.date_deadline < now ? "overdue" : "planned"; const [record] = this.env[activity.res_model].search_read([ ["id", "=", activity.res_id], ]); const activityData = { id: activity.id, activity_category: "phonecall", res_id: activity.res_id, res_model: activity.res_model, res_name: activity.res_name || record.display_name, state, user_id: activity.user_id, date_deadline: activity.date_deadline, }; let relatedPartner; if (activity.res_model === "res.partner") { [relatedPartner] = ResPartner.search_read([["id", "=", activity.res_id]]); } else { if (record.partner_id) { [relatedPartner] = ResPartner.search_read([["id", "=", record.partner_id]]); } } if (relatedPartner) { activityData.partner = mailDataHelpers.Store.one( ResPartner.browse(relatedPartner.id) ); } activityData.phone = record.phone || relatedPartner?.phone; store.add(this.browse(activity.id), activityData); } } /** @param {number[]} ids */ _to_store(store) { super._to_store(...arguments); for (const activity of this) { if (activity.phone) { store._add_record_fields(this.browse(activity.id), { phone: activity.phone, }); } } } }