<commit_before><?php

/**
 * Class to process Huisbezoek in Mediwe
 *
 * @author <NAME> (CiviCooP) <<EMAIL>>
 * @date 31 May 2017
 * @license AGPL-3.0
 */
class CRM_Basis_Huisbezoek {

  private $_huisbezoekActivityTypeName = NULL;

  private $_huisbezoekActivityTypeId = NULL;

  /**
   * CRM_Basis_Klant constructor.
   */
  public function __construct() {
    $config = CRM_Basis_Config::singleton();
    $huisbezoekActivityType = $config->getHuisbezoekActivityType();
    $this->_huisbezoekActivityTypeName = $huisbezoekActivityType['name'];
    $this->_huisbezoekActivityTypeId = $huisbezoekActivityType['id'];
  }

  /**
   * Method to create a new huisbezoek
   *
   * @param $params
   *
   * @return array
   * @throws API_Exception when error from api Case Create
   */
  public function create($params) {

    // create/update huisbezoek
    /******************
     *  De link met het dossier Medische Controle wordt gelegd via de case_id
     *  De datum + uur van de controle in het veld activity_date_time
     *  Het adres van de controle in custom group "mediwe_home_visit"
     *  Het resultaat van de controle in custom group "mediwe_control_result"
     *
     *  De controlearts wordt toegekend aan de opdracht via zijn rol in de medische controle
     *  en komt hier niet voor.
     *
     *  case_id is in onze interface een verplicht veld
     *  datum_controle is ook een verplicht veld
     */

    // ensure mandatory data
    if (!isset($params['control_date'])) {
      throw new Exception('Controledatum huisbezoek ontbreekt!');
    }
    if (!isset($params['case_id'])) {
      throw new Exception('Verwijzing naar het dossier medische controle ontbreekt!');
    }

    // ensure activity type is set correctly
    $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;

    // Standard velden
    $params['subject'] = "Huisbezoek op " . substr($params['date_control'], 0, 10);
    $params['activity_date_time'] = $params['date_control'];

    if (!isset($params['id'])) {
      // exists looks for this home visit
      $params_exists = [
        'subject' => $params['subject'],
        'activity_type_id' => $params['activity_type_id'],
        'case_id' => $params['case_id'],
      ];
      $exists = $this->exists($params_exists);
      if (!$exists) {
        unset($params['id']);
        return $this->_saveHuisbezoek($params);
      }
      else {
        $params['id'] = $exists['id'];
      }
    }

    $this->update($params);
  }

  /**
   * Method to update an huisbezoek
   *
   * @param $params
   *
   * @return array
   */
  public function update($params) {

    // ensure mandatory data
    if (!isset($params['control_date'])) {
      throw new Exception('Controledatum huisbezoek ontbreekt!');
    }
    if (!isset($params['case_id'])) {
      throw new Exception('Verwijzing naar het dossier medische controle ontbreekt!');
    }

    // ensure activity type is set correctly
    $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;

    // Standard velden
    $params['subject'] = "Huisbezoek op " . substr($params['date_control'], 0, 10);
    $params['activity_date_time'] = $params['date_control'];

    try {
      return $this->_saveHuisbezoek($params);
    }
    catch (CiviCRM_API3_Exception $ex) {
      throw new API_Exception(ts('Could not create an huisbezoek in ' . __METHOD__
        . ', contact your system administrator! Error from API Case create: ' . $ex->getMessage()));
    }
  }

  /**
   * Method to check if an huisbezoek exists
   *
   * @param $params
   *
   * @return bool
   */
  public function exists($params) {
    $huisbezoek = [];

    if (isset($params['id'])) {
      return $params['id'];
    }
    else {
      try {
        $huisbezoek = civicrm_api3('Activity', 'get', $params)['values'][0];
      }
      catch (CiviCRM_API3_Exception $ex) {
        return FALSE;
      }

      return $huisbezoek;

    }
  }

  /**
   * Method to get all huisbezoekes that meet the selection criteria based on
   * incoming $params
   *
   * @param $params
   *
   * @return array
   */
  public function get($params) {
    $huisbezoeken = [];
    try {
      // ensure activity type is set correctly
      $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;
      $huisbezoeken = civicrm_api3('Activity', 'get', $params)['values'];
      if ($huisbezoeken) {
        $this->getHuisbezoekCustomFields($huisbezoeken);
      }
    }
    catch (CiviCRM_API3_Exception $ex) {
    }
    return $huisbezoeken;
  }

  /**
   * Method om custom velden aan een huisbezoek toe te voegen
   *
   * @param $medewerkers
   */
  private function getHuisbezoekCustomFields(&$huisbezoeken) {
    $config = CRM_Basis_Config::singleton();
    foreach ($huisbezoeken as $rowId => $huisbezoek) {
      if (isset($huisbezoek['id'])) {
        $extra = CRM_Basis_Utils::addSingleDaoData($config->getMedischeControleHuisbezoekCustomGroup(), $huisbezoek['id']);
        $huisbezoeken[$rowId] = array_merge($huisbezoek, $extra);
      }
    }
  }

  /**
   * Method to delete an huisbezoek with id (set to is_deleted in CiviCRM)
   *
   * @param $huisbezoekId
   *
   * @return array
   */
  public function deleteWithId($huisbezoekid) {
    $huisbezoek = [];
<commit_msg>strip custom fields aan het resultaat toegevoegd (deze was verdwenen in de merge).<commit_after><?php

/**
 * Class to process Huisbezoek in Mediwe
 *
 * @author <NAME> (CiviCooP) <<EMAIL>>
 * @date 31 May 2017
 * @license AGPL-3.0
 */
class CRM_Basis_Huisbezoek {

  private $_huisbezoekActivityTypeName = NULL;

  private $_huisbezoekActivityTypeId = NULL;

  /**
   * CRM_Basis_Klant constructor.
   */
  public function __construct() {
    $config = CRM_Basis_Config::singleton();
    $huisbezoekActivityType = $config->getHuisbezoekActivityType();
    $this->_huisbezoekActivityTypeName = $huisbezoekActivityType['name'];
    $this->_huisbezoekActivityTypeId = $huisbezoekActivityType['id'];
  }

  /**
   * Method to create a new huisbezoek
   *
   * @param $params
   *
   * @return array
   * @throws API_Exception when error from api Case Create
   */
  public function create($params) {

    // create/update huisbezoek
    /******************
     *  De link met het dossier Medische Controle wordt gelegd via de case_id
     *  De datum + uur van de controle in het veld activity_date_time
     *  Het adres van de controle in custom group "mediwe_home_visit"
     *  Het resultaat van de controle in custom group "mediwe_control_result"
     *
     *  De controlearts wordt toegekend aan de opdracht via zijn rol in de medische controle
     *  en komt hier niet voor.
     *
     *  case_id is in onze interface een verplicht veld
     *  datum_controle is ook een verplicht veld
     */

    // ensure mandatory data
    if (!isset($params['control_date'])) {
      throw new Exception('Controledatum huisbezoek ontbreekt!');
    }
    if (!isset($params['case_id'])) {
      throw new Exception('Verwijzing naar het dossier medische controle ontbreekt!');
    }

    // ensure activity type is set correctly
    $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;

    // Standard velden
    $params['subject'] = "Huisbezoek op " . substr($params['date_control'], 0, 10);
    $params['activity_date_time'] = $params['date_control'];

    if (!isset($params['id'])) {
      // exists looks for this home visit
      $params_exists = [
        'subject' => $params['subject'],
        'activity_type_id' => $params['activity_type_id'],
        'case_id' => $params['case_id'],
      ];
      $exists = $this->exists($params_exists);
      if (!$exists) {
        unset($params['id']);
        return $this->_saveHuisbezoek($params);
      }
      else {
        $params['id'] = $exists['id'];
      }
    }

    $this->update($params);
  }

  /**
   * Method to update an huisbezoek
   *
   * @param $params
   *
   * @return array
   */
  public function update($params) {

    // ensure mandatory data
    if (!isset($params['control_date'])) {
      throw new Exception('Controledatum huisbezoek ontbreekt!');
    }
    if (!isset($params['case_id'])) {
      throw new Exception('Verwijzing naar het dossier medische controle ontbreekt!');
    }

    // ensure activity type is set correctly
    $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;

    // Standard velden
    $params['subject'] = "Huisbezoek op " . substr($params['date_control'], 0, 10);
    $params['activity_date_time'] = $params['date_control'];

    try {
      return $this->_saveHuisbezoek($params);
    }
    catch (CiviCRM_API3_Exception $ex) {
      throw new API_Exception(ts('Could not create an huisbezoek in ' . __METHOD__
        . ', contact your system administrator! Error from API Case create: ' . $ex->getMessage()));
    }
  }

  /**
   * Method to check if an huisbezoek exists
   *
   * @param $params
   *
   * @return bool
   */
  public function exists($params) {
    $huisbezoek = [];

    if (isset($params['id'])) {
      return $params['id'];
    }
    else {
      try {
        $huisbezoek = civicrm_api3('Activity', 'get', $params)['values'][0];
      }
      catch (CiviCRM_API3_Exception $ex) {
        return FALSE;
      }

      return $huisbezoek;

    }
  }

  /**
   * Method to get all huisbezoekes that meet the selection criteria based on
   * incoming $params
   *
   * @param $params
   *
   * @return array
   */
  public function get($params) {
    $huisbezoeken = [];
    try {
      // ensure activity type is set correctly
      $params['activity_type_id'] = $this->_huisbezoekActivityTypeName;
      $huisbezoeken = civicrm_api3('Activity', 'get', $params)['values'];
      if ($huisbezoeken) {
        $this->getHuisbezoekCustomFields($huisbezoeken);
      }
    }
    catch (CiviCRM_API3_Exception $ex) {
    }
    return $huisbezoeken;
  }

  /**
   * Method om custom velden aan een huisbezoek toe te voegen
   *
   * @param $medewerkers
   */
  private function getHuisbezoekCustomFields(&$huisbezoeken) {
    $config = CRM_Basis_Config::singleton();
    foreach ($huisbezoeken as $rowId => $huisbezoek) {
      if (isset($huisbezoek['id'])) {
        $extra = CRM_Basis_SingleCustomData::addSingleDaoData($config->getMedischeControleHuisbezoekCustomGroup(), $huisbezoek['id']);
        $huisbezoeken[$rowId] = array_merge($huisbezoek, $extra);
        CRM_Basis_SingleCustomData::stripCustomFieldsResult($config->getMedischeControleHuisbezoekCustomGroup(),$huisbezoeken[$rowId]);
      }
    }
  }

  /**
   * Method to delete an huisbezoek with id (set to is_deleted in CiviCRM)
   *
   * @param $huisbezoekId
   *
   * @return array
   */
  public function deleteWithId($huisbezoekid) {
    $huisbezoek = [];

{'fraction_non_alphanumeric': 0.13174544101228136, 'fraction_numerical': 0.003721622627465575, 'mean_word_length': 3.016816143497758, 'pattern_counts': {'":': 0, '<': 11, '<?xml version=': 0, '>': 44, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2848575', 'n_tokens_mistral': 3643, 'n_tokens_neox': 3594, 'n_words': 813}