bpixrm
Version:
Bpifrance XRM Package
890 lines (629 loc) • 33 kB
text/typescript
import { ExtendedBoolean, CompanyType, AddressType, BpiUsersType, SystemUserType, PortfolioItemType, InteractionType, UserType, CommunityType, E404 } from './index';
import { EstablishmentType } from './types';
import { IDynamicsBaseClass } from './IDynamicsBaseClass';
var _ = require('lodash');
class IDynamicsService extends IDynamicsBaseClass{
//================================================================================================================
private static populateCompany(item: any): CompanyType {
if (item === undefined) return {} as CompanyType;
const contacts: Array<UserType> = []
const establishments: Array<EstablishmentType> = []
let company: CompanyType = {
eTag: IDynamicsService.getItem(item, "@odata.etag"),
guid: item.accountid,
accountid: item.accountid,
bpi_siren: item.bpi_siren,
bpi_codecp: item.bpi_codecp,
name: item.name,
bpi_nom: item.bpi_nom,
bpi_prenom: item.bpi_prenom,
bpi_nomcommercial: item.bpi_nomcommercial,
bpi_nomcommercialbcp: item.bpi_nomcommercialbcp,
imageUrl: item.entityimage_url,
image: item.entityimage,
address1: IDynamicsService.populateAddress(item),
telephone1: item.telephone1,
bpi_fondeele: item.bpi_fondeele,
websiteurl: item.websiteurl,
derniereInteraction: IDynamicsService.getIType(item, "bpi_derniereinteraction", "", ""),
derniereActiviteType: IDynamicsService.getIType(item, "bpi_typederniereactivite"),
derniereActiviteDate: IDynamicsService.getIType(item, "bpi_datedederniereactivit"),
dateDernierProjetInvest: IDynamicsService.getIType(item, "bpi_datedernierprojetinvest"),
dateDernierProjetFinance: IDynamicsService.getIType(item, "bpi_datedernierprojfinance"),
dateDernierProjetAccomp: IDynamicsService.getIType(item, "bpi_datedernierprojetaccomp"),
primaryContact: IDynamicsService.getIType(item, "_primarycontactid_value"),
parent: IDynamicsService.getIType(item, "_parentaccountid_value"),
isPivot: false,
contacts: contacts,
establishments: establishments,
} as CompanyType;
switch (company.derniereInteraction.value) {
case null: {
company.derniereInteractionType = InteractionType.None;
break;
} case company.derniereActiviteDate.value: {
company.derniereInteractionType = InteractionType.Activite;
break;
}
case company.dateDernierProjetInvest.value: {
company.derniereInteractionType = InteractionType.Invest;
break;
}
case company.dateDernierProjetFinance.value: {
company.derniereInteractionType = InteractionType.Finance;
break;
}
case company.dateDernierProjetAccomp.value: {
company.derniereInteractionType = InteractionType.Accomp;
break;
}
default: {
company.derniereInteractionType = InteractionType.None;
break;
}
}
if (company.parent.value == null) {
company.isPivot = true;
}
return company;
}
//================================================================================================================
private static populateEstablishments(items: any): Array<EstablishmentType> {
let establishments: Array<EstablishmentType> = [];
items.forEach((item: any, key: string) => {
let establishment: EstablishmentType = {
eTag: IDynamicsService.getItem(item, "@odata.etag"),
guid: item.bpi_etablissementsid,
bpi_etablissementsid: item.bpi_etablissementsid,
bpi_codecp: item.bpi_codecp,
bpi_codepostal: item.bpi_codepostal,
bpi_date_creation: IDynamicsService.getIType(item, "bpi_date_creation"),
bpi_date_fermeture: IDynamicsService.getIType(item, "bpi_date_fermeture"),
bpi_name: item.bpi_name,
bpi_numeroetablissement: item.bpi_numeroetablissement,
bpi_phone: item.bpi_phone,
bpi_siegesocial: IDynamicsService.getIType(item, "bpi_siegesocial"),
createdOn: IDynamicsService.getIType(item, "createdon"),
modifiedOn: IDynamicsService.getIType(item, "modifiedon"),
bpi_siret: item.bpi_siret,
bpi_ville: item.bpi_ville,
bpi_voie: item.bpi_voie,
}
establishments.push(establishment);
});
return establishments;
}
//================================================================================================================
private static populateEstablishment(item: any): EstablishmentType {
let establishment: EstablishmentType = {
eTag: IDynamicsService.getItem(item, "@odata.etag"),
guid: item.bpi_etablissementsid,
bpi_etablissementsid: item.bpi_etablissementsid,
bpi_codecp: item.bpi_codecp,
bpi_codepostal: item.bpi_codepostal,
bpi_date_creation: IDynamicsService.getIType(item, "bpi_date_creation"),
bpi_date_fermeture: IDynamicsService.getIType(item, "bpi_date_fermeture"),
bpi_name: item.bpi_name,
bpi_numeroetablissement: item.bpi_numeroetablissement,
bpi_phone: item.bpi_phone,
bpi_siegesocial: IDynamicsService.getIType(item, "bpi_siegesocial"),
createdOn: IDynamicsService.getIType(item, "createdon"),
modifiedOn: IDynamicsService.getIType(item, "modifiedon"),
bpi_siret: item.bpi_siret,
bpi_ville: item.bpi_ville,
bpi_voie: item.bpi_voie,
};
return establishment;
}
//================================================================================================================
private static populateAddress(item: any, position: number = 1): AddressType {
const addressSuffix = "address" + String(position) + "_";
let address: AddressType = {
eTag: item["@odata.etag"],
id: item[addressSuffix + "addressid"],
name: item[addressSuffix + "addressid"],
line1: item[addressSuffix + "line1"],
line2: item[addressSuffix + "line2"],
line3: item[addressSuffix + "line3"],
postalCode: item[addressSuffix + "postalcode"],
city: item[addressSuffix + "city"],
state: item[addressSuffix + "stateorprovince"],
country: item[addressSuffix + "country"],
composite: item[addressSuffix + "composite"],
typeCode: item[addressSuffix + "addresstypecode"],
latitude: item[addressSuffix + "latitude"],
longitude: item[addressSuffix + "longitude"],
telephone1: item[addressSuffix + "telephone1"],
telephone2: item[addressSuffix + "telephone2"],
telephone3: item[addressSuffix + "telephone3"],
fax: item[addressSuffix + "fax"],
//primaryContact: IDynamicsService.getIType(item, addressSuffix + "primarycontactname"),
} as AddressType;
return address;
}
//================================================================================================================
private static populateSystemUser(item: any): SystemUserType {
if (item === undefined) return {} as SystemUserType;
let user: SystemUserType = {
guid: item.systemuserid,
systemuserid: item.systemuserid,
eTag: IDynamicsService.getItem(item, "@odata.etag"),
fullname: item.fullname,
firstname: item.firstname,
lastname: item.lastname,
metier: IDynamicsService.getIType(item, "bpi_metier"),
fonction: IDynamicsService.getIType(item, "_bpi_fonction_value"),
jobtitle: item.jobtitle,
internalemailaddress: item.internalemailaddress,
emailaddress: item.internalemailaddress,
domainname: item.domainname,
windowsliveid: item.windowsliveid,
address1: IDynamicsService.populateAddress(item),
telephone1: item.telephone1,
} as SystemUserType
return user;
}
//================================================================================================================
private static populateUser(item: any): UserType {
if (item === undefined) return {} as UserType;
let user: UserType = {
eTag: IDynamicsService.getItem(item, "@odata.etag"),
guid: item.contactid,
contactid: item.contactid,
civility: IDynamicsService.getIType(item, "bpi_civilite"),
fullname: item.fullname,
firstname: item.firstname,
lastname: item.lastname,
emailaddress: item.emailaddress1,
address1: IDynamicsService.populateAddress(item),
birthDate: IDynamicsService.getIType(item, "birthdate"),
fonction: IDynamicsService.getIType(item, "_bpi_fonction_value"),
//company: IDynamicsService.getIType(item, "_bpi_etablissement_value"),
company: IDynamicsService.getIType(item, "_parentcustomerid_value"),
mobilephone: item.mobilephone,
telephone1: item.telephone1,
telephone2: item.telephone2,
telephone3: item.telephone3,
createdOn: IDynamicsService.getIType(item, "createdon"),
modifiedOn: IDynamicsService.getIType(item, "modifiedon"),
createdBy: IDynamicsService.getIType(item, "_createdby_value"),
modifiedBy: IDynamicsService.getIType(item, "_modifiedby_value"),
} as UserType
return user;
}
private static populatePortfolio(item: any): PortfolioItemType {
const portfolioItem: PortfolioItemType = {
eTag: item["@odata.etag"],
guid: item.bpi_suiviparid,
bpi_suiviparid: item.bpi_suiviparid,
bpi_name: item.bpi_name,
bpi_suivre_societe: IDynamicsService.getIType(item, "bpi_suivre_societe"),
createdOn: IDynamicsService.getIType(item, "createdon"),
modifiedOn: IDynamicsService.getIType(item, "modifiedon"),
statecode: IDynamicsService.getIType(item, "statecode"),
statuscode: IDynamicsService.getIType(item, "statuscode"),
user: {
} as BpiUsersType,
company: {
} as CompanyType,
} as PortfolioItemType;
return portfolioItem;
}
//================================================================================================================
public async getCompaniesList(commercialName: string, siren: string, zipCode: string, top: number = 100): Promise<void | Array<CompanyType>> {
let url: string = `accounts?$top=${String(top)}`;
let filter, filterName, filterSiren, filterZipCode: string = "";
if (commercialName.length > 0) {
filterName = `(contains(bpi_nom,'${commercialName}') or contains(bpi_nomcommercial, '${commercialName}'))`;
}
if (siren.length > 0) {
filterSiren = `contains(bpi_siren,'${siren}')`;
}
if (zipCode.length > 0) {
filterZipCode = `contains(address1_postalcode,'${zipCode}')`;
}
filter = [filterName, filterZipCode, filterSiren].filter(Boolean).join(" and ");
url = `${url}&$filter=${filter}`;
url = `${url}&$expand=bpi_LibelleNAF, contact_customer_accounts, bpi_etablissement_siege`;
console.log("IDynamicsService", "getCompaniesList", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getCompaniesList", "data", data);
let companiesList: Array<CompanyType> = [];
data.value.forEach((item: any, key: string) => {
companiesList.push(
IDynamicsService.populateCompany(item),
);
});
return companiesList;
})
/*.catch(err => {
console.log("IDynamicsService", "getCompaniesList", "Error", err);
throw err;
});*/
}
//================================================================================================================
/**
* This function is a private function - it is used to optimize how to access to a given company
*
* @param {string} filter - Le filer doit comprendre l'expression utilisée pour filtrer sur la collection
$ @example
* `bpi_siren eq 'XXXXX'`
*
* @returns {Promise<void | CompanyType>} Promise object represents an instance of CompanyType
*
*/
private async getCompanyByFilter(filter: string): Promise<void | CompanyType> {
let url: string = `accounts?$top=${String(this.getTop())}`;
url = `${url}&$filter=${filter}`;
url = `${url}&$expand=bpi_LibelleNAF, contact_customer_accounts, bpi_etablissement_siege`;
console.log("IDynamicsService", "getCompanyByFilter", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getCompanyByFilter", "data", data);
data.value.forEach((item: any, key: string) => {
return IDynamicsService.populateCompany(item)
});
Promise.reject(new E404("L'entreprise identifiée par le filtre '${filter}' n'existe pas dans la base de données"));
})
}
//================================================================================================================
/**
* This function let you get the company object by SIREN
*
* @param {string} siren - Le numéro siren de l'entrerprise
*
* @returns {Promise<void | CompanyType>} Promise object represents an instance of CompanyType
*
*/
public async getCompanyBySiren(siren: string): Promise<void | CompanyType> {
let filter: string = `bpi_siren eq '${siren}'`;
return this.getCompanyByFilter(filter);
}
//================================================================================================================
/**
* This function let you get the company object by codeCP
*
* @param {string} codeCP - Le code cp utilisé en internen par le SI
*
* @returns {Promise<void | CompanyType>} Promise object represents an instance of CompanyType
*
*/
public async getCompanyByCP(codeCP: string): Promise<void | CompanyType> {
let filter: string = `bpi_codecp eq '${codeCP}'`;
return this.getCompanyByFilter(filter);
}
//================================================================================================================
public async getMe(email: string): Promise<void | SystemUserType> {
let url: string = `systemusers?`;
url = `${url}$filter=contains(windowsliveid,'${email}')`;
console.log("IDynamicsService", "getMe", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getMe", "data", data);
let user: SystemUserType = {};
data.value.forEach((item: any, key: string) => {
user = IDynamicsService.populateSystemUser(item);
});
return user;
})
}
//================================================================================================================
/**
* This function return all the occurence of the user portfolio (active and/or inactive)
*
* @param {string} email - L'email de l'utilisateur concerné
*
* @returns {Promise<void | CompanyType>} Promise object represents an instance of CompanyType
*
*/
public async getPortfolio(email: string): Promise<void | Array<PortfolioItemType>> {
const user: SystemUserType = await this.getMe(email);
console.log("IDynamicsService", "getPortfolio", "user", user);
if (user == undefined) {
throw new Error("User (" + email + ") don't exists");
}
const systemuserid: string = user.systemuserid;
let url: string = `bpi_suivipars?`;
url = `${url}$filter=_bpi_utilisateur_value eq ${systemuserid}`;
url = `${url}&$expand=bpi_Utilisateur,bpi_Societe`;
console.log("IDynamicsService", "getPortfolio", "url", url);
return this.getService(url)
.then(data => {
let portfolioList: Array<PortfolioItemType> = [];
console.log("IDynamicsService", "getPortfolio", "data", data);
data.value.forEach((item: any, key: string) => {
const bpi_Societe = item.bpi_Societe;
if (bpi_Societe !== null) {
const portfolioItem: PortfolioItemType = IDynamicsService.populatePortfolio(item);
portfolioItem.company = IDynamicsService.populateCompany(bpi_Societe);
portfolioList.push(
portfolioItem
);
} else {
console.log("ERROR", "IDynamicsService", "getPortfolio", "item", item);
}
});
return portfolioList;
})
}
//================================================================================================================
/**
* This function return all the occurence of the user portfolio - Cette méthode va filtrer sur statecode = 0
*
* @param {string} email - L'email de l'utilisateur concerné
*
* @returns {Promise<void | CompanyType>} Promise object represents an instance of CompanyType
*
*/
public async getPortfolioOnlyActive(email: string): Promise<void | Array<PortfolioItemType>> {
return this.getPortfolio(email)
.then((portfolioList: Array<PortfolioItemType>) => {
console.log("IDynamicsService", "getPortfolio", "Before portfolioList:", portfolioList);
const portfolioListFiltered = _.filter(portfolioList,
function (item: PortfolioItemType) {
return item.statecode.value == "0";
}
);
console.log("IDynamicsService", "getPortfolio", "After portfolioListFiltered:", portfolioListFiltered);
return portfolioListFiltered;
})
}
//================================================================================================================
public getCompanySuivParList(companyId: string, top: number = 20): Promise<void | Array<BpiUsersType>> {
let url: string = `bpi_suivipars?$top=${String(top)}`;
url = `${url}&$filter=_bpi_societe_value eq ${companyId} and statuscode eq 1`;
url = `${url}&$expand=bpi_Utilisateur`;
console.log("IDynamicsService", "getCompanySuivParList", url, url);
return this.getService(url)
.then(data => {
let usersList: Array<BpiUsersType> = [];
console.log("IDynamicsService", "getCompanySuivParList", "data", data);
data.value.forEach((item: any, key: string) => {
const bpi_Utilisateur = item.bpi_Utilisateur;
usersList.push(
IDynamicsService.populateSystemUser(bpi_Utilisateur)
);
});
return usersList;
})
/*.catch(err => console.error(err));*/
}
//================================================================================================================
public getCompany(companyGuid: string, top: number = 5000): Promise<void | CompanyType> {
let url: string = `accounts(${companyGuid})?$top=${String(top)}`;
url = `${url}&$expand=contact_customer_accounts,bpi_account_bpi_etablissements_societederattachement`;
console.log("IDynamicsService", "getCompany", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getCompany", "data", data);
let company: CompanyType = IDynamicsService.populateCompany(data);
let contactsArray = data.contact_customer_accounts;
console.log("IDynamicsService", "getCompany", "contactsArray", contactsArray);
if (contactsArray){
contactsArray.forEach((item: any, key: string) => {
company.contacts.push(
IDynamicsService.populateUser(item)
);
});
}
let establishmentsArray = data.bpi_account_bpi_etablissements_societederattachement;
console.log("IDynamicsService", "getCompany", "establishmentsArray", establishmentsArray);
if (establishmentsArray) {
establishmentsArray.forEach((item: any, key: string) => {
company.establishments.push(
IDynamicsService.populateEstablishment(item)
);
});
}
return company;
})
}
//================================================================================================================
public getCompanySuivParListExtended(companyId: string, top: number = 20): Promise<void | Array<PortfolioItemType>> {
let url: string = `bpi_suivipars?$top=${String(top)}`;
url = `${url}&$filter=_bpi_societe_value eq ${companyId} and statuscode eq 1`;
url = `${url}&$expand=bpi_Utilisateur`;
console.log("IDynamicsService", "getCompanySuivParListExtended", "url", url);
return this.getService(url)
.then(data => {
let portfolioList: Array<PortfolioItemType> = [];
console.log("IDynamicsService", "getCompanySuivParListExtended", "data", data);
data.value.forEach((item: any, key: string) => {
const bpi_Societe = item.bpi_Societe;
const bpi_Utilisateur = item.bpi_Utilisateur;
if (bpi_Societe !== null) {
const portfolioItem: PortfolioItemType = IDynamicsService.populatePortfolio(item);
portfolioItem.user = IDynamicsService.populateSystemUser(bpi_Utilisateur);
portfolioItem.company = IDynamicsService.populateCompany(bpi_Societe);
portfolioList.push(
portfolioItem
);
}
});
return portfolioList;
})
/*.catch(err => console.error(err));*/
}
// ====================================================================================================================================
public getUserList(query: string, email: string, top: number = 20): Promise<void | Array<UserType>> {
let url: string = `contacts?$top=${String(top)}`;
//url = `${url}&$filter=(contains(fullname, '${query}') or contains(emailaddress1, '${query}') or contains(emailaddress2, '${query}')`;
let filter, filterQuery, filterEmail: string = "";
if (query.length > 0) {
filterQuery = `(contains(fullname, '${query}') or contains(emailaddress1, '${query}') or contains(emailaddress2, '${query}'))`;
}
if (email.length > 0) {
filterEmail = `(contains(emailaddress1, '${email}') or contains(emailaddress2, '${email}') or contains(emailaddress2, '${email}'))`;
}
filter = [filterQuery, filterEmail].filter(Boolean).join(" and ");
url = `${url}&$filter=${filter}`;
console.log("IDynamicsService", "getUserList", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getUserList", "data", data);
let userList: Array<UserType> = [];
data.value.forEach((item: any, key: string) => {
userList.push(
IDynamicsService.populateUser(item)
);
});
return userList;
})
}
//================================================================================================================
/**
* This function return all the communities of a company
*
* @param {string} companyId - Le guid de l'entreprise
* @param {ExtendedBoolean} validOnly - Valeur par défault est ExtendedBoolean.All
* @param {number} top - Valeur par défault 20 - le nombre de record max retourné par la requête
*
* @returns {Promise<void | Array<CommunityType>>} Promise object represents tje list of CommunityType
*
*/
public getCompanyCommunitiesList(companyId: string, validOnly: ExtendedBoolean = ExtendedBoolean.All, top: number = 20): Promise<void | Array<CommunityType>> {
/*
https://bpifrance.crm4.dynamics.com/api/data/v8.2/bpi_accelerateurs?$top=10
&$expand=bpi_societe_concernee
&$filter=_bpi_societe_concernee_value eq 6de0a974-878c-e611-80ee-5065f38a8a91 and bpi_statutdemande eq 922150003
$select=_bpi_typeprogrammeaccelerateurid_value, _bpi_promotionid_value, bpi_statutdemande, _bpi_demande_par_value, bpi_name, bpi_date_candidature, bpi_datedentreenew, bpi_date_sortie, bpi_date_entree, bpi_alumnicalculated
*/
let url: string = `bpi_accelerateurs?$top=${String(top)}`;
url = `${url}&$filter=_bpi_societe_concernee_value eq ${companyId} and bpi_statutdemande eq 922150003`;
url = `${url}&$expand=bpi_societe_concernee`;
console.log("IDynamicsService", "getCompanyCommunitiesList", "url", url);
return this.getService(url)
.then(data => {
console.log("IDynamicsService", "getCompanyCommunitiesList", "data", data);
let communitiesList: Array<CommunityType> = [];
data.value.forEach((item: any, key: string) => {
let community: CommunityType = {
eTag: item["@odata.etag"],
typePprogrammeAccelerateur: IDynamicsService.getIType(item, "_bpi_typeprogrammeaccelerateurid_value", "", ""),
promotion: IDynamicsService.getIType(item, "_bpi_promotionid_value", "", ""),
statutDemande: IDynamicsService.getIType(item, "bpi_statutdemande", "", ""),
demandePar: IDynamicsService.getIType(item, "_bpi_demande_par_value", "", ""),
dateEntree: IDynamicsService.getIType(item, "bpi_datedentreenew", "", ""),
dateDeSortie: IDynamicsService.getIType(item, "bpi_date_sortie", "", ""),
dateDeValidation: IDynamicsService.getIType(item, "bpi_date_entree", "", ""),
alumni: IDynamicsService.getIType(item, "bpi_alumnicalculated", "", ""),
statecode: IDynamicsService.getIType(item, "statecode", "", ""),
statuscode: IDynamicsService.getIType(item, "statuscode", "", ""),
contact: IDynamicsService.getIType(item, "_bpi_contact_societe_value", "", ""),
dateDemande: IDynamicsService.getIType(item, "bpi_sortiedemandee", "", ""),
dateCandidature: IDynamicsService.getIType(item, "bpi_date_candidature", "", ""),
directionRegionale: IDynamicsService.getIType(item, "_bpi_direction_regionale_value", "", ""),
} as CommunityType;
const now = new Date();
const dateDeSortie = new Date(community.dateDeSortie.value);
//console.log("Date Now: ", now);
//console.log("Date dateDeSortie: ", dateDeSortie, community.dateDeSortie);
if (now < dateDeSortie) {
community.isValid = true;
} else if (now >= dateDeSortie) {
community.isValid = false;
} else {
community.isValid = true;
}
switch (validOnly) {
case ExtendedBoolean.All:
communitiesList.push(
community
);
break;
case ExtendedBoolean.True:
if (community.isValid) {
communitiesList.push(
community
);
}
break
case ExtendedBoolean.False:
if (!community.isValid) {
communitiesList.push(
community
);
}
break
}
});
return communitiesList;
})
/*.catch(err => console.log("Error:", err));*/
}
//================================================================================================================
/**
* Add a company to a portfolio
*
* @param {string} companyId - Le guid de l'entreprise
* @param {string} xrmId - Le guid de l'utilisateur Dynamics
*
* @returns {Promise<Response>} Promise de type Response
*
*/
public addCompanyToPortfolio(companyId: string, xrmId: string): Promise<Response> {
/*
POST
/api/data/v8.2/bpi_suivipars
body
{
"bpi_Societe@odata.bind": "/accounts(840F7609-0BD1-E711-80EC-3863BB358F68)",
"bpi_Utilisateur@odata.bind": "/systemusers(e0e531f2-8962-e811-8105-3863bb358ff0)"
}
*/
let url: string = `${this.getEndPointLink()}bpi_suivipars`;
const jsonRequest: string = `
{
'bpi_Societe@odata.bind': '/accounts(${companyId})',
'bpi_Utilisateur@odata.bind': '/systemusers(${xrmId})'
}
`;
console.log("IDynamicsService", "addCompanyToPortfolio", "url", url);
console.log("IDynamicsService", "addCompanyToPortfolio", "jsonRequest", jsonRequest);
return fetch(url, {
headers: IDynamicsService.getHeaders(this.getAccessToken()),
method: 'POST',
body: jsonRequest,
});
}
//================================================================================================================
/**
* Remove a company from a portfolio
*
* @param {string} companyId - Le guid de l'entreprise
* @param {string} bpi_suiviparid - Le guid de l'instance de suiviPar
*
* @returns {Promise<Response>} Promise de type Response
*
*/
public removeCompanyFromPortfolio(companyId: string, bpi_suiviparid: string): Promise<Response> {
/*
PATCH
https://bpifrance-dev-v2.crm4.dynamics.com/api/data/v8.2/bpi_suivipars(0f0eb7aa-880a-e911-812c-3863bb35ff88)
{
statecode: 1
}
OU
DELETE
/api/data/v8.2/accounts(840f7609-0bd1-e711-80ec-3863bb358f68)/bpi_account_bpi_suivipar_Societe(ed1e9df1-ce09-e911-8122-3863bb35ed98)/$ref
où "ed1e9df1-ce09-e911-8122-3863bb35ed98" est bpi_suiviparid
*/
let url: string = `${this.getEndPointLink()}bpi_suivipars(${bpi_suiviparid})`;
const jsonRequest: string = `
{
statecode: 1,
statuscode: 2
}
`;
console.log("IDynamicsService", "removeCompanyFromPortfolio", "url", url);
console.log("IDynamicsService", "removeCompanyFromPortfolio", "jsonRequest", jsonRequest);
//jsonRequest = JSON.stringify(jsonRequest);
return fetch(url, {
headers: IDynamicsService.getHeaders(this.getAccessToken()),
method: 'PATCH',
body: jsonRequest,
});
}
}
export { IDynamicsService };