async getAreas()

in source/console/src/views/Client.tsx [567:605]


  async getAreas(selectedSite: ISelectedData) {
    try {
      const siteId = selectedSite.id;
      let areas: IGeneralQueryData[] = [];

      /**
       * Permission is for users in Associate Group only.
       * If there's no permission for the associate user, the user gets nothing.
       */
      if (this.userGroups.length > 0 ||
        (this.userGroups.length === 0 && this.state.permission.id !== '')) {
        areas = await this.graphQlCommon.listAreas(siteId as string);

        if (this.userGroups.length === 0) {
          const permittedAreas = this.state.permission.areas;
          areas = areas.filter(area =>
            permittedAreas.map(permittedArea => {
              return permittedArea.id;
            }).includes(area.id)
          );
        }
      }

      const initialArea = this.getInitialSelectItem('Area', areas);
      if (initialArea) this.setLocalStorage('selectedArea', initialArea);

      const selectedArea = this.getLocalStorage('selectedArea');
      if (selectedArea && selectedArea.id && selectedArea.id !== '') {
        this.setState({ selectedArea });
        this.getProcessesStations(selectedArea);
      }

      areas.sort((a, b) => a.name.localeCompare(b.name));
      this.setState({ areas });
    } catch (error) {
      LOGGER.error('Error while getting areas', error);
      this.setState({ error: I18n.get('error.get.areas') });
    }
  }