Initial commit
This commit is contained in:
34
api-wiaas/server/components/v1/contact/ContactController.php
Normal file
34
api-wiaas/server/components/v1/contact/ContactController.php
Normal file
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/**
|
||||
* Controller for contact page
|
||||
*/
|
||||
class ContactController{
|
||||
private $model;
|
||||
|
||||
function __construct(){
|
||||
$this->model = new ContactModel();
|
||||
}
|
||||
|
||||
/**
|
||||
* get contact information
|
||||
* @return json list of contacts
|
||||
*/
|
||||
public function getContactInfo(){
|
||||
echo json_encode($this->model->getContactInfo());
|
||||
}
|
||||
|
||||
/**
|
||||
* include contact template
|
||||
*/
|
||||
public function contactTemplate(){
|
||||
global $user;
|
||||
require_once('templates/ContactTemplate.php');
|
||||
}
|
||||
|
||||
/**
|
||||
* open contact page
|
||||
*/
|
||||
public function showPage(){
|
||||
require_once('ContactPage.php');
|
||||
}
|
||||
}
|
||||
257
api-wiaas/server/components/v1/contact/ContactModel.php
Normal file
257
api-wiaas/server/components/v1/contact/ContactModel.php
Normal file
@@ -0,0 +1,257 @@
|
||||
<?php
|
||||
/**
|
||||
*ata manipulation for contact page
|
||||
*/
|
||||
class ContactModel{
|
||||
|
||||
/**
|
||||
* get contact information based on user type
|
||||
* @return array list of contacts based on the user type
|
||||
*/
|
||||
public function getContactInfo(){
|
||||
global $user;
|
||||
|
||||
$userType = ucfirst($user->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;
|
||||
}
|
||||
}
|
||||
5
api-wiaas/server/components/v1/contact/ContactPage.php
Normal file
5
api-wiaas/server/components/v1/contact/ContactPage.php
Normal file
@@ -0,0 +1,5 @@
|
||||
<script src="<?php echo PATH_JS_COMPONENTS.'contact/contact-page.directive.js?v='.APPLICATION_VERSION;?>" type="text/javascript"></script>
|
||||
|
||||
<div id="contact-module" class="container-fluid col-md-12">
|
||||
<contact-page ng-controller="contactPageCtrl" ng-init="getContactInfo()"></contact-page>
|
||||
</div>
|
||||
@@ -0,0 +1,50 @@
|
||||
<div id="contact-info-{{type}}" class="col-md-12" ng-repeat="(type, users) in contactInfo">
|
||||
<h3>{{'contact.headers.' + type.toUpperCase() | translate}}</h3>
|
||||
<div class="contact-big-box col-md-4" ng-repeat="user in users">
|
||||
<div class="contact-info-layer">
|
||||
<h3 class="contact-info-title">
|
||||
<div class="info-icon glyphicon glyphicon-briefcase"></div>
|
||||
<div class="info-big-text">{{user.name}}</div>
|
||||
</h3>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-earphone"></div>
|
||||
<div class="info-text">{{user.phone}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-envelope"></div>
|
||||
<div class="info-text">{{user.mail}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box" ng-if="user.countries.length">
|
||||
<div class="info-icon glyphicon glyphicon-globe"></div>
|
||||
<div class="info-text">
|
||||
<div class="contact-info-country" ng-repeat="country in user.countries">
|
||||
{{country.name}} <span class="flag-icon flag-icon-{{country.code}}"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="user.addresses.length" class="contact-info-addresses-layer">
|
||||
<h4><div class="info-big-text">{{'contact.headers.BILLING_INFORMATIONS' | translate}}</div></h4>
|
||||
<div class="contact-info-address" ng-repeat="address in user.addresses">
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon glyphicon-home"></div>
|
||||
<div class="info-text">{{address.company}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon glyphicon-user"></div>
|
||||
<div class="info-text">{{address.firstName}} {{address.lastName}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-map-marker"></div>
|
||||
<div class="info-text">{{address.country}}, {{address.detailedAddress}}, zip {{address.zip}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,57 @@
|
||||
|
||||
<div id="contact-info-commercial-leads" class="col-md-12">
|
||||
<h3>{{'contact.headers.COMMERCIAL_LEADS' | translate}}</h3>
|
||||
<div class="contact-big-box col-md-4" ng-repeat="commercialLead in contactInfo">
|
||||
<div class="contact-info-layer">
|
||||
<h3 class="contact-info-title">
|
||||
<div class="info-icon glyphicon glyphicon-briefcase"></div>
|
||||
<div class="info-big-text">{{commercialLead.name}}</div>
|
||||
</h3>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-earphone"></div>
|
||||
<div class="info-text">{{commercialLead.phone}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-envelope"></div>
|
||||
<div class="info-text">{{commercialLead.mail}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box" ng-if="commercialLead.countries.length">
|
||||
<div class="info-icon glyphicon glyphicon-globe"></div>
|
||||
<div class="info-text">
|
||||
<div class="contact-info-country" ng-repeat="country in commercialLead.countries">
|
||||
{{country.name}} <span class="flag-icon flag-icon-{{country.code}}"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div ng-if="commercialLead.addresses.length" class="contact-info-addresses-layer">
|
||||
<h4><div class="info-big-text">{{'contact.headers.BILLING_INFORMATIONS' | translate}}</div></h4>
|
||||
<div class="contact-info-address" ng-repeat="address in commercialLead.addresses">
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon glyphicon-home"></div>
|
||||
<div class="info-text">{{address.company}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon glyphicon-user"></div>
|
||||
<div class="info-text">{{address.firstName}} {{address.lastName}}</div>
|
||||
</div>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-map-marker"></div>
|
||||
<div class="info-text">{{address.country}}, {{address.detailedAddress}}, zip {{address.zip}}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<?php
|
||||
if($user->getUserType() === USER_TYPES['BROKER']){
|
||||
require_once('ContactSupportTemplate.php');
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,16 @@
|
||||
<div id="contact-info-support" class="col-md-12">
|
||||
<h3>{{'contact.headers.SUPPORT' | translate}}</h3>
|
||||
<div class="contact-big-box col-md-4">
|
||||
<div class="contact-info-layer">
|
||||
<h3 class="contact-info-title">
|
||||
<div class="info-icon glyphicon glyphicon-cog"></div>
|
||||
<div class="info-big-text">{{'contact.headers.SUPPORT' | translate}}</div>
|
||||
</h3>
|
||||
|
||||
<div class="contact-info-box">
|
||||
<div class="info-icon glyphicon glyphicon-envelope"></div>
|
||||
<div class="info-text"><?php echo SUPPORT_MAIL_LIST[0]; ?></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,8 @@
|
||||
<?php
|
||||
if($user->getUserType() === USER_TYPES['CUSTOMER'] || $user->getUserType() === USER_TYPES['BROKER']){
|
||||
require_once('ContactCustomerAndBrokerTemplate.php');
|
||||
}
|
||||
|
||||
if($user->getUserType() === USER_TYPES['COMMERCIAL_LEAD']){
|
||||
require_once('ContactCommercialLeadTemplate.php');
|
||||
}
|
||||
Reference in New Issue
Block a user