public function generateCheckDigit()
{
$sum = 0;
$string = $this->string_for_conversion . $this->salt;
$string = strrev($string);
for ($i = 0; $i < strlen($string); ++$i) {
$char = str_replace(range('A', 'Z'), range('1', '26'), $string[$i]);
$sum += array_sum(str_split($char * pow(2, ($i + 1) % 2)));
}
return $sum * 9 % 10;
}
/** * @param $event */ public function getUniqueCodeForCviEvent($event) { $eventUniqueCodeId = \UniqueCodeMapping::model()->findAllByAttributes(array('event_id' => $event->id)); $eventUniqueCode = \UniqueCodes::model()->findByPk($eventUniqueCodeId[0]->unique_code_id); $salt = isset(\Yii::app()->params['portal']['credentials']['client_id']) ? \Yii::app()->params['portal']['credentials']['client_id'] : ''; $check_digit1 = new \CheckDigitGenerator(\Yii::app()->params['institution_code'] . $eventUniqueCode->code, $salt); $check_digit2 = new \CheckDigitGenerator($eventUniqueCode->code . $event->episode->patient->dob, $salt); $finalEventUniqueCode = \Yii::app()->params['institution_code'] . $check_digit1->generateCheckDigit() . '-' . $eventUniqueCode->code . '-' . $check_digit2->generateCheckDigit(); return $finalEventUniqueCode; }