Skip to content

Commit

Permalink
feat: manage offline api for CRM module
Browse files Browse the repository at this point in the history
  • Loading branch information
gca-axelor committed Jul 8, 2024
1 parent 99dff40 commit 8cf0fb3
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 13 deletions.
17 changes: 14 additions & 3 deletions packages/apps/crm/src/api/catalog-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import {
axiosApiProvider,
createStandardSearch,
getActionApi,
getSearchCriterias,
} from '@axelor/aos-mobile-core';

Expand All @@ -33,6 +34,7 @@ export async function searchCatalog({searchValue, page = 0}) {
fieldKey: 'crm_catalog',
sortKey: 'crm_catalog',
page,
provider: 'model',
});
}

Expand All @@ -49,9 +51,10 @@ export async function createCatalog({
image,
description,
}) {
return axiosApiProvider.put({
url: '/ws/rest/com.axelor.apps.crm.db.Catalog/',
data: {
return getActionApi().send({
url: '/ws/rest/com.axelor.apps.crm.db.Catalog',
method: 'put',
body: {
data: {
name,
catalogType,
Expand All @@ -60,5 +63,13 @@ export async function createCatalog({
description,
},
},
description: 'create catalog',
matchers: {
name: 'data.name',
catalogType: 'data.catalogType',
pdfFile: 'data.pdfFile',
image: 'data.image',
description: 'data.description',
},
});
}
1 change: 1 addition & 0 deletions packages/apps/crm/src/api/company-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,5 +23,6 @@ export async function getCompany({companyId}) {
model: 'com.axelor.apps.base.db.Company',
id: companyId,
fieldKey: 'crm_company',
provider: 'model',
});
}
24 changes: 17 additions & 7 deletions packages/apps/crm/src/api/event-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@
*/

import {
axiosApiProvider,
createStandardFetch,
createStandardSearch,
formatRequestBody,
getActionApi,
getNextMonth,
getPreviousMonth,
getSearchCriterias,
Expand Down Expand Up @@ -148,19 +148,29 @@ export async function getEvent({eventId}) {
}

export async function createEvent({event}) {
return axiosApiProvider.put({
const {formattedData, matchers} = formatRequestBody(event);

return getActionApi().send({
url: '/ws/rest/com.axelor.apps.crm.db.Event',
data: {
data: formatRequestBody(event),
method: 'put',
body: {
data: formattedData,
},
description: 'create event',
matchers,
});
}

export async function updateEvent({event}) {
return axiosApiProvider.post({
const {formattedData, matchers} = formatRequestBody(event);

return getActionApi().send({
url: '/ws/rest/com.axelor.apps.crm.db.Event',
data: {
data: formatRequestBody(event),
method: 'post',
body: {
data: formattedData,
},
description: 'update event',
matchers,
});
}
2 changes: 2 additions & 0 deletions packages/apps/crm/src/api/partner-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ export async function searchPartner({searchValue, page = 0}) {
criteria: createPartnerCriteria(searchValue),
fieldKey: 'crm_partner',
page,
provider: 'model',
});
}

Expand All @@ -139,5 +140,6 @@ export async function searchLinkedPartnersOfContact({contactId}) {
fieldKey: 'crm_partner',
page: 0,
numberElementsByPage: null,
provider: 'model',
});
}
1 change: 1 addition & 0 deletions packages/apps/crm/src/api/prospect-api.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,7 @@ export async function getProspectStatus() {
fieldKey: 'crm_prospectStatus',
numberElementsByPage: null,
page: 0,
provider: 'model',
});
}

Expand Down
9 changes: 6 additions & 3 deletions packages/core/src/utils/formatters.ts
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,21 @@ export const getDateZonesISOString = (dateString: string) => {

export const formatRequestBody = (data: object) => {
if (isEmpty(data)) {
return null;
return {formattedData: null, matchers: {}};
}

let _data = {};
let matchers = {};

Object.entries(data).map(([_key, _value]) => {
Object.entries(data).forEach(([_key, _value]) => {
if (_value != null && typeof _value === 'object') {
_data[_key] = {id: _value.id};
matchers[_key] = `data.${_key}.id`;
} else {
_data[_key] = _value;
matchers[_key] = `data.${_key}`;
}
});

return _data;
return {formattedData: _data, matchers};
};

0 comments on commit 8cf0fb3

Please sign in to comment.