getUserType()); $method = 'getContactFor'.$userType; $method = str_replace("_", "", $method); if(method_exists ($this, $method)){ return $this->{$method}(); }else{ trigger_error("No contact for this user type!", E_USER_ERROR); } } /** * [getAddresses description] * @param String $userType the type of the user * @return Array list of addresses based on user type */ public function getAddresses($userType){ global $database, $user; $extraJoin = ""; if($userType === USER_TYPES['BROKER']){ $extraJoin .= "INNER JOIN ".TABLES['commercial_leads']." cl ON cl.idUser=a.idUser"; } if($userType === USER_TYPES['COMMERCIAL_LEAD']){ $extraJoin .= "INNER JOIN (SELECT b.idUser FROM ".TABLES['brokers']." b UNION ALL SELECT c.idUser FROM ".TABLES['customers']." c INNER JOIN ".TABLES['rel_commercial_lead_customers']." rclc ON rclc.idCustomer=c.id INNER JOIN ".TABLES['commercial_leads']." cl ON cl.id=rclc.idCommercialLead WHERE cl.idUser=".$user->getUserId()." AND rclc.isLinkEnabled=1 ) users ON users.idUser=a.idUser"; } if($userType === USER_TYPES['CUSTOMER']){ $extraJoin .= "INNER JOIN ".TABLES['commercial_leads']." cl ON cl.idUser=a.idUser INNER JOIN ".TABLES['rel_commercial_lead_customers']." rclc ON rclc.idCommercialLead=cl.id AND rclc.isLinkEnabled=1 INNER JOIN ".TABLES['customers']." cust ON cust.id=rclc.idCustomer AND cust.idUser=".$user->getUserId(); } $sql = "SELECT a.idUser, a.company, a.firstName, a.lastName, a.city, a.detailedAddress, a.zip, c.name as country FROM ".TABLES['billing_information']." a INNER JOIN ".TABLES['countries']." c ON c.id=a.idCountry $extraJoin"; $data = []; $query = $database->query($sql); while($row=$database->fetchArray($query)){ $data[$row['idUser']][] = $row; } return $data; } private function getSellCountries($userType){ global $database, $user; $extraJoin = ""; if($userType === USER_TYPES['CUSTOMER']){ $extraJoin .= "INNER JOIN ".TABLES['rel_commercial_lead_customers']." rclc ON rclc.idCommercialLead=plcl.idCommercialLead AND rclc.isLinkEnabled=1 INNER JOIN ".TABLES['customers']." cust ON cust.id=rclc.idCustomer AND cust.idUser=".$user->getUserId(); } if($userType === USER_TYPES['COMMERCIAL_LEAD']){ $sql ="SELECT DISTINCT c.name, c.code, 0 AS idUserByType FROM ".TABLES['countries']." c INNER JOIN ".TABLES['packages']." p ON p.idCountry=c.id INNER JOIN ".TABLES['price_list_broker']." plb ON plb.idPackage=p.id ORDER BY c.name"; }else{ $sql ="SELECT DISTINCT c.name, c.code, plcl.idCommercialLead AS idUserByType FROM ".TABLES['countries']." c INNER JOIN ".TABLES['packages']." p ON p.idCountry=c.id INNER JOIN ".TABLES['price_list_commercial_lead']." plcl ON plcl.idPackage=p.id $extraJoin ORDER BY c.name"; } $data = []; $query = $database->query($sql); while($row=$database->fetchArray($query)){ $data[$row['idUserByType']][] = $row; } return $data; } /** * get contatc informations for brokers * @return array list of contacts for broker */ public function getContactForBroker(){ global $database, $user; $addresses = $this->getAddresses($user->getUserType()); $countries = $this->getSellCountries($user->getUserType()); $sql = "SELECT cl.id as idCommercialLead, cl.name, cl.phone, u.mail, cl.idUser FROM ".TABLES['commercial_leads']." cl INNER JOIN ".TABLES['users']." u ON u.id=cl.idUser ORDER BY cl.name"; $data = []; $query = $database->query($sql); while($row=$database->fetchArray($query)){ $row['addresses'] = isset($addresses[$row['idUser']]) ? $addresses[$row['idUser']] : []; unset($row['idUser']); $row['countries'] = isset($countries[$row['idCommercialLead']]) ? $countries[$row['idCommercialLead']] : []; unset($row['idCommercialLead']); $data[] = $row; } return $data; } /** * get contact information for customers * @return array list of contacts for customers */ public function getContactForCustomer(){ global $database, $user; $addresses = $this->getAddresses($user->getUserType()); $countries = $this->getSellCountries($user->getUserType()); $sql = "SELECT cl.id AS idCommercialLead, cl.name, cl.phone, cl.mail, cl.idUser, cl.vatCode FROM ".TABLES['commercial_leads']." cl INNER JOIN ".TABLES['rel_commercial_lead_customers']." rclc ON rclc.idCommercialLead=cl.id AND rclc.isLinkEnabled=1 INNER JOIN ".TABLES['customers']." c ON c.id=rclc.idCustomer WHERE c.idUser=".$user->getUserId()." ORDER BY cl.name"; $data = []; $query = $database->query($sql); while($row=$database->fetchArray($query)){ $row['addresses'] = isset($addresses[$row['idUser']]) ? $addresses[$row['idUser']] : []; unset($row['idUser']); $row['countries'] = isset($countries[$row['idCommercialLead']]) ? $countries[$row['idCommercialLead']] : []; unset($row['idCommercialLead']); $data[] = $row; } return $data; } /** * get contact informations for commercial lead * @return array list of contacts for commercial lead */ public function getContactForCommerciallead(){ global $database, $user; $addresses = $this->getAddresses($user->getUserType()); $countries = $this->getSellCountries($user->getUserType()); $sql = "SELECT b.id AS idByUserType, b.name, b.phone, u.mail, b.idUser, 'brokers' AS type FROM ".TABLES['brokers']." b INNER JOIN ".TABLES['users']." u ON u.id=b.idUser UNION ALL SELECT 0 AS idByUserType, c.name, c.phone, u.mail, c.idUser, 'customers' AS type FROM ".TABLES['customers']." c INNER JOIN ".TABLES['rel_commercial_lead_customers']." rclc ON rclc.idCustomer=c.id AND rclc.isLinkEnabled=1 INNER JOIN ".TABLES['commercial_leads']." cl ON cl.id=rclc.idCommercialLead INNER JOIN ".TABLES['users']." u ON u.id=c.idUser WHERE cl.idUser=".$user->getUserId()." ORDER BY type,name"; $data = []; $query = $database->query($sql); while($row=$database->fetchArray($query)){ $row['addresses'] = isset($addresses[$row['idUser']]) ? $addresses[$row['idUser']] : []; unset($row['idUser']); if($row['idByUserType'] != 0){ $row['countries'] = isset($countries[0]) ? $countries[0] : []; } unset($row['idByUserType']); $data[$row['type']][] = $row; } return $data; } }