externals
This commit is contained in:
@@ -12,6 +12,8 @@ class customersController extends MY_Controller {
|
|||||||
{
|
{
|
||||||
parent::__construct();
|
parent::__construct();
|
||||||
|
|
||||||
|
if( AUTHENTICATED == FALSE )
|
||||||
|
|
||||||
$models = [];
|
$models = [];
|
||||||
$libraries = [];
|
$libraries = [];
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* Created by Pensare Software.
|
* Created by Pensare Software.
|
||||||
* Customer: Theo Weijmer
|
* External: Theo Weijmer
|
||||||
* Date: 25/12/2017
|
* Date: 25/12/2017
|
||||||
* Time: 10:11
|
* Time: 10:11
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class externalsControllerController extends MY_Controller {
|
class externalsController extends MY_Controller {
|
||||||
|
|
||||||
public function __construct()
|
public function __construct()
|
||||||
{
|
{
|
||||||
@@ -24,43 +24,43 @@ class externalsControllerController extends MY_Controller {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getAllCustomers( $archive = 'F' )
|
public function getAllExternals( $archive = 'F' )
|
||||||
{
|
{
|
||||||
$users = Customer::getAllCustomers( $archive );
|
$externals = External::getAllExternals( $archive );
|
||||||
|
|
||||||
$this->json( $users );
|
$this->json( $externals );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function saveCustomer()
|
public function saveExternal()
|
||||||
{
|
{
|
||||||
$userValidation = new CustomerValidation();
|
$externalValidation = new ExternalValidation();
|
||||||
|
|
||||||
if ( ! $userValidation->getValidationResult() )
|
if ( ! $externalValidation->getValidationResult() )
|
||||||
return $this->json( [
|
return $this->json( [
|
||||||
'success' => FALSE, 'messages' => $userValidation->getErrorMessages()] );
|
'success' => FALSE, 'messages' => $externalValidation->getErrorMessages()] );
|
||||||
|
|
||||||
$user = $this->input->post();
|
$external = $this->input->post();
|
||||||
|
|
||||||
$userID = $user['id'];
|
$externalID = $external['id'];
|
||||||
unset( $user['id'] );
|
unset( $external['id'] );
|
||||||
|
|
||||||
$userID = Customer::saveCustomer( $userID, $user );
|
$externalID = External::saveExternal( $externalID, $external );
|
||||||
|
|
||||||
$this->json( ['success' => TRUE, 'userID' => $userID] );
|
$this->json( ['success' => TRUE, 'externalID' => $externalID] );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function archiveCustomer( $userID, $status )
|
public function archiveExternal( $externalID, $status )
|
||||||
{
|
{
|
||||||
Customer::whereId( $userID )->update( ['archive' => $status] );
|
External::whereId( $externalID )->update( ['archive' => $status] );
|
||||||
}
|
}
|
||||||
|
|
||||||
public function removeCustomer( $userID )
|
public function removeExternal( $externalID )
|
||||||
{
|
{
|
||||||
$removeCustomer = new RemoveCustomer( $userID );
|
$removeExternal = new RemoveExternal( $externalID );
|
||||||
|
|
||||||
if ( $removeCustomer->getAllowDelete() === FALSE ) return $this->json( ['result' => FALSE] );
|
if ( $removeExternal->getAllowDelete() === FALSE ) return $this->json( ['result' => FALSE] );
|
||||||
|
|
||||||
Customer::removeCustomer( $userID );
|
External::removeExternal( $externalID );
|
||||||
|
|
||||||
$this->json( ['result' => TRUE] );
|
$this->json( ['result' => TRUE] );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,7 +38,14 @@ class MY_Controller extends CI_Controller {
|
|||||||
|
|
||||||
public function json( $data )
|
public function json( $data )
|
||||||
{
|
{
|
||||||
echo json_encode( $data );
|
$this->output
|
||||||
|
->set_content_type( 'application/json' )
|
||||||
|
->set_output( json_encode( $data ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
public function unAuthorized()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 27/12/2017
|
||||||
|
* Time: 17:45
|
||||||
|
*/
|
||||||
|
|
||||||
|
class RemoveExternal {
|
||||||
|
|
||||||
|
private $externalID;
|
||||||
|
private $allowDelete = TRUE;
|
||||||
|
|
||||||
|
public function __construct( $userID )
|
||||||
|
{
|
||||||
|
$this->setExternalID( $userID );
|
||||||
|
|
||||||
|
$this->handle();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAllowDelete()
|
||||||
|
{
|
||||||
|
return $this->allowDelete;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function setExternalID( $externalID )
|
||||||
|
{
|
||||||
|
$this->externalID = $externalID;
|
||||||
|
}
|
||||||
|
|
||||||
|
private function handle()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 10/07/16
|
||||||
|
* Time: 13:35
|
||||||
|
*/
|
||||||
|
|
||||||
|
require_once( APPPATH . 'libraries/validation/inputValidations/BaseValidation.php' );
|
||||||
|
|
||||||
|
class ExternalValidation extends BaseValidation {
|
||||||
|
|
||||||
|
|
||||||
|
protected $validationFields = [
|
||||||
|
'contactperson' => [
|
||||||
|
'validations' => 'required|alphaNumericSpaces',
|
||||||
|
'fieldname' => 'contact'
|
||||||
|
],
|
||||||
|
'email' => [
|
||||||
|
'validations' => 'email',
|
||||||
|
'fieldname' => 'email'
|
||||||
|
],
|
||||||
|
'rate' => [
|
||||||
|
'validations' => 'numeric',
|
||||||
|
'fieldname' => 'tarief'
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
|
||||||
|
$this->ci =& get_instance();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 15/12/2017
|
||||||
|
* Time: 19:37
|
||||||
|
*/
|
||||||
|
|
||||||
|
class External_model extends MY_Model {
|
||||||
|
|
||||||
|
protected $tablename = "externals";
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* External: Theo Weijmer
|
||||||
|
* Date: 21/12/2017
|
||||||
|
* Time: 18:04
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
class External extends BaseModel {
|
||||||
|
|
||||||
|
protected $table = "externals";
|
||||||
|
|
||||||
|
public static function getAllExternals( $archive )
|
||||||
|
{
|
||||||
|
$externals = External::orderBy( 'name' );
|
||||||
|
|
||||||
|
if ( $archive == 'F' ) $externals = $externals->whereArchive( 'F' );
|
||||||
|
|
||||||
|
$externals = $externals->get();
|
||||||
|
|
||||||
|
return $externals;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function saveExternal( $externalID, $external )
|
||||||
|
{
|
||||||
|
$external = (array)$external;
|
||||||
|
|
||||||
|
if( $externalID == 0)
|
||||||
|
{
|
||||||
|
$external = External::create($external);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$external = External::whereId($externalID)->update($external);
|
||||||
|
}
|
||||||
|
|
||||||
|
return $external['id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function removeExternal($externalID)
|
||||||
|
{
|
||||||
|
External::whereId($externalID)->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
<i class="icon fa-institution"></i>
|
<i class="icon fa-institution"></i>
|
||||||
</span>
|
</span>
|
||||||
<input type="text"
|
<input type="text"
|
||||||
placeholder="voornaam"
|
placeholder="naam"
|
||||||
class="form-control"
|
class="form-control"
|
||||||
data-bind="textInput:name,
|
data-bind="textInput:name,
|
||||||
css:{'is-invalid':nameInvalid}">
|
css:{'is-invalid':nameInvalid}">
|
||||||
|
|||||||
@@ -0,0 +1,190 @@
|
|||||||
|
<div class="modal modal-fade-in-scale-up modal-primary" tabindex="-1" id="external-modal">
|
||||||
|
<div class="modal-dialog" role="document">
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="modal-header">
|
||||||
|
<h5 class="modal-title">toevoegen / wijzigen externe</h5>
|
||||||
|
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
|
||||||
|
<span aria-hidden="true">×</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-body">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-xl-12">
|
||||||
|
<div role="form" class="form-horizontal">
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
naam
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-user"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="contactperson"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:contactperson,
|
||||||
|
css:{'is-invalid':contactpersonInvalid}">
|
||||||
|
</div>
|
||||||
|
<small class="invalid-feedback"
|
||||||
|
data-bind="style:{display: contactpersonInvalid() ? 'block' : 'none'}">
|
||||||
|
voer een naam in
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
bedrijfsnaam
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-institution"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="bedrijfsnaam"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:name">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
adres
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-address-book-o"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="adres"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:address">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
postcode
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-address-book-o"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="postcode"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:postcode">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
plaats
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-address-book-o"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="plaats"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:place">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
email
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-envelope"></i>
|
||||||
|
</span>
|
||||||
|
<input type="email"
|
||||||
|
placeholder="email"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:email,
|
||||||
|
css:{'is-invalid':emailInvalid}">
|
||||||
|
</div>
|
||||||
|
<small class="invalid-feedback"
|
||||||
|
data-bind="style:{display: emailInvalid() ? 'block' : 'none'}">
|
||||||
|
email ongeldig<span data-bind="text:emailInvalid"></span>
|
||||||
|
</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
website
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-link"></i>
|
||||||
|
</span>
|
||||||
|
<input type="email"
|
||||||
|
placeholder="email"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:website">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
kvk - nummer
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-institution"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="kvk nummer"
|
||||||
|
class="form-control"
|
||||||
|
data-bind="textInput:kvk_number">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
tarief (per uur)
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-4">
|
||||||
|
<div class="input-group input-group-icon">
|
||||||
|
<span class="input-group-addon">
|
||||||
|
<i class="icon fa-euro"></i>
|
||||||
|
</span>
|
||||||
|
<input type="text"
|
||||||
|
placeholder="tarief"
|
||||||
|
class="form-control align-right"
|
||||||
|
data-bind="textInput:rate, event:{keyup:validateNumber}">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group row">
|
||||||
|
<label class="col-xl-3 form-control-label">
|
||||||
|
opmerkingen
|
||||||
|
</label>
|
||||||
|
<div class="col-xl-9">
|
||||||
|
<textarea class="form-control" data-bind="textInput:remarks"></textarea>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="modal-footer">
|
||||||
|
<button type="button"
|
||||||
|
class="btn btn-success"
|
||||||
|
data-bind="visible:formValid(), click:saveExternal">opslaan
|
||||||
|
</button>
|
||||||
|
<button type="button" class="btn btn-warning" data-dismiss="modal">annuleren</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
<th class="table-tealish-header"> </th>
|
<th class="table-tealish-header"> </th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody data-bind="foreach:customers">
|
<tbody data-bind="foreach:externals">
|
||||||
<tr>
|
<tr>
|
||||||
<td><span data-bind="text:contactperson"</td>
|
<td><span data-bind="text:contactperson"</td>
|
||||||
<td><span data-bind="text:name"></span></td>
|
<td><span data-bind="text:name"></span></td>
|
||||||
@@ -22,25 +22,25 @@
|
|||||||
<td><span data-bind="text:email"></span></td>
|
<td><span data-bind="text:email"></span></td>
|
||||||
<td><span data-bind="text:rate"></span></td>
|
<td><span data-bind="text:rate"></span></td>
|
||||||
<td>
|
<td>
|
||||||
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editCustomer"></i>
|
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editExternal"></i>
|
||||||
<!-- ko if:archive == 'F' -->
|
<!-- ko if:archive == 'F' -->
|
||||||
<i class="icon fa-archive pointer" title="archiveer"
|
<i class="icon fa-archive pointer" title="archiveer"
|
||||||
data-bind="click:$root.archiveCustomer"></i>
|
data-bind="click:$root.archiveExternal"></i>
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
<!-- ko if:archive != 'F' -->
|
<!-- ko if:archive != 'F' -->
|
||||||
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
<i class="icon fa-minus-circle redish pointer" title="archiveer"
|
||||||
data-bind="click:$root.archiveCustomer"></i>
|
data-bind="click:$root.archiveExternal"></i>
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
<i class="icon fa-trash redish pointer" title="verwijder"
|
<i class="icon fa-trash redish pointer" title="verwijder"
|
||||||
data-bind="click:$root.removeCustomer"></i>
|
data-bind="click:$root.removeExternal"></i>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
<tfoot>
|
||||||
<tr>
|
<tr>
|
||||||
<td colspan="4" class="">
|
<td colspan="4" class="">
|
||||||
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newCustomer">
|
<button class="btn btn-primary btn-round btn-sm" data-bind="click:newExternal">
|
||||||
nieuwe opdrachtgever
|
nieuwe externe
|
||||||
</button>
|
</button>
|
||||||
</td>
|
</td>
|
||||||
<td colspan="2" class="">
|
<td colspan="2" class="">
|
||||||
|
|||||||
@@ -54,12 +54,15 @@
|
|||||||
<script src="js/lib/modules/menuModule.js"></script>
|
<script src="js/lib/modules/menuModule.js"></script>
|
||||||
<script src="js/lib/modules/beheer/usersModule.js"></script>
|
<script src="js/lib/modules/beheer/usersModule.js"></script>
|
||||||
<script src="js/lib/modules/beheer/customersModule.js"></script>
|
<script src="js/lib/modules/beheer/customersModule.js"></script>
|
||||||
|
<script src="js/lib/modules/beheer/externalsModule.js"></script>
|
||||||
<script src="js/lib/modules/modals/userModal.js"></script>
|
<script src="js/lib/modules/modals/userModal.js"></script>
|
||||||
<script src="js/lib/modules/modals/customerModal.js"></script>
|
<script src="js/lib/modules/modals/customerModal.js"></script>
|
||||||
|
<script src="js/lib/modules/modals/externalModal.js"></script>
|
||||||
|
|
||||||
|
|
||||||
<script src="js/lib/dataservices/pageDataservice.js"></script>
|
<script src="js/lib/dataservices/pageDataservice.js"></script>
|
||||||
<script src="js/lib/dataservices/userDataservice.js"></script>
|
<script src="js/lib/dataservices/userDataservice.js"></script>
|
||||||
<script src="js/lib/dataservices/customerDataservice.js"></script>
|
<script src="js/lib/dataservices/customerDataservice.js"></script>
|
||||||
|
<script src="js/lib/dataservices/externalDataservice.js"></script>
|
||||||
<script src="js/lib/dataservices/rolesDataservice.js"></script>
|
<script src="js/lib/dataservices/rolesDataservice.js"></script>
|
||||||
<script src="js/lib/helpers.js"></script>
|
<script src="js/lib/helpers.js"></script>
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
$this->load->view('modals/user_modal');
|
$this->load->view('modals/user_modal');
|
||||||
$this->load->view('modals/customer_modal');
|
$this->load->view('modals/customer_modal');
|
||||||
|
$this->load->view('modals/external_modal');
|
||||||
|
|
||||||
$this->load->view('specials/tellme_modal');
|
$this->load->view('specials/tellme_modal');
|
||||||
|
|
||||||
|
|||||||
@@ -10,6 +10,9 @@
|
|||||||
.pointer{
|
.pointer{
|
||||||
cursor:pointer;
|
cursor:pointer;
|
||||||
}
|
}
|
||||||
|
.align-right{
|
||||||
|
text-align:right;
|
||||||
|
}
|
||||||
|
|
||||||
.site-menu-sub > li{
|
.site-menu-sub > li{
|
||||||
margin-left:30px;
|
margin-left:30px;
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* External: Theo Weijmer
|
||||||
|
* Date: 25/12/2017
|
||||||
|
* Time: 09:50
|
||||||
|
*/
|
||||||
|
|
||||||
|
dbo.externalDataService = {
|
||||||
|
|
||||||
|
getAllExternals: function ( archive = 'F', callback ) {
|
||||||
|
$.getJSON( 'index.php/beheer/externalsController/getAllExternals/' + archive )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
getExternal: function ( userID, callback ) {
|
||||||
|
$.getJSON( 'index.php/beheer/externalsController/getExternal/' + userID )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
checkExternalname: function ( username, callback ) {
|
||||||
|
$.post( 'index.php/beheer/userController/checkExternalname', 'json' )
|
||||||
|
.done( function ( data ) {
|
||||||
|
console.log( data );
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
saveExternal: function ( submitDATA, callback ) {
|
||||||
|
$.post( 'index.php/beheer/externalsController/saveExternal', submitDATA, function () {
|
||||||
|
}, 'json' )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
archiveExternal: function(userID, status, callback){
|
||||||
|
$.get('index.php/beheer/externalsController/archiveExternal/' + userID + '/' + status)
|
||||||
|
.done(function(){
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
removeExternal: function ( userID, callback ) {
|
||||||
|
$.getJSON( 'index.php/beheer/externalsController/removeExternal/' + userID )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback( data );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@@ -9,5 +9,51 @@ dbo.helpers = {
|
|||||||
validateEmail: function ( email ) {
|
validateEmail: function ( email ) {
|
||||||
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
||||||
return re.test( email.toLowerCase() );
|
return re.test( email.toLowerCase() );
|
||||||
|
},
|
||||||
|
|
||||||
|
validateNumber: function ( input, point = true ) {
|
||||||
|
var validNumbers = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '.', ','];
|
||||||
|
var pointTaken = false;
|
||||||
|
var pointedString = '';
|
||||||
|
|
||||||
|
// convert to comma or point number
|
||||||
|
if ( point ) {
|
||||||
|
input = input.replace( ',', '' );
|
||||||
|
} else {
|
||||||
|
input = input.replace( '.', '' );
|
||||||
|
}
|
||||||
|
|
||||||
|
//remain only last comma or point and remove all non numbers
|
||||||
|
var reverse = dbo.helpers.reverseString( input ).toString();
|
||||||
|
for ( let character of reverse ) {
|
||||||
|
if ( character == ',' || character == '.' ) {
|
||||||
|
if ( pointTaken == false ) pointedString += character
|
||||||
|
pointTaken = true;
|
||||||
|
} else {
|
||||||
|
if ( dbo.helpers.inArray( character, validNumbers ) ) {
|
||||||
|
pointedString += character;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pointedString = dbo.helpers.reverseString( pointedString );
|
||||||
|
|
||||||
|
return pointedString;
|
||||||
|
},
|
||||||
|
|
||||||
|
inArray: function ( needle, hayStack ) {
|
||||||
|
var valid = false;
|
||||||
|
|
||||||
|
$.each( hayStack, function ( i, p ) {
|
||||||
|
if ( p == needle ) valid = true;
|
||||||
|
} );
|
||||||
|
|
||||||
|
return valid;
|
||||||
|
},
|
||||||
|
|
||||||
|
reverseString: function ( string = '' ) {
|
||||||
|
string = string.toString();
|
||||||
|
if ( string.length == 0 ) return '';
|
||||||
|
return string.split( '' ).reverse().join( '' );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,111 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* User: Theo Weijmer
|
||||||
|
* Date: 29/12/2017
|
||||||
|
* Time: 14:19
|
||||||
|
*/
|
||||||
|
|
||||||
|
dbo.externalsInit = function () {
|
||||||
|
|
||||||
|
if ( dbo.externalsModel !== undefined ) {
|
||||||
|
|
||||||
|
} else {
|
||||||
|
dbo.externalsModel = {
|
||||||
|
|
||||||
|
externals: ko.observableArray( [] ),
|
||||||
|
external : ko.observable(),
|
||||||
|
archive : ko.observable( false ),
|
||||||
|
|
||||||
|
init: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
|
||||||
|
vm.refreshExternals();
|
||||||
|
},
|
||||||
|
|
||||||
|
newExternal: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
dbo.editExternalModal.newEditExternal( false, function () {
|
||||||
|
vm.refreshExternals();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
toggleArchive: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
|
||||||
|
vm.archive( !vm.archive() );
|
||||||
|
|
||||||
|
vm.refreshExternals();
|
||||||
|
},
|
||||||
|
|
||||||
|
editExternal: function () {
|
||||||
|
var external = this;
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
|
||||||
|
dbo.editExternalModal.newEditExternal( external, function () {
|
||||||
|
vm.refreshExternals();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
archiveExternal: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
var status = self.archive == 'F' ? 'T' : 'F';
|
||||||
|
|
||||||
|
dbo.externalDataService.archiveExternal( self.id, status, function () {
|
||||||
|
vm.refreshExternals();
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
removeExternal: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
var self = this;
|
||||||
|
|
||||||
|
tellMe( {
|
||||||
|
title : 'verwijderen externe',
|
||||||
|
message : 'weet u zeker dat u de externe wilt verwijderen, dit kan niet ongedaan worden gemaakt',
|
||||||
|
notify : true,
|
||||||
|
noText : 'nee verwijder de externe niet',
|
||||||
|
yesText : 'ja verwijder de externe',
|
||||||
|
modalClass: 'modal-warning'
|
||||||
|
}, function ( response ) {
|
||||||
|
if ( response ) {
|
||||||
|
dbo.externalDataService.removeExternal( self.id, function ( data ) {
|
||||||
|
if ( data.result ) {
|
||||||
|
tellMe( {
|
||||||
|
title : 'externe verwijderd',
|
||||||
|
message : 'de externe is succesvol verwijderd',
|
||||||
|
modalClass: 'modal-success'
|
||||||
|
}, function () {
|
||||||
|
vm.refreshExternals();
|
||||||
|
} );
|
||||||
|
} else {
|
||||||
|
tellMe( {
|
||||||
|
title : 'fout bij verwijderen externe',
|
||||||
|
message : 'de externe kan niet worden verwijderd',
|
||||||
|
modalClass: 'modal-danger'
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
refreshExternals: function () {
|
||||||
|
var vm = dbo.externalsModel;
|
||||||
|
|
||||||
|
dbo.externalDataService.getAllExternals( vm.archive() ? 'T' : 'F', function ( data ) {
|
||||||
|
vm.externals( data );
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
dbo.externalsModel.init();
|
||||||
|
|
||||||
|
ko.applyBindings( dbo.externalsModel, document.getElementById( 'EXTERNALS' ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
@@ -0,0 +1,142 @@
|
|||||||
|
/**
|
||||||
|
* Created by Pensare Software.
|
||||||
|
* External: Theo Weijmer
|
||||||
|
* Date: 25/12/2017
|
||||||
|
* Time: 17:32
|
||||||
|
*/
|
||||||
|
|
||||||
|
$( function () {
|
||||||
|
dbo.editExternalModal = {
|
||||||
|
|
||||||
|
id : null,
|
||||||
|
name : ko.observable(),
|
||||||
|
address : ko.observable(),
|
||||||
|
postcode : ko.observable(),
|
||||||
|
place : ko.observable(),
|
||||||
|
contactperson: ko.observable(),
|
||||||
|
email : ko.observable(),
|
||||||
|
website : ko.observable(),
|
||||||
|
remarks : ko.observable(),
|
||||||
|
rate : ko.observable(),
|
||||||
|
kvk_number : ko.observable(),
|
||||||
|
callback : null,
|
||||||
|
|
||||||
|
init: function () {
|
||||||
|
|
||||||
|
},
|
||||||
|
|
||||||
|
newEditExternal: function ( external, callback ) {
|
||||||
|
var vm = dbo.editExternalModal;
|
||||||
|
vm.callback = typeof(callback) == 'function' ? callback : null;
|
||||||
|
|
||||||
|
vm.showExternalModal();
|
||||||
|
|
||||||
|
vm.setExternal( external );
|
||||||
|
},
|
||||||
|
|
||||||
|
saveExternal: function () {
|
||||||
|
var vm = dbo.editExternalModal;
|
||||||
|
|
||||||
|
if ( vm.formValid == false ) return;
|
||||||
|
|
||||||
|
var submitDATA = {
|
||||||
|
id : vm.id,
|
||||||
|
name : vm.name(),
|
||||||
|
address : vm.address(),
|
||||||
|
postcode : vm.postcode(),
|
||||||
|
place : vm.place(),
|
||||||
|
contactperson: vm.contactperson(),
|
||||||
|
email : vm.email(),
|
||||||
|
website : vm.website(),
|
||||||
|
remarks : vm.remarks(),
|
||||||
|
rate : vm.rate(),
|
||||||
|
kvk_number : vm.kvk_number()
|
||||||
|
}
|
||||||
|
|
||||||
|
dbo.externalDataService.saveExternal( submitDATA, function ( data ) {
|
||||||
|
if ( data.success ) {
|
||||||
|
tellMe( {
|
||||||
|
title : 'externe aangemaakt',
|
||||||
|
message : 'externe is succesvol opgeslagen',
|
||||||
|
modalClass: 'modal-success'
|
||||||
|
}, function () {
|
||||||
|
vm.hideExternalModal();
|
||||||
|
|
||||||
|
if ( typeof(vm.callback) == 'function' ) vm.callback();
|
||||||
|
} );
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var errorMessage = '<ul>';
|
||||||
|
$.each( data.messages, function ( i, p ) {
|
||||||
|
if ( p[0] ) {
|
||||||
|
errorMessage += '<li>' + i + ': ' + p[0] + '</li>';
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
errorMessage += '</ul>';
|
||||||
|
tellMe( {
|
||||||
|
title : 'fout aanmaken externe',
|
||||||
|
message : errorMessage,
|
||||||
|
modalClass: 'modal-danger'
|
||||||
|
} );
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
|
setExternal: function ( external ) {
|
||||||
|
var vm = dbo.editExternalModal;
|
||||||
|
|
||||||
|
vm.id = (external.id || 0);
|
||||||
|
vm.name( external.name || '' );
|
||||||
|
vm.address( external.address || '' );
|
||||||
|
vm.postcode( external.postcode || '' );
|
||||||
|
vm.place( external.place || '' );
|
||||||
|
vm.contactperson( external.contactperson || '' );
|
||||||
|
vm.email( external.email || '' );
|
||||||
|
vm.website( external.website || '' );
|
||||||
|
vm.remarks( external.remarks || '' );
|
||||||
|
vm.rate( external.rate || 0 );
|
||||||
|
vm.kvk_number( external.kvk_number || '' );
|
||||||
|
},
|
||||||
|
|
||||||
|
showExternalModal: function () {
|
||||||
|
$( "#external-modal" ).modal( 'show' );
|
||||||
|
},
|
||||||
|
|
||||||
|
hideExternalModal: function () {
|
||||||
|
$( "#external-modal" ).modal( 'hide' );
|
||||||
|
},
|
||||||
|
|
||||||
|
validateNumber : function ( ) {
|
||||||
|
var vm = dbo.editExternalModal;
|
||||||
|
vm.rate( dbo.helpers.validateNumber( vm.rate(), false ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
dbo.editExternalModal.init();
|
||||||
|
|
||||||
|
dbo.editExternalModal.contactpersonInvalid = ko.pureComputed( function () {
|
||||||
|
if ( !this.contactperson() ) return true;
|
||||||
|
|
||||||
|
if ( this.contactperson().length < 2 ) return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}, dbo.editExternalModal );
|
||||||
|
|
||||||
|
dbo.editExternalModal.emailInvalid = ko.pureComputed( function () {
|
||||||
|
if ( !this.email() ) return false;
|
||||||
|
|
||||||
|
return !dbo.helpers.validateEmail( this.email() );
|
||||||
|
}, dbo.editExternalModal );
|
||||||
|
|
||||||
|
dbo.editExternalModal.formValid = ko.pureComputed( function () {
|
||||||
|
if ( this.contactpersonInvalid() ) return false;
|
||||||
|
if ( this.emailInvalid() ) return false;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}, dbo.editExternalModal )
|
||||||
|
|
||||||
|
ko.applyBindings( dbo.editExternalModal, document.getElementById( 'external-modal' ) );
|
||||||
|
|
||||||
|
} );
|
||||||
Reference in New Issue
Block a user