No ma to sens zdecydowanie większy niż to co ja napłodziłem.
I pytanie (IMG:
style_emoticons/default/smile.gif) ostateczne (IMG:
style_emoticons/default/smile.gif)
Jak iterować jeśli istnieje wiecej niż jedna polisa o tym samym typie.
Czyli chodzi o to żeby uzyskać taką strukturę:
[common7_1] => Array
(
[name] => ? Rekomendacja Whole of Life dla PIERWSZEJ POLISY WOL
[elements] => Array
(
[multiText] => Array
(
[type] => textMultiList
[label] => Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie
[optional] => 1
[partitions] => Array
(
[0] => Array
(
[0] => Podstawowe elementy ubezpieczenia zarekomendowane dla (Chester Tester) na ubezpieczeniu z firmą Royal London to:
)
[1] => Array
(
[0] => Utraty życia, gdzie rekomendowana suma ubezpieczenia dla Chester to ?120,000. ...
)
)
)
[multiText1] => Array
(
[type] => textMultiList
[label] => Dodatkowo omówiono i zaproponowano następujące cechy i elementy:
[optional] => 1
[partitions] => Array
(
[0] => Array
(
[0] => --INDEKSAJCA DO WYBORU MANUALNIE--
)
[1] => Array
(
[0] => Ubezpieczenie zawiera opcję indeksacji....
)
)
)
)
)
[common7_2] => Array
(
[name] => ? Rekomendacja Whole of Life dla DRUGIEJ POLISY WOL
[elements] => Array
(
[multiText] => Array
(
[type] => textMultiList
[label] => Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie
[optional] => 1
[partitions] => Array
(
[0] => Array
(
[0] => Podstawowe elementy ubezpieczenia zarekomendowane dla (Chester Tester) na ubezpieczeniu z firmą Royal London to:
)
[1] => Array
(
[0] => Utraty życia, gdzie rekomendowana suma ubezpieczenia dla Chester to ?120,000. ...
)
)
)
[multiText1] => Array
(
[type] => textMultiList
[label] => Dodatkowo omówiono i zaproponowano następujące cechy i elementy:
[optional] => 1
[partitions] => Array
(
[0] => Array
(
[0] => --INDEKSAJCA DO WYBORU MANUALNIE--
)
[1] => Array
(
[0] => Ubezpieczenie zawiera opcję indeksacji....
)
)
)
)
)
Na razie, żeby to osiągnąć to kombinuję w teń deseń:
foreach ($documentData['policies'] as $type => $policieType) {
foreach ($policieType as $policy) {
if ($type == 'TerLifIns' || $type == 'MorIns') {
// throw new Exception('<pre>'.print_r($policieType,1).'</pre>');
$count = count($policieType); // throw new Exception('<pre>'.print_r($count,1).'</pre>');
$section_name = 'common4_';
for($n=0; $n<$count; $n++){
$var = $section_name . $n;
'name' => '? Rekomendacja Life Term + Mortgage' .$policy[company],
'type' => 'textMultiList',
'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[1]
),
'type' => 'textMultiList',
'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[2]
),
'type' => 'textMultiList',
'label' => 'Opis Ubezpieczyciela',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[3]
),
),
),
);
}
// throw new Exception('<pre>'.print_r($this->groups,1).'</pre>');
}
dostaje zmienne common4_X równe ilości polis danego typu...Jeszcze to muszę przetrawić..
====EDYCJA ====
Ok. Chyba ogarnąłem ... Nie wiem czy to jest prawidłowo i zgodnie ze "sztuką" ale działa ... po pierwszych testach. Jutro rano wrzucę kod i poproszę o ocenienie czy to nie jest karkołomne ... bo coś mi się wydaję że za dużo razy puszczam pętle ... No ale to już jutro.
===EDYCJA 09/04 14:45 ===
To jest ostateczna wersja kodu. Uzysłem funkcjonalność o jaką mi chodziło. Ale będę wdzięczny za krytyczne uwagi.
//Sekcja konstuowania zmiennych / słownika
//Rekomendacja Term Life oraz Mortgage Protection
private function getRecomendationTerLifInsData($documentData) {
$TerLifIns = $documentData['policies']['TerLifIns'];
$MorIns = $documentData['policies']['MorIns'];
$count = count($policies); for($n=0; $n<$count; $n++){
//Zalecam Wam / Tobie
$recomend[$n][1
][] = array('Podstawowe elementy ubezpieczenia zarekomendowane dla ('.$policies[$n]['lifeInsured'].') na ubezpieczeniu z firmą '.$policies[$n]['company'].' to: '); // $recomend[$n][1
][] = array('Utraty życia, gdzie suma ubezpieczenia jaką rekomenduje dla ('.$documentData['primary']['firstName'].' '.$documentData['primary']['lastName'].') to €'.$policies[$n]['primary']['lifeCover']); $recomend[$n][1
][] = array('Poważnej choroby, gdzie rekomendowana kwota ubezpieczenia dla ('.$documentData['primary']['firstName'].' '.$documentData['primary']['lastName'].') to €'.$policies[$n]['primary']['seriousIllness']); $recomend[$n][1
][] = array('Zaproponowany termin ubezpieczenia to '.$policies[$n]['term'].' lat. ');
//Dodatkowo omówiono i zaproponowano następujące cechy i elementy
$recomend[$n][2
][] = array($policies[$n]['DOC']['indexationdis']); $recomend[$n][2
][] = array($policies[$n]['DOC']['conversiondis']); $recomend[$n][2
][] = array('Gwarancja wysokości składki oznacza, że Wasza składka która wyniesie €'.$policies[$n]['premium'].' i pozostanie niezmienna przez cały okres trwania polisy.');
//Opis ubezpieczyciela
foreach ($policies[$n]['DOC']['companydis'] as $value) {
$recomend[$n][3
][] = array($value); }
}
}
//throw new Exception('<pre>' . print_r($recomend, 1) . '</pre>');
return $recomend;
}
Aby skrócić trochę kod wyciąłem cześć i ograniczyłem się do jednego typu polisy.
PS. Zostawiłem jeszcze wykomentowany fragment kodu, gdzie poprzez foreach iterowałem po tablicy z wszystkimi typami polis.
// Tutaj zaczyna się sekcja budowania formularza
private $groups = array();
public function __construct(DocumentData $documentData = null) {
if (!$documentData) {
$documentData = new DocumentData();
}
// pobieranie danych dodatkowych zapisanych w bazie
$dataReader = new AdditionalDataReader();
$additionalData = $dataReader->read();
$documentData = $documentData->getData();
//throw new Exception('<pre>'.print_r($documentData['policies'],1). '</pre>');
'name' => '• Wprowadzenie',
'type' => 'textMulti',
'label' => 'Wprowadzenie',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getIntroData($documentData)
),
),
),
'textMultiList' => array ( 'name' => '• Potrzeby i cele',
'type' => 'textMultiList',
'label' => 'Poszukujecie/Poszukujesz ubezpieczenia, które',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getNeedsData($documentData)
),
),
),
'name' => '• Sytuacja Osobista',
'type' => 'textMulti',
'label' => 'Osobista',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getPersonData($documentData)
),
),
),
'name' => '• Sytuacja Finansowa',
'type' => 'textMulti',
'label' => 'Finansowa',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getFinancialData($documentData, $additionalData)
),
),
),
);
// throw new Exception('<pre>'.print_r($this->group1,1). '</pre>');
// $policies = $documentData['policies']['TerLifIns'];
// foreach ($documentData['policies'] as $type => $policieType) {
// foreach ($policieType as $policy) {
// dla typu TerLifeIns
$TerLifIns = $documentData['policies']['TerLifIns'];
$MorIns = $documentData['policies']['MorIns'];
// throw new Exception('<pre>' . print_r($policies, 1) . '</pre>');
$count = count($policies); // if ($type == 'TerLifIns') {
// $count = count($policieType);
$section_name = 'common4_';
for($n=0; $n<$count; $n++){
$var = $section_name . $n;
// throw new Exception('<pre>'.print_r($count,1).'</pre><br><pre>' .print_r($var,1).'</pre>');
'name' => '• Rekomendacja: '.$policies[$n]['type']. ' z ' .$policies[$n]['company'],
'type' => 'textMultiList',
'label' => 'Na podstawie otrzymanych informacji, zalecam Wam / Tobie ubezpieczenie',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[$n][1]
),
'type' => 'textMultiList',
'label' => 'Dodatkowo omówiono i zaproponowano następujące cechy i elementy:',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[$n][2]
),
'type' => 'textMultiList',
'label' => 'Opis Ubezpieczyciela',
'optional' => true, // false -> bez checkbox
'partitions' => $this->getRecomendationTerLifInsData($documentData)[$n][3]
),
),
),
);
}
// }
// }
}
public function getGroups() {
return $this->groups;
}
Tak jak wyżej. Dziękuję za podpowiedzi czy krytyczne słowa związane z możliwym usprawnieniem.
Szczególnie dziękuje koledze @nospor oraz @gino.
Ten post edytował pela222 8.04.2021, 20:42:48