projecten

This commit is contained in:
2018-01-18 08:45:09 +01:00
parent 00246f49f7
commit 970aa53971
25 changed files with 689 additions and 285 deletions
@@ -27,9 +27,9 @@ class OffersController extends MY_Controller {
}
public function getAllOffers( $archive = 'F' )
public function getAllOffers( $projectID, $archive = 'F' )
{
$offers = Offer::getAllOffers( $archive );
$offers = Offer::getAllOffers( $projectID, $archive );
$this->json( $offers );
}
@@ -29,11 +29,30 @@ class ProjectsController extends MY_Controller {
public function getAllProjects( $archive = 'F' )
{
$projects = Project::getAllProjects( $archive );
$projects = Project::getAllProjects( FALSE, $archive );
$this->json( $projects );
}
public function getProject( $projectID )
{
$project = Project::getProject( $projectID );
$this->json( $project );
}
public function addProject()
{
$projectID = Project::createProject();
$this->json( $projectID );
}
public function addProjectEmployee( $projectID )
{
Projectemployee::createProjectEmployee( $projectID );
}
public function saveProject()
{
$projectValidation = new ProjectValidation();
@@ -8,7 +8,7 @@
class RemoveProject {
private $offerID;
private $projectID;
private $allowDelete = TRUE;
public function __construct( $projectID )
@@ -23,9 +23,9 @@ class RemoveProject {
return $this->allowDelete;
}
private function setProjectID( $customerID )
private function setProjectID( $projectID )
{
$this->offerID = $customerID;
$this->projectID = $projectID;
}
private function handle()
@@ -35,9 +35,9 @@ class RemoveProject {
private function checkForOffers()
{
$offers = Offer::whereProjectId($this->setProjectID);
$offers = Offer::whereProjectId($this->projectID);
if( $offers->count > 0 ) $this->allowDelete = FALSE;
if( $offers->count() > 0 ) $this->allowDelete = FALSE;
}
}
+3 -1
View File
@@ -26,12 +26,14 @@ class Offer extends BaseModel {
return $this->belongsTo( 'Customer' );
}
public static function getAllOffers( $archive = 'F' )
public static function getAllOffers( $projectID, $archive = 'F' )
{
$offers = Offer::orderBy( 'startdate' )
->with( 'customer' )
->with( 'project' );
if ( $projectID ) $offers = $offers->whereProjectId( $projectID );
if ( $archive == 'F' ) $offers = $offers->whereArchive( 'F' );
$offers = $offers->get();
+44 -8
View File
@@ -16,6 +16,11 @@ class Project extends BaseModel {
return $this->hasMany( 'Offer' );
}
public function projectemployees()
{
return $this->hasMany( 'Projectemployee' );
}
public function projectleader()
{
return $this->belongsTo( 'User', 'projectleader_id' );
@@ -28,7 +33,34 @@ class Project extends BaseModel {
public static function getAllProjects( $archive = 'F' )
{
$projects = Project::with( [
$projects = Project::getBaseProject();
if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' );
$projects = $projects->get();
return $projects;
}
public static function getProject( $projectID )
{
$project = Project::getBaseProject();
$project = $project->whereArchive( 'F' )
->whereId( $projectID )
->first();
return $project;
}
public static function removeProject( $projectID )
{
Project::whereId( $projectID )->delete();
}
public static function getBaseProject()
{
$project = Project::with( [
'projectleader' => function ( $q ) {
$q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" );
}] )
@@ -40,17 +72,21 @@ class Project extends BaseModel {
$q->selectRaw( '*' );
}] );
}] )
->with( [
'projectemployees.user' => function ( $q ) {
$q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" );
}] )
->with( 'customer' );
if ( $archive == 'F' ) $projects = $projects->whereArchive( 'F' );
$projects = $projects->get();
return $projects;
return $project;
}
public static function removeProject( $projectID )
public static function createProject()
{
Project::whereId($projectID)->delete();
$data = ['startdate'=> date('Y-m-d')];
$project = Project::create($data);
return $project->id;
}
}
@@ -0,0 +1,30 @@
<?php
/**
* Created by Pensare Software.
* User: Theo Weijmer
* Date: 17/01/2018
* Time: 10:25
*/
class Projectemployee extends BaseModel {
public function project()
{
return $this->belongsTo( 'Project' );
}
public function user()
{
return $this->belongsTo( 'User' );
}
public static function createProjectEmployee( $projectID )
{
$projectemployee = Projectemployee::create( [
'project_id' => $projectID
] );
return $projectemployee->id;
}
}
@@ -0,0 +1,63 @@
<div class="panel panel-bordered panel-primary panel-line panel-project">
<div class="panel-heading panel-heading-project">
<h3 class="">
project medewerkers
</h3>
</div>
<div class="panel-body panel-body-project">
<table class="table table-sm">
<thead>
<th class="table-cyanish-header">
naam
</th>
<th class="table-cyanish-header">
tarief
</th>
<th class="table-cyanish-header">
budget
</th>
<th class="table-cyanish-header">
start
</th>
<th class="table-cyanish-header">
eind
</th>
<th class="table-cyanish-header">
&nbsp;
</th>
</thead>
<tbody data-bind="foreach:projectEmployees">
<td>
<span data-bind="text:fullname"></span>
</td>
<td>
<span data-bind="text:tarif"></span>
</td>
<td>
<span data-bind="text:budget"></span> uur
</td>
<td>
<span data-bind="text:startdate"></span>
</td>
<td>
<span data-bind="text:enddate"></span>
</td>
<td>
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
<i class="icon fa-trash redish pointer" title="verwijder"
data-bind="click:$root.removeProject, css:{'whiteish':$root.selectedRowID() == id}"></i>
</td>
</tbody>
<tfoot>
<tr>
<td colspan="6">
<button class="btn btn-primary btn-round btn-sm" data-bind="click:addProjectEmployee">
nieuwe project medewerker
</button>
</td>
</tr>
</tfoot>
</table>
</div>
</div>
@@ -0,0 +1,49 @@
<div class="panel panel-bordered panel-primary panel-line panel-project">
<div class="panel-heading panel-heading-project">
<h3 class="">
offertes
</h3>
</div>
<div class="panel-body panel-body-project">
<table class="table table-sm">
<thead>
<th class="table-cyanish-header">
nummer
</th>
<th class="table-cyanish-header">
start
</th>
<th class="table-cyanish-header">
eigen omzet
</th>
<th class="table-cyanish-header">
overig omzet
</th>
<th class="table-cyanish-header">
&nbsp;
</th>
</thead>
<tbody data-bind="foreach:offers">
<tr>
<td>
<span data-bind="text:offernumber"></span>
</td>
<td>
<span data-bind="text:startdate"></span>
</td>
<td>
<span data-bind="text:own_revenue"></span>
</td>
<td>
<span data-bind="text:other_revenue"></span>
</td>
<td>
<i class="icon fa-edit pointer" title="wijzig" data-bind="click:$root.editOffer"></i>
<i class="icon fa-trash redish pointer" title="verwijder"
data-bind="click:$root.removeProject, css:{'whiteish':$root.selectedRowID() == id}"></i>
</td>
</tr>
</tbody>
</table>
</div>
</div>
+69 -36
View File
@@ -1,44 +1,77 @@
<div class="project-page" id="project-modal" data-bind="visible:showProject()">
<!-- <div class="container">-->
<!-- <div class="row">-->
<!-- <div class="col-xs-12">-->
<!-- <div class="project-page-header">-->
<!-- <h3>nieuw / wijzigen project-->
<!-- <button class="btn btn-default pull-right" data-bind="click:closeProject">x</button>-->
<!-- </h3>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="project-page" id="project-modal" data-bind="fadeVisible:showProject()">
<div class="container" style="margin-top:50px;">
<div class="row">
<div class="col-md-6">
<div class="panel panel-bordered panel-primary panel-line panel-project">
<div class="panel-heading panel-heading-project">
<h3 class="">
offertes
</h3>
</div>
<div class="panel-body panel-body-project">
<table class="table table-sm">
<thead>
<th class="table-indigoish-header">
nummer
</th>
<th class="table-indigoish-header">
start
</th>
<th class="table-indigoish-header">
eigen omzet
</th>
<th class="table-indigoish-header">
overig omzet
</th>
</thead>
</table>
<div class="col-md-3 form-inline">
<div class="form-group row">
<label class="col-xs-3 col-form-label">klant</label>
<div class="col-xs-9">
<select class="form-control form-control-sm"
data-bind="options:customers,
optionsText:'name',
optionsValue: 'id',
value:customerID,
disable:offers().length > 0,
optionsCaption:'selecteer klant',
event:{change:saveCustomerID}"></select>
</div>
</div>
</div>
<div class="col-md-4">
<div class="form-group row">
<label class="col-xs-3 col-form-label">begin project</label>
<div class="input-group input-group-icon">
<span class="input-group-addon">
<i class="icon fa-calendar"></i>
</span>
<input type="text"
placeholder="start project"
class="form-control"
readonly
data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, value:startdate">
</div>
</div>
</div>
<div class="col-md-4 form-inline">
<div class="col-md-3">
<div class="form-group row">
<label class="col-xs-3 col-form-label">eind project</label>
<div class="input-group input-group-icon">
<span class="input-group-addon">
<i class="icon fa-calendar"></i>
</span>
<input type="text"
placeholder="eind project"
class="form-control"
readonly
data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, value:enddate">
</div>
</div>
</div>
</div>
<div class="col-md-1">
<button class="btn btn-danger" data-bind="click:closeProject">
sluit
</button>
</div>
</div>
<!-- <div class="container">-->
<!-- <div class="row">-->
<!-- <div class="col-xs-12">-->
<!-- <div class="project-page-header">-->
<!-- <h3>nieuw / wijzigen project-->
<!-- <button class="btn btn-default pull-right" data-bind="click:closeProject">x</button>-->
<!-- </h3>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<div class="row" data-bind="fadeVisible:customerID()">
<div class="col-md-6">
<?php $this->load->view( 'modals/partials/_projectoffers' ); ?>
</div>
<div class="col-md-6" data-bind="fadeVisible:customerID()">
<?php $this->load->view( 'modals/partials/_projectemployees' ); ?>
</div>
</div>
</div>
+16 -7
View File
@@ -60,20 +60,29 @@
<script src="js/lib/main.js"></script>
<script src="js/lib/modules/specials/tellmeModule.js"></script>
<!-- ***********MODULES************* -->
<script src="js/lib/modules/menuModule.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/externalsModule.js"></script>
<script src="js/lib/modules/projects/offersModule.js"></script>
<script src="js/lib/modules/projects/projectsModule.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/externalModal.js"></script>
<script src="js/lib/modules/modals/offerModal.js"></script>
<script src="js/lib/modules/modals/projectModal.js"></script>
<script src="js/lib/modules/modals/commentModal.js"></script>
<!---->
<!-- ***********MODALS************* -->
<script src="js/lib/modals/userModal.js"></script>
<script src="js/lib/modals/customerModal.js"></script>
<script src="js/lib/modals/externalModal.js"></script>
<script src="js/lib/modals/offerModal.js"></script>
<script src="js/lib/modals/projectModal.js"></script>
<script src="js/lib/modals/commentModal.js"></script>
<!-- ***********MODALS************* -->
<script src="js/lib/services/offersService.js"></script>
<!-- ***********DATASERVICES************* -->
<script src="js/lib/dataservices/pageDataservice.js"></script>
<script src="js/lib/dataservices/userDataservice.js"></script>
<script src="js/lib/dataservices/customerDataservice.js"></script>