public function hydrate($array, $structure = 'flat') { $submission = new SubmissionEntity(); $data = array('lead' => array(), 'form' => array(), 'detail' => array()); $leadHydrator = new LeadHydrator(); $formHydrator = new FormHydrator(); $detailHydrator = new DetailHydrator(); if ($structure == 'flat') { $i = 0; foreach ($array as $field => $value) { switch ($field) { case "company": case "formname": case "ipaddress": case "referrer": case "timecreated": $data['lead'][$field] = $value; break; case "FirstName": case "LastName": case "City": case "State": case "Email": case "Phone": case "Question1": case "Answer1": case "Question2": case "Answer2": case "Question3": case "Answer3": $data['detail'][$i]['attributename'] = $field; $data['detail'][$i]['value'] = $value; break; } $i++; } } else { $_detail = $array['detail']; $array['detail'] = []; $i = 0; foreach ($_detail as $field => $value) { $array['detail'][$i]['attributename'] = $field; $array['detail'][$i]['value'] = $value; $i++; } $data = $array; } $lead = $leadHydrator->hydrate($data['lead'], new LeadEntity()); $form = $data['form'] ? $formHydrator->hydrate($data['form'], new FormEntity()) : new FormEntity(); $detail = $detailHydrator->hydrate($data['detail'], new DetailEntity()); $submission->setLead($lead); $submission->setForm($form); $submission->setDetail($detail); return $submission; }