Initial commit

This commit is contained in:
Senad Uka
2018-06-11 11:09:35 +02:00
commit ed7df7b11f
1954 changed files with 483354 additions and 0 deletions

View 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');
}
}

View 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;
}
}

View 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>

View File

@@ -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>&nbsp;
</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>

View File

@@ -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>&nbsp;
</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');
}
?>

View File

@@ -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>

View File

@@ -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');
}