Advertisement
Guest User

dynamics promise

a guest
Apr 25th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getUsersFromBisunessUnit(roleName, businessunitid) { //funkcja pobiera użytkowników z danej jednostki biznesowej
  2.   const fetchXml = `<fetch><entity name='systemuserroles' ><attribute name='systemuserid' /><link-entity name='role' from='roleid' to='roleid' ><filter><condition attribute='name' operator='eq' value='${roleName}' /></filter></link-entity><link-entity name='systemuser' from='systemuserid' to='systemuserid' ><filter><condition attribute='businessunitid' operator='eq' value='${businessunitid}' /></filter></link-entity></entity></fetch>`;
  3.  
  4.   return Xrm.WebApi.retrieveMultipleRecords('systemuserrolescollection', `?fetchXml=${fetchXml}`).then(
  5.     result => {
  6.       if (result.entities.length == 0)
  7.         return [] //brak użytkowników
  8.       else
  9.         return result.entities.map(el => el.systemuserid)
  10.     },
  11.     error => {
  12.       console.error(`Wystąpił błąd: ${error.message}`);
  13.       return false
  14.     }
  15.   ) //On success, returns a promise
  16. }
  17.  
  18. function addLookup(field, array = []) { //filtrowanie lookupa zadaną tablicą użytkowników
  19.   let filter;
  20.  
  21.   if (!array.length)
  22.     filter = "<filter><condition attribute='systemuserid' operator='eq' value='00000000-0000-0000-0000-000000000000' /></filter>";
  23.   else
  24.     filter = `<filter><condition attribute='systemuserid' operator='in' >${array.map(el => `<value>${el}</value>`).join("")}</condition></filter>`;
  25.  
  26.   Xrm.Page.getControl(field).addPreSearch(
  27.     () => Xrm.Page.getControl(field).addCustomFilter(filter)
  28.   );
  29. }
  30.  
  31. function lookup() {
  32.   const fetchXml = `<fetch><entity name='businessunit' ><attribute name='parentbusinessunitid' alias='parentBu' /><attribute name='businessunitid' alias='bu' /><filter><condition attribute='businessunitid' operator='eq-businessid' /></filter><link-entity name='businessunit' from='businessunitid' to='parentbusinessunitid' link-type='outer' ><attribute name='parentbusinessunitid' alias='nextParentBu' /></link-entity></entity></fetch>`;
  33.   const roleName = "Kierownik";
  34.  
  35.   Xrm.WebApi.retrieveMultipleRecords('businessunit', `?fetchXml=${fetchXml}`).then(
  36.     result => {
  37.       let [bu, parentbu, nextparentbu] = [result.entities[0].businessunitid, result.entities[0].parentBu, result.entities[0].nextParentBu];
  38.  
  39.       getUsersFromBisunessUnit(roleName, bu).then(
  40.         result => {
  41.           if (result.length != 0)
  42.             addLookup("kierownik", result)
  43.           else {
  44.             if (parentBu !== undefined) {
  45.               getUsersFromBisunessUnit(roleName, parentbu).then(
  46.                 result => {
  47.                   if (result.length != 0)
  48.                     addLookup("kierownik", result)
  49.                   else {
  50.                     if (nextparentbu !== undefined) {
  51.                       getUsersFromBisunessUnit(roleName, parentbu).then(
  52.                         result => {
  53.                           if (result.length != 0)
  54.                             addLookup("kierownik", result)
  55.                           else
  56.                             addLookup("kierownik")
  57.                         },
  58.                         error => addLookup("kierownik")
  59.                       )
  60.                     } else
  61.                       addLookup("kierownik")
  62.                   }
  63.                 },
  64.                 error => addLookup("kierownik")
  65.               )
  66.             } else
  67.               addLookup("kierownik")
  68.           }
  69.         },
  70.         error => addLookup("kierownik")
  71.       )
  72.     }
  73.   );
  74. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement