From fb19c401fda30baa058a8ab01fb3b46e9db76e3b Mon Sep 17 00:00:00 2001 From: Theo Weijmer Date: Tue, 23 Jan 2018 08:45:35 +0100 Subject: [PATCH] projecten --- .../projects/ProjectsController.php | 98 ++++- .../libraries/projects/RemovePayment.php | 36 ++ .../projects/RemoveProjectemployee.php | 36 ++ .../libraries/projects/RemoveProjecthour.php | 36 ++ .../inputValidations/PaymentValidation.php | 36 ++ .../inputValidations/ProjectValidation.php | 14 +- .../ProjectemployeeValidation.php | 36 ++ .../ProjecthourValidation.php | 36 ++ application/models/eloquent/BaseModel.php | 4 + application/models/eloquent/Customer.php | 5 +- application/models/eloquent/External.php | 5 +- application/models/eloquent/Payment.php | 24 +- application/models/eloquent/Project.php | 25 +- .../models/eloquent/Projectemployee.php | 16 + application/models/eloquent/Projecthour.php | 41 ++ application/models/eloquent/User.php | 5 +- application/views/modals/offer_modal.php | 3 + application/views/modals/partials/_hours.php | 75 ++++ .../views/modals/partials/_payments.php | 75 ++++ .../modals/partials/_projectcomments.php | 43 ++ .../views/modals/partials/_projectcosts.php | 89 ++++ .../modals/partials/_projectemployees.php | 84 ++-- .../views/modals/partials/_projectfiles.php | 43 ++ .../views/modals/partials/_projectoffers.php | 13 +- application/views/modals/project_modal.php | 95 ++-- application/views/pages/offers_view.php | 35 +- application/views/pages/projects_view.php | 2 +- .../js/lib/dataservices/offerDataservice.js | 10 +- .../lib/dataservices/projectsDataservice.js | 61 ++- public/js/lib/helpers.js | 5 +- public/js/lib/modals/customerModal.js | 2 +- public/js/lib/modals/offerModal.js | 23 +- public/js/lib/modals/projectModal.js | 411 ++++++++++++++++-- .../js/lib/modules/projects/offersModule.js | 3 +- .../js/lib/modules/projects/projectsModule.js | 37 +- public/js/lib/services/offersService.js | 24 +- 36 files changed, 1402 insertions(+), 184 deletions(-) create mode 100644 application/libraries/projects/RemovePayment.php create mode 100644 application/libraries/projects/RemoveProjectemployee.php create mode 100644 application/libraries/projects/RemoveProjecthour.php create mode 100644 application/libraries/validation/inputValidations/PaymentValidation.php create mode 100644 application/libraries/validation/inputValidations/ProjectemployeeValidation.php create mode 100644 application/libraries/validation/inputValidations/ProjecthourValidation.php create mode 100644 application/models/eloquent/Projecthour.php create mode 100644 application/views/modals/partials/_hours.php create mode 100644 application/views/modals/partials/_payments.php create mode 100644 application/views/modals/partials/_projectcomments.php create mode 100644 application/views/modals/partials/_projectcosts.php create mode 100644 application/views/modals/partials/_projectfiles.php diff --git a/application/controllers/projects/ProjectsController.php b/application/controllers/projects/ProjectsController.php index 1bef08f..30f67b1 100644 --- a/application/controllers/projects/ProjectsController.php +++ b/application/controllers/projects/ProjectsController.php @@ -29,7 +29,7 @@ class ProjectsController extends MY_Controller { public function getAllProjects( $archive = 'F' ) { - $projects = Project::getAllProjects( FALSE, $archive ); + $projects = Project::getAllProjects( $archive ); $this->json( $projects ); } @@ -66,11 +66,74 @@ class ProjectsController extends MY_Controller { $projectID = $project['id']; unset( $project['id'] ); + $project['startdate'] = date2mysql( $project['startdate'] ); + $project['enddate'] = date2mysql( $project['enddate'] ); + $projectID = Project::saveProject( $projectID, $project ); $this->json( ['success' => TRUE, 'projectID' => $projectID] ); } + public function saveProjectemployee() + { + $projectemployeeValidation = new ProjectemployeeValidation(); + + if ( ! $projectemployeeValidation->getValidationResult() ) + return $this->json( [ + 'success' => FALSE, 'messages' => $projectemployeeValidation->getErrorMessages()] ); + + $projectemployee = $this->input->post(); + + $projectemployeeID = $projectemployee['id']; + unset( $projectemployee['id'] ); + + $projectemployee['startdate'] = date2mysql( $projectemployee['startdate'] ); + + Projectemployee::saveProjectemployee( $projectemployeeID, $projectemployee ); + + $this->json( ['success' => TRUE] ); + } + + public function savePayment() + { + $paymentValidation = new PaymentValidation(); + + if ( ! $paymentValidation->getValidationResult() ) + return $this->json( [ + 'success' => FALSE, 'messages' => $paymentValidation->getErrorMessages()] ); + + $payment = $this->input->post(); + + $paymentID = $payment['id']; + unset( $payment['id'] ); + + $payment['paymentdate'] = date2mysql( $payment['paymentdate'] ); + + $paymentID = Payment::savePayment( $paymentID, $payment ); + + $this->json( ['success' => TRUE, 'paymentID'=> $paymentID ] ); + } + + public function saveProjecthour() + { + $projecthourValidation = new ProjecthourValidation(); + + if ( ! $projecthourValidation->getValidationResult() ) + return $this->json( [ + 'success' => FALSE, 'messages' => $projecthourValidation->getErrorMessages()] ); + + $projecthour = $this->input->post(); + + $projecthourID = $projecthour['id']; + unset( $projecthour['id'] ); + + $projecthour['hourdate'] = date2mysql( $projecthour['hourdate'] ); + + $paymentID = Projecthour::saveProjecthour( $projecthourID, $projecthour ); + + $this->json( ['success' => TRUE, 'projecthourID'=> $paymentID ] ); + } + public function archiveProject( $projectID, $status ) { Project::whereId( $projectID )->update( ['archive' => $status] ); @@ -87,4 +150,37 @@ class ProjectsController extends MY_Controller { $this->json( ['result' => TRUE] ); } + public function removeProjectemployee( $projectemployeeID ) + { + $removeProjectemployee = new RemoveProjectemployee( $projectemployeeID ); + + if ( $removeProjectemployee->getAllowDelete() === FALSE ) return $this->json( ['result' => FALSE] ); + + Projectemployee::removeProjectemployee( $projectemployeeID ); + + $this->json( ['result' => TRUE] ); + } + + public function removePayment( $paymentID ) + { + $removePayment = new RemovePayment( $paymentID ); + + if ( $removePayment->getAllowDelete() === FALSE ) return $this->json( ['result' => FALSE] ); + + Payment::removePayment( $paymentID ); + + $this->json( ['result' => TRUE] ); + } + + public function removeProjecthour( $projecthourID ) + { + $removeProjecthour = new RemoveProjecthour( $projecthourID ); + + if ( $removeProjecthour->getAllowDelete() === FALSE ) return $this->json( ['result' => FALSE] ); + + Projecthour::removeProjecthour( $projecthourID ); + + $this->json( ['result' => TRUE] ); + } + } \ No newline at end of file diff --git a/application/libraries/projects/RemovePayment.php b/application/libraries/projects/RemovePayment.php new file mode 100644 index 0000000..918d742 --- /dev/null +++ b/application/libraries/projects/RemovePayment.php @@ -0,0 +1,36 @@ +setPaymentID( $paymentID ); + + $this->handle(); + } + + public function getAllowDelete() + { + return $this->allowDelete; + } + + private function setPaymentID( $paymentID ) + { + $this->paymentID = $paymentID; + } + + private function handle() + { + + } + +} \ No newline at end of file diff --git a/application/libraries/projects/RemoveProjectemployee.php b/application/libraries/projects/RemoveProjectemployee.php new file mode 100644 index 0000000..8350b68 --- /dev/null +++ b/application/libraries/projects/RemoveProjectemployee.php @@ -0,0 +1,36 @@ +setProjectemployeeID( $projectemployeeID ); + + $this->handle(); + } + + public function getAllowDelete() + { + return $this->allowDelete; + } + + private function setProjectemployeeID( $projectemployeeID ) + { + $this->projectemployeeID = $projectemployeeID; + } + + private function handle() + { + + } + +} \ No newline at end of file diff --git a/application/libraries/projects/RemoveProjecthour.php b/application/libraries/projects/RemoveProjecthour.php new file mode 100644 index 0000000..37a4f4f --- /dev/null +++ b/application/libraries/projects/RemoveProjecthour.php @@ -0,0 +1,36 @@ +setProjecthourID( $projecthourID ); + + $this->handle(); + } + + public function getAllowDelete() + { + return $this->allowDelete; + } + + private function setProjecthourID( $projecthourID ) + { + $this->projecthourID = $projecthourID; + } + + private function handle() + { + + } + +} \ No newline at end of file diff --git a/application/libraries/validation/inputValidations/PaymentValidation.php b/application/libraries/validation/inputValidations/PaymentValidation.php new file mode 100644 index 0000000..cfdec82 --- /dev/null +++ b/application/libraries/validation/inputValidations/PaymentValidation.php @@ -0,0 +1,36 @@ + [ + 'validations' => 'required|integer', + 'fieldname' => 'offerte' + ], + 'paymentdate' => [ + 'validations' => 'date', + 'fieldname' => 'betaaldatum' + ], + 'paymentamount' => [ + 'validations' => 'number', + 'fieldname' => 'bedrag' + ] + ]; + + public function __construct() + { + parent::__construct(); + + $this->ci =& get_instance(); + } +} \ No newline at end of file diff --git a/application/libraries/validation/inputValidations/ProjectValidation.php b/application/libraries/validation/inputValidations/ProjectValidation.php index 335de2a..ffd7d83 100644 --- a/application/libraries/validation/inputValidations/ProjectValidation.php +++ b/application/libraries/validation/inputValidations/ProjectValidation.php @@ -13,9 +13,17 @@ class ProjectValidation extends BaseValidation { protected $validationFields = [ - 'name' => [ - 'validations' => 'required|alphaNumericSpaces', - 'fieldname' => 'projectnaam' + 'customer_id' => [ + 'validations' => 'required|integer', + 'fieldname' => 'klant' + ], + 'startdate' => [ + 'validations' => 'required|date', + 'fieldname' => 'start project' + ], + 'enddate' => [ + 'validations' => 'date', + 'fieldname' => 'eind project' ] ]; diff --git a/application/libraries/validation/inputValidations/ProjectemployeeValidation.php b/application/libraries/validation/inputValidations/ProjectemployeeValidation.php new file mode 100644 index 0000000..d23a619 --- /dev/null +++ b/application/libraries/validation/inputValidations/ProjectemployeeValidation.php @@ -0,0 +1,36 @@ + [ + 'validations' => 'integer', + 'fieldname' => 'klant' + ], + 'startdate' => [ + 'validations' => 'date', + 'fieldname' => 'start project' + ], + 'enddate' => [ + 'validations' => 'date', + 'fieldname' => 'eind project' + ] + ]; + + public function __construct() + { + parent::__construct(); + + $this->ci =& get_instance(); + } +} \ No newline at end of file diff --git a/application/libraries/validation/inputValidations/ProjecthourValidation.php b/application/libraries/validation/inputValidations/ProjecthourValidation.php new file mode 100644 index 0000000..3d0f6bd --- /dev/null +++ b/application/libraries/validation/inputValidations/ProjecthourValidation.php @@ -0,0 +1,36 @@ + [ + 'validations' => 'required|integer', + 'fieldname' => 'projectmedewerker' + ], + 'hourdate' => [ + 'validations' => 'date', + 'fieldname' => 'datum' + ], + 'hours' => [ + 'validations' => 'number', + 'fieldname' => 'uren' + ] + ]; + + public function __construct() + { + parent::__construct(); + + $this->ci =& get_instance(); + } +} \ No newline at end of file diff --git a/application/models/eloquent/BaseModel.php b/application/models/eloquent/BaseModel.php index b6e8383..807689d 100644 --- a/application/models/eloquent/BaseModel.php +++ b/application/models/eloquent/BaseModel.php @@ -36,6 +36,8 @@ class BaseModel extends Eloquent { parent::boot(); static::creating( function ( $model ) { + static::$oldValue = ''; + if ( AUTHENTICATED ) { $user = User::find(USERID); @@ -44,6 +46,8 @@ class BaseModel extends Eloquent { } } ); static::updating( function ( $model ) { + static::$oldValue = json_encode($model->original); + if ( AUTHENTICATED ) { $user = User::find(USERID); diff --git a/application/models/eloquent/Customer.php b/application/models/eloquent/Customer.php index 71c34e8..6fbeab1 100644 --- a/application/models/eloquent/Customer.php +++ b/application/models/eloquent/Customer.php @@ -29,13 +29,14 @@ class Customer extends BaseModel { if( $customerID == 0) { $customer = Customer::create($customer); + $customerID = $customer['id']; } else { - $customer = Customer::whereId($customerID)->update($customer); + Customer::whereId($customerID)->update($customer); } - return $customer['id']; + return $customerID; } public static function removeCustomer($customerID) diff --git a/application/models/eloquent/External.php b/application/models/eloquent/External.php index ac1df50..e35b75d 100644 --- a/application/models/eloquent/External.php +++ b/application/models/eloquent/External.php @@ -29,13 +29,14 @@ class External extends BaseModel { if( $externalID == 0) { $external = External::create($external); + $externalID = $external['id']; } else { - $external = External::whereId($externalID)->update($external); + External::whereId($externalID)->update($external); } - return $external['id']; + return $externalID; } public static function removeExternal($externalID) diff --git a/application/models/eloquent/Payment.php b/application/models/eloquent/Payment.php index 6673ab3..376d9d8 100644 --- a/application/models/eloquent/Payment.php +++ b/application/models/eloquent/Payment.php @@ -8,11 +8,33 @@ class Payment extends BaseModel { - protected $table = "projects"; + protected $table = "payments"; public function offer() { return $this->belongsTo( 'Offer' ); } + public static function savePayment( $paymentID, $payment ) + { + $payment = (array) $payment; + + if ( $paymentID == 0 ) + { + $payment = Payment::create( $payment ); + $paymentID = $payment['id']; + } + else + { + Payment::whereId( $paymentID )->update( $payment ); + } + + return $paymentID; + } + + public static function removePayment( $paymentID ) + { + Payment::whereId( $paymentID )->delete(); + } + } \ No newline at end of file diff --git a/application/models/eloquent/Project.php b/application/models/eloquent/Project.php index 8ff774e..9d4a3ca 100644 --- a/application/models/eloquent/Project.php +++ b/application/models/eloquent/Project.php @@ -68,7 +68,7 @@ class Project extends BaseModel { 'offers' => function ( $q ) { $q->whereArchive( 'F' ) ->with( [ - 'payment' => function ( $q ) { + 'payments' => function ( $q ) { $q->selectRaw( '*' ); }] ); }] ) @@ -76,6 +76,7 @@ class Project extends BaseModel { 'projectemployees.user' => function ( $q ) { $q->selectRaw( "id, CONCAT(firstname, ' ', middlename, ' ', lastname) AS fullname" ); }] ) + ->with( 'projectemployees.projecthours' ) ->with( 'customer' ); return $project; @@ -83,10 +84,28 @@ class Project extends BaseModel { public static function createProject() { - $data = ['startdate'=> date('Y-m-d')]; + $data = ['startdate' => date( 'Y-m-d' )]; - $project = Project::create($data); + $project = Project::create( $data ); return $project->id; } + + public static function saveProject( $projectID, $project ) + { + $project = (array) $project; + + if ( $projectID == 0 ) + { + $project = Project::create( $project ); + $projectID = $project['id'];; + } + else + { + Project::whereId( $projectID )->update( $project ); + } + + return $projectID; + + } } \ No newline at end of file diff --git a/application/models/eloquent/Projectemployee.php b/application/models/eloquent/Projectemployee.php index e868b81..9dc23f7 100644 --- a/application/models/eloquent/Projectemployee.php +++ b/application/models/eloquent/Projectemployee.php @@ -18,6 +18,11 @@ class Projectemployee extends BaseModel { return $this->belongsTo( 'User' ); } + public function projecthours() + { + return $this->hasMany( 'Projecthour' ); + } + public static function createProjectEmployee( $projectID ) { $projectemployee = Projectemployee::create( [ @@ -27,4 +32,15 @@ class Projectemployee extends BaseModel { return $projectemployee->id; } + public static function saveProjectemployee( $projectemployeeID, $projectemployee ) + { + Projectemployee::whereId( $projectemployeeID ) + ->update( $projectemployee ); + } + + public static function removeProjectemployee( $projectemployeeID ) + { + Projectemployee::whereId( $projectemployeeID )->delete(); + } + } \ No newline at end of file diff --git a/application/models/eloquent/Projecthour.php b/application/models/eloquent/Projecthour.php new file mode 100644 index 0000000..020328f --- /dev/null +++ b/application/models/eloquent/Projecthour.php @@ -0,0 +1,41 @@ +belongsTo( 'Projectemployee' ); + } + + public static function saveProjecthour( $projecthourID, $projecthour ) + { + $projecthour = (array) $projecthour; + + if ( $projecthourID == 0 ) + { + $projecthour = Projecthour::create( $projecthour ); + $projecthourID = $projecthour['id']; + } + else + { + Projecthour::whereId( $projecthourID )->update( $projecthour ); + } + + return $projecthourID; + } + + public static function removeProjecthour( $projecthourID ) + { + Projecthour::whereId( $projecthourID )->delete(); + } + + +} \ No newline at end of file diff --git a/application/models/eloquent/User.php b/application/models/eloquent/User.php index 15325a2..7f76b77 100644 --- a/application/models/eloquent/User.php +++ b/application/models/eloquent/User.php @@ -53,13 +53,14 @@ class User extends BaseModel { if ( $userID == 0 ) { $user = User::create( $user ); + $userID = $user['id']; } else { - $user = User::whereId( $userID )->update( $user ); + User::whereId( $userID )->update( $user ); } - return $user['id']; + return $userID; } public static function removeUser( $userID ) diff --git a/application/views/modals/offer_modal.php b/application/views/modals/offer_modal.php index 5ed6c7f..461b019 100644 --- a/application/views/modals/offer_modal.php +++ b/application/views/modals/offer_modal.php @@ -54,6 +54,7 @@ +
+
diff --git a/application/views/modals/partials/_hours.php b/application/views/modals/partials/_hours.php new file mode 100644 index 0000000..cdd548e --- /dev/null +++ b/application/views/modals/partials/_hours.php @@ -0,0 +1,75 @@ +
+
+

+ projecturen +

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ medewerker + + datum + + uren + +   +
+ + + + + + + + + uur + + + + + +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_payments.php b/application/views/modals/partials/_payments.php new file mode 100644 index 0000000..f71e5d4 --- /dev/null +++ b/application/views/modals/partials/_payments.php @@ -0,0 +1,75 @@ +
+
+

+ betalingen +

+
+
+ + + + + + + + + + + + + + + + + + + + +
+ offertenummer + + datum + + bedrag + +   +
+ + + + + + + + + + + + + + +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_projectcomments.php b/application/views/modals/partials/_projectcomments.php new file mode 100644 index 0000000..806d84b --- /dev/null +++ b/application/views/modals/partials/_projectcomments.php @@ -0,0 +1,43 @@ +
+
+

+ opmerkingen +

+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ offerte opmerkingen +
+ + + + +
+ project opmerkingen +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_projectcosts.php b/application/views/modals/partials/_projectcosts.php new file mode 100644 index 0000000..8193ced --- /dev/null +++ b/application/views/modals/partials/_projectcosts.php @@ -0,0 +1,89 @@ +
+
+

+ kosten +

+
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ externe + + omschrijving + + datum + + bedrag + +   +
+ + + + + + uur + + + + + + + + + + + + + + +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_projectemployees.php b/application/views/modals/partials/_projectemployees.php index f1897e7..7b30a84 100644 --- a/application/views/modals/partials/_projectemployees.php +++ b/application/views/modals/partials/_projectemployees.php @@ -1,5 +1,4 @@ - -
+

project medewerkers @@ -23,36 +22,71 @@ eind - -   + +    - - - - - - - - uur - - - - - - - - - - - + + + + + + + + + + + + + + uur + + + + + + + + + + + + + + + - diff --git a/application/views/modals/partials/_projectfiles.php b/application/views/modals/partials/_projectfiles.php new file mode 100644 index 0000000..f22ee0d --- /dev/null +++ b/application/views/modals/partials/_projectfiles.php @@ -0,0 +1,43 @@ +
+
+

+ bestanden +

+
+
+ + + + + + + + + + + + + + + + + + + + + +
+ offerte bestanden +
+ + + + +
+ project bestanden +
+ +
+
+
\ No newline at end of file diff --git a/application/views/modals/partials/_projectoffers.php b/application/views/modals/partials/_projectoffers.php index 9092cf0..b705ffe 100644 --- a/application/views/modals/partials/_projectoffers.php +++ b/application/views/modals/partials/_projectoffers.php @@ -1,4 +1,4 @@ -
+

offertes @@ -40,10 +40,19 @@ + data-bind="click:$root.removeOffer"> + + + + + + +

\ No newline at end of file diff --git a/application/views/modals/project_modal.php b/application/views/modals/project_modal.php index 95e6893..4b5b7d3 100644 --- a/application/views/modals/project_modal.php +++ b/application/views/modals/project_modal.php @@ -1,10 +1,13 @@
-
-
-
+ +
+
+
- -
+ +
+ event:{change:saveProject}, + css:{'is-invalid': ! customerID()}"> + + selecteer een klant +
-
+
- -
+ +
+ +
+
+
+
+
+ +
+
- + +
-
-
-
- +
+
+ +
+ data-bind="datepicker:{dateFormat: 'dd-mm-yy' }, + value:enddate, + event:{change:saveProject}">
-
- -
- + @@ -73,6 +97,25 @@ load->view( 'modals/partials/_projectemployees' ); ?>
+
+
+ load->view('modals/partials/_payments'); ?> +
+
+ load->view('modals/partials/_hours'); ?> +
+
+ load->view('modals/partials/_projectcosts'); ?> +
+
+
+
+ load->view('modals/partials/_projectfiles'); ?> +
+
+ load->view('modals/partials/_projectcomments'); ?> +
+
\ No newline at end of file diff --git a/application/views/pages/offers_view.php b/application/views/pages/offers_view.php index f134b6c..199aded 100644 --- a/application/views/pages/offers_view.php +++ b/application/views/pages/offers_view.php @@ -1,6 +1,6 @@
-
+
@@ -82,38 +82,5 @@
-
-
- - -
-
    -
  • - - | - - - - - - - -
  • -
- -
- - -
- - | - - -
-
- -
\ No newline at end of file diff --git a/application/views/pages/projects_view.php b/application/views/pages/projects_view.php index 5251d65..474b165 100644 --- a/application/views/pages/projects_view.php +++ b/application/views/pages/projects_view.php @@ -38,7 +38,7 @@ - + diff --git a/public/js/lib/dataservices/offerDataservice.js b/public/js/lib/dataservices/offerDataservice.js index 53c4344..0c50415 100644 --- a/public/js/lib/dataservices/offerDataservice.js +++ b/public/js/lib/dataservices/offerDataservice.js @@ -8,7 +8,7 @@ dbo.offerDataService = { getAllOffers: function ( projectID, archive = 'F', callback ) { - $.getJSON( 'index.php/projects/offersController/getAllOffers/' + archive ) + $.getJSON( 'index.php/projects/offersController/getAllOffers/' + projectID + '/' + archive ) .done( function ( data ) { callback( data ); } ); @@ -29,15 +29,15 @@ dbo.offerDataService = { } ); }, - archiveOffer: function ( userID, status, callback ) { - $.get( 'index.php/projects/offersController/archiveOffer/' + userID + '/' + status ) + archiveOffer: function ( offerID, status, callback ) { + $.get( 'index.php/projects/offersController/archiveOffer/' + offerID + '/' + status ) .done( function () { callback(); } ); }, - removeOffer: function ( userID, callback ) { - $.getJSON( 'index.php/projects/offersController/removeOffer/' + userID ) + removeOffer: function ( offerID, callback ) { + $.getJSON( 'index.php/projects/offersController/removeOffer/' + offerID ) .done( function ( data ) { callback( data ); } ); diff --git a/public/js/lib/dataservices/projectsDataservice.js b/public/js/lib/dataservices/projectsDataservice.js index 7247354..f69a738 100644 --- a/public/js/lib/dataservices/projectsDataservice.js +++ b/public/js/lib/dataservices/projectsDataservice.js @@ -21,6 +21,13 @@ dbo.projectDataService = { } ); }, + getpayMents: function ( projectID, callback ) { + $.getJSON( 'index.php/projects/projectsController/getP ayments/' + projectID ) + .done( function ( data ) { + callback( data ); + } ); + }, + addProject: function ( callback ) { $.getJSON( 'index.php/projects/projectsController/addProject', function ( data ) { callback( data ); @@ -33,15 +40,32 @@ dbo.projectDataService = { } ); }, - addProjectEmployee: function ( projectID, callback ) { - $.getJSON( 'index.php/projects/projectsController/addProjectemployee/' + projectID, function ( data ) { - callback( data ); + addProjectemployee: function ( projectID, callback ) { + $.get( 'index.php/projects/projectsController/addProjectemployee/' + projectID, function () { + callback(); } ); }, - saveProject: function ( submitDATA, callback ) { - $.post( 'index.php/projects/projectsController/saveProject', submitDATA, function () { - }, 'json' ) + saveProject: function ( projectID, submitDATA, callback ) { + $.post( 'index.php/projects/projectsController/saveProject', submitDATA, 'json' ) + .done( function ( data ) { + callback( data ); + } ); + }, + + saveProjectemployee: function ( submitDATA ) { + $.post( 'index.php/projects/projectsController/saveProjectemployee', submitDATA ); + }, + + savePayment: function ( submitDATA, callback ) { + $.post( 'index.php/projects/projectsController/savePayment', submitDATA ) + .done( function ( data ) { + callback( data ); + } ); + }, + + saveProjecthour: function ( submitDATA, callback ) { + $.post( 'index.php/projects/projectsController/saveProjecthour', submitDATA ) .done( function ( data ) { callback( data ); } ); @@ -54,8 +78,29 @@ dbo.projectDataService = { } ); }, - removeProject: function ( userID, callback ) { - $.getJSON( 'index.php/projects/projectsController/removeProject/' + userID ) + removeProject: function ( projectID, callback ) { + $.getJSON( 'index.php/projects/projectsController/removeProject/' + projectID ) + .done( function ( data ) { + callback( data ); + } ); + }, + + removeProjectemployee: function ( projectemployeeID, callback ) { + $.getJSON( 'index.php/projects/projectsController/removeProjectemployee/' + projectemployeeID ) + .done( function ( data ) { + callback( data ); + } ); + }, + + removePayment: function ( paymentID, callback ) { + $.getJSON( 'index.php/projects/projectsController/removePayment/' + paymentID ) + .done( function ( data ) { + callback( data ); + } ); + }, + + removeProjecthour: function ( projecthourID, callback ) { + $.getJSON( 'index.php/projects/projectsController/removeProjecthour/' + projecthourID ) .done( function ( data ) { callback( data ); } ); diff --git a/public/js/lib/helpers.js b/public/js/lib/helpers.js index 4ce4e50..d435e2c 100644 --- a/public/js/lib/helpers.js +++ b/public/js/lib/helpers.js @@ -18,9 +18,9 @@ dbo.helpers = { // convert to comma or point number if ( point ) { - input = input.replace( ',', '' ); + input = input.toString().replace( ',', '' ); } else { - input = input.replace( '.', '' ); + input = input.toString().replace( '.', '' ); } //remain only last comma or point and remove all non numbers @@ -58,6 +58,7 @@ dbo.helpers = { }, mysql2date : function(date){ + if( ! date ) return null; if( date.length != 10 ) return null; var dateParts = date.split("-"); diff --git a/public/js/lib/modals/customerModal.js b/public/js/lib/modals/customerModal.js index 4e14843..3832ce8 100644 --- a/public/js/lib/modals/customerModal.js +++ b/public/js/lib/modals/customerModal.js @@ -76,7 +76,7 @@ $( function () { message : errorMessage, modalClass: 'modal-danger' } ); - } ); + } );8 }, setCustomer: function ( customer ) { diff --git a/public/js/lib/modals/offerModal.js b/public/js/lib/modals/offerModal.js index 0b536a1..5de319f 100644 --- a/public/js/lib/modals/offerModal.js +++ b/public/js/lib/modals/offerModal.js @@ -21,22 +21,21 @@ $( function () { offerleader_id : ko.observable(), own_revenue : ko.observable(), other_revenue : ko.observable(), + hasProject : ko.observable(), init: function () { - var vm = dbo.editOfferModal; - dbo.editOfferModal.refreshCustomers(); dbo.editOfferModal.refreshUsers(); }, - newEditOffer: function ( offer, callback ) { + newEditOffer: function ( offer, projectID = false, customerID = false, hasProject = false, callback ) { var vm = dbo.editOfferModal; vm.callback = typeof(callback) == 'function' ? callback : null; vm.showOfferModal(); - vm.setOffer( offer ); + vm.setOffer( offer, projectID, customerID, hasProject ); }, getCustomerProjects: function () { @@ -92,12 +91,20 @@ $( function () { } ); }, - setOffer: function ( offer ) { + setOffer: function ( offer, projectID, customerID, hasProject ) { var vm = dbo.editOfferModal; + vm.hasProject( hasProject ); + vm.id = offer.id || 0; - vm.customer_id( offer.customer_id || null ); - vm.project_id( offer.project_id || null ); + + if ( projectID ) { + vm.project_id( projectID ); + vm.customer_id( customerID ); + } else { + vm.project_id( offer.project_id || null ); + vm.customer_id( offer.customer_id || null ); + } vm.offerleader_id( offer.offerleader_id || null ); vm.offernumber( offer.offernumber || null ); vm.startdate( offer.startdate || null ); @@ -128,7 +135,7 @@ $( function () { } ); }, - addUser:function(){ + addUser: function () { var vm = dbo.editOfferModal; dbo.editUserModal.newEditUser( false, function () { vm.refreshUsers(); diff --git a/public/js/lib/modals/projectModal.js b/public/js/lib/modals/projectModal.js index 376acbf..1ff3adb 100644 --- a/public/js/lib/modals/projectModal.js +++ b/public/js/lib/modals/projectModal.js @@ -6,29 +6,120 @@ */ $( function () { + var timeout; dbo.editProjectModal = { offers : ko.observableArray( [] ), projectEmployees: ko.observableArray( [] ), customers : ko.observableArray( [] ), + users : ko.observableArray( [] ), + payments : ko.observableArray( [] ), + projecthours : ko.observableArray( [] ), + offerFiles : ko.observableArray( [] ), + offerComments : ko.observableArray( [] ), + projectFiles : ko.observableArray( [] ), + projectComments : ko.observableArray( [] ), showProject : ko.observable( false ), projectID : null, callback : null, customerID : ko.observable( null ), + projectleaderID : ko.observable(), archive : ko.observable( false ), startdate : ko.observable( null ), enddate : ko.observable( null ), + busy : false, init: function () { var vm = dbo.editProjectModal; - vm.refreshProject(); - dbo.customerDataService.getAllCustomers( 'F', function ( data ) { vm.customers( data ); + dbo.userDataService.getAllUsers( 'F', function ( data ) { + vm.users( data ); + vm.refreshProject(); + } ); } ); }, + editProjectemployee: function () { + var self = this; + var vm = dbo.editProjectModal; + $.each( vm.projectEmployees(), function ( i, p ) { + if ( p.id == self.id ) { + p.inEdit( !p.inEdit() ); + } else { + p.inEdit( false ); + } + } ); + }, + + editPayment: function () { + var self = this; + var vm = dbo.editProjectModal; + $.each( vm.payments(), function ( i, p ) { + if ( p.id == self.id ) { + p.inEdit( !p.inEdit() ); + } else { + p.inEdit( false ); + } + } ); + }, + + editProjecthour: function () { + var self = this; + var vm = dbo.editProjectModal; + $.each( vm.projecthours(), function ( i, p ) { + if ( p.id == self.id ) { + p.inEdit( !p.inEdit() ); + } else { + p.inEdit( false ); + } + } ); + }, + + newOffer: function () { + var vm = dbo.editProjectModal; + var service = dbo.offersService; + service.vm = dbo.editProjectModal; + + service.newOffer( vm.projectID, vm.customerID() ); + }, + + newPayment: function () { + var vm = dbo.editProjectModal; + + var payment = { + id : 0, + offernumber : '', + paymentdate : null, + paymentamount: 0, + inEdit : true + }; + + vm.payments.push( new vm.Payment( payment ) ); + }, + + newProjecthour: function () { + var vm = dbo.editProjectModal; + + var projecthour = { + id : 0, + projectemployee_id: null, + hourdate : null, + hours : 0, + inEdit : true + }; + + vm.projecthours.push( new vm.Projecthour( projecthour ) ); + }, + + editOffer: function () { + var service = dbo.offersService; + service.vm = dbo.editProjectModal; + + service.editOffer( this, false, false, true ); + }, + addProject: function ( callback ) { var vm = dbo.editProjectModal; @@ -43,45 +134,289 @@ $( function () { } ); }, - addProjectEmployee: function () { + addProjectemployee: function () { var vm = dbo.editProjectModal; - dbo.projectDataService.addProjectemployee( function ( projectID ) { - vm.projectID = projectID; - + dbo.projectDataService.addProjectemployee( vm.projectID, function () { vm.refreshProject(); } ); }, - saveCustomerID: function () { + editProject: function ( projectID, callback ) { + var vm = dbo.editProjectModal; + vm.callback = callback; + vm.projectID = projectID; + + vm.showProject( true ); + + vm.init(); + }, + + saveProject: function () { + var vm = dbo.editProjectModal; + + if ( vm.busy ) return; + + var submitDATA = { + id : vm.projectID, + customer_id : vm.customerID(), + projectleader_id: vm.projectleaderID(), + startdate : vm.startdate(), + enddate : vm.enddate() + } + + dbo.projectDataService.saveProject( vm.projectID, submitDATA, function ( data ) { + vm.projectID = data; + } ); + }, + + saveProjectemployee: function () { + var vm = dbo.editProjectModal; + var self = this; + + $.each( vm.users(), function ( i, p ) { + if ( self.employeeID == p.id ) self.fullname( p.fullname ); + } ); + + if ( timeout ) { + clearTimeout( timeout ); + timeout = null; + } + timeout = setTimeout( function () { + var submitDATA = { + id : self.id, + user_id : self.employeeID(), + tarif : self.tarif() ? self.tarif().toString().replace( ',', '.' ) : 0, + budget : self.budget() ? self.budget().toString().replace( ',', '.' ) : 0, + startdate: self.startdate() + } + + dbo.projectDataService.saveProjectemployee( submitDATA ); + }, 400 ); + }, + + savePayment: function () { + var self = this; + + if ( !self.offer_id() ) return; + + var submitDATA = { + id : self.id, + offer_id : self.offer_id(), + paymentdate : self.paymentdate(), + paymentamount: self.paymentamount() + }; + + dbo.projectDataService.savePayment( submitDATA, function ( data ) { + if ( data.success ) self.id = data.paymentID; + } ); + }, + + saveProjecthour: function () { + var self = this; + + if ( !self.projectemployee_id() ) return; + + var submitDATA = { + id : self.id, + projectemployee_id: self.projectemployee_id(), + hourdate : self.hourdate(), + hours : self.hours() + }; + + dbo.projectDataService.saveProjecthour( submitDATA, function ( data ) { + console.log( data ); + if ( data.success ) self.id = data.projecthourID; + } ); + }, + + removeProjectemployee: function () { + var vm = dbo.editProjectModal; + var self = this; + + tellMe( { + title : 'verwijderen projectmedewerker', + message : 'weet u zeker dat u de projectmedewerker wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder de projectmedewerker niet', + yesText : 'ja verwijder de projectmedewerker', + modalClass: 'modal-warning' + }, function ( response ) { + console.log( response ); + if ( response ) { + dbo.projectDataService.removeProjectemployee( self.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'projectmedewerker verwijderd', + message : 'de projectmedewerker is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + vm.refreshProject(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen projectmedewerker', + message : 'de projectmedewerker kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); + }, + + removeOffer: function () { + var vm = dbo.editProjectModal; + var self = this; + + tellMe( { + title : 'verwijderen offerte', + message : 'weet u zeker dat u de offerte wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder de offerte niet', + yesText : 'ja verwijder de offerte', + modalClass: 'modal-warning' + }, function ( response ) { + console.log( response ); + if ( response ) { + dbo.offerDataService.removeOffer( self.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'offerte verwijderd', + message : 'de offerte is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + vm.refreshProject(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen offerte', + message : 'de offerte kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); + }, + + removePayment: function () { + var vm = dbo.editProjectModal; + var self = this; + + tellMe( { + title : 'verwijderen betaling', + message : 'weet u zeker dat u de betaling wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder de betaling niet', + yesText : 'ja verwijder de betaling', + modalClass: 'modal-warning' + }, function ( response ) { + console.log( response ); + if ( response ) { + dbo.projectDataService.removePayment( self.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'betaling verwijderd', + message : 'de betaling is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + vm.refreshProject(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen betaling', + message : 'de betaling kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); + }, + + removeProjecthour: function () { + var vm = dbo.editProjectModal; + var self = this; + + tellMe( { + title : 'verwijderen projectuur', + message : 'weet u zeker dat u de projectuur wilt verwijderen, dit kan niet ongedaan worden gemaakt', + notify : true, + noText : 'nee verwijder de projectuur niet', + yesText : 'ja verwijder de projectuur', + modalClass: 'modal-warning' + }, function ( response ) { + console.log( response ); + if ( response ) { + dbo.projectDataService.removeProjecthour( self.id, function ( data ) { + if ( data.result ) { + tellMe( { + title : 'projectuur verwijderd', + message : 'de projectuur is succesvol verwijderd', + modalClass: 'modal-success' + }, function () { + vm.refreshProject(); + } ); + } else { + tellMe( { + title : 'fout bij verwijderen projectuur', + message : 'de projectuur kan niet worden verwijderd', + modalClass: 'modal-danger' + } ); + } + } ); + } + } ); }, closeProject: function () { var vm = dbo.editProjectModal; vm.showProject( false ); + + vm.callback(); + }, + + validateNumber: function ( field ) { + this[field]( dbo.helpers.validateNumber( this[field](), false ) ); }, refreshProject: function () { var vm = dbo.editProjectModal; + vm.busy = true; dbo.projectDataService.getProject( vm.projectID, function ( data ) { - vm.Project( data ); - } ); - }, + vm.id = data.id + vm.projectleaderID( data.projectleader_id ); + vm.customerID( data.customer_id ); + vm.startdate( dbo.helpers.mysql2date( data.startdate ) ); + vm.enddate( dbo.helpers.mysql2date( data.enddate ) ); - Project: function ( data ) { - var vm = dbo.editProjectModal; - var self = this; + vm.projectEmployees.removeAll(); + vm.projecthours.removeAll(); + $.each( data.projectemployees, function ( i, p ) { + vm.projectEmployees.push( new vm.Projectemployee( p ) ); + } ); - vm.id = data.id; - vm.customerID( data.customer_id ); - vm.startdate( data.startdate ); - vm.enddate( data.enddate ); + $.each( data.projectemployees, function ( i, p ) { + var fullname = p.user ? p.user.fullname : '#NB'; + $.each( p.projecthours, function ( b, q ) { + vm.projecthours.push( new vm.Projecthour( q, fullname ) ); + } ); + } ); - self.projectEmployees = ko.observableArray( [] ); - $.each( data.employees, function ( i, p ) { - self.projectEmployees.push( new vm.Projectemployee( p ) ); + vm.offers.removeAll(); + vm.payments.removeAll(); + $.each( data.offers, function ( i, p ) { + vm.offers.push( new dbo.offersService.Offer( p ) ); + + $.each( p.payments, function ( z, q ) { + vm.payments.push( new vm.Payment( q, p ) ); + } ); + } ); + + vm.busy = false; } ); }, @@ -89,12 +424,36 @@ $( function () { var self = this; self.id = data.id; - self.employee_id = data.employee_id; - self.fullname = data.user ? data.user.fullname : '#NB'; - self.tarif = data.tarif; - self.budget = data.budget; - self.startdate = dbo.helpers.mysql2date( data.startdate ); - self.enddate = dbo.helpers.mysql2date( data.enddate ); + self.employeeID = ko.observable( data.user_id ); + self.fullname = ko.observable( data.user ? data.user.fullname : '#NB' ); + self.tarif = ko.observable( data.tarif ? data.tarif.toString().replace( '.', ',' ) : 0 ); + self.budget = ko.observable( data.budget ? data.budget.toString().replace( '.', ',' ) : 0 ); + self.startdate = ko.observable( dbo.helpers.mysql2date( data.startdate ) ); + self.inEdit = ko.observable( sessionStorage.editEmployee == data.id ); + }, + + Payment: function ( data, offer = false ) { + var inEdit = sessionStorage.editPayment == data.id; + if ( !inEdit ) inEdit = data.inEdit || false; + + this.id = data.id; + this.offer_id = ko.observable( data.offer_id ); + this.offernumber = ko.observable( offer ? offer.offernumber : null ); + this.paymentdate = ko.observable( dbo.helpers.mysql2date( data.paymentdate ) ); + this.paymentamount = ko.observable( data.paymentamount ); + this.inEdit = ko.observable( inEdit ); + }, + + Projecthour: function ( data, fullname ) { + var inEdit = sessionStorage.editPayment == data.id; + if ( !inEdit ) inEdit = data.inEdit || false; + + this.id = data.id; + this.fullname = ko.observable( fullname ); + this.projectemployee_id = ko.observable( data.projectemployee_id ); + this.hourdate = ko.observable( dbo.helpers.mysql2date( data.hourdate ) ); + this.hours = ko.observable( data.hours ); + this.inEdit = ko.observable( inEdit ); } }; diff --git a/public/js/lib/modules/projects/offersModule.js b/public/js/lib/modules/projects/offersModule.js index 01c4490..ecf4e30 100644 --- a/public/js/lib/modules/projects/offersModule.js +++ b/public/js/lib/modules/projects/offersModule.js @@ -20,6 +20,7 @@ dbo.offersInit = function () { comments : ko.observableArray( [] ), documents : ko.observableArray( [] ), selectedRowID: ko.observable(), + projectID : 0, init: function () { var service = dbo.offersService; @@ -46,7 +47,7 @@ dbo.offersInit = function () { var service = dbo.offersService; service.vm = dbo.offersModel; - service.editOffer(); + service.editOffer( this ); }, archiveOffer: function () { diff --git a/public/js/lib/modules/projects/projectsModule.js b/public/js/lib/modules/projects/projectsModule.js index ee8ff32..0350699 100644 --- a/public/js/lib/modules/projects/projectsModule.js +++ b/public/js/lib/modules/projects/projectsModule.js @@ -17,6 +17,7 @@ dbo.projectsInit = function () { project : ko.observable(), archive : ko.observable( false ), selectedRowID: ko.observable(), + busy : false, init: function () { var vm = dbo.projectsModel; @@ -26,7 +27,7 @@ dbo.projectsInit = function () { newProject: function () { var vm = dbo.projectsModel; - dbo.editProjectModal.addProject( false, function () { + dbo.editProjectModal.addProject( function () { vm.refreshProjects(); } ); }, @@ -43,7 +44,7 @@ dbo.projectsInit = function () { var project = this; var vm = dbo.projectsModel; - dbo.editProjectModal.newEditProject( project, function () { + dbo.editProjectModal.editProject( project.id, function () { vm.refreshProjects(); } ); }, @@ -125,41 +126,41 @@ dbo.projectsInit = function () { self.totalOwnrevenue = 0; self.totalOtherrevenue = 0; - self.revenues = ko.observableArray([]); - $.each(data.offers, function(i,p){ - if( p.accepteddate ){ + self.revenues = ko.observableArray( [] ); + $.each( data.offers, function ( i, p ) { + if ( p.accepteddate ) { self.totalOwnrevenue += p.totalOwnrevenue; self.totalOtherrevenue += p.totalOtherrevenue; } - self.revenues.push( new vm.Revenue(p)); - }); + self.revenues.push( new vm.Revenue( p ) ); + } ); }, - Revenue : function(data){ + Revenue: function ( data ) { var vm = dbo.projectsModel; var self = this; self.id = data.id; self.offernumber = data.offernumber; - self.startdate = dbo.helpers.mysql2date(self.startdate); - self.accepteddate = dbo.helpers.mysql2date(self.accepteddate); - self.rejectdate = dbo.helpers.mysql2date(self.rejectdate); + self.startdate = dbo.helpers.mysql2date( self.startdate ); + self.accepteddate = dbo.helpers.mysql2date( self.accepteddate ); + self.rejectdate = dbo.helpers.mysql2date( self.rejectdate ); self.own_revenue = data.own_revenue; self.other_revenue = data.other_revenue; self.acceptance_chance = data.acceptance_chance; self.payed = 0; - self.payments = ko.observableArray([]); - $.each(data.payments, function(i, p){ - self.payed =+ p.paymentamount; + self.payments = ko.observableArray( [] ); + $.each( data.payments, function ( i, p ) { + self.payed = +p.paymentamount; - self.payments.push( new vm.Payment(p)); - }); + self.payments.push( new vm.Payment( p ) ); + } ); }, - Payment : function(data){ + Payment: function ( data ) { self.id = data.id; - self.paymentdate = dbo.helpers.mysql2date(self.paymentdate); + self.paymentdate = dbo.helpers.mysql2date( self.paymentdate ); self.paymentamount = data.paymentamount; } }; diff --git a/public/js/lib/services/offersService.js b/public/js/lib/services/offersService.js index d2f446f..137231b 100644 --- a/public/js/lib/services/offersService.js +++ b/public/js/lib/services/offersService.js @@ -10,16 +10,10 @@ dbo.offersService = { vm: null, - init: function () { + newOffer: function (projectID=false, customerID=false) { var service = dbo.offersService; - service.refreshOffers(); - }, - - newOffer: function () { - var service = dbo.offersService; - - dbo.editOfferModal.newEditOffer( false, function () { + dbo.editOfferModal.newEditOffer( false, projectID, customerID, function () { service.refreshOffers(); } ); }, @@ -33,10 +27,10 @@ dbo.offersService = { service.refreshOffers(); }, - editOffer: function ( that ) { + editOffer: function ( that, projectID=false, custormerID=false, hasProject=false ) { var offer = that; - dbo.editOfferModal.newEditOffer( offer, function () { + dbo.editOfferModal.newEditOffer( offer, projectID, custormerID, hasProject, function () { dbo.offersService.refreshOffers(); } ); }, @@ -84,21 +78,23 @@ dbo.offersService = { } ); }, - refreshOffers: function (projectID = false) { + refreshOffers: function () { var vm = dbo.offersService.vm; var self = dbo.offersService; - dbo.offerDataService.getAllOffers( projectID, vm.archive() ? 'T' : 'F', function ( data ) { + dbo.offerDataService.getAllOffers( vm.projectID , vm.archive() ? 'T' : 'F', function ( data ) { vm.offers.removeAll(); $.each( data, function ( i, p ) { vm.offers.push( new self.Offer( p ) ); - } ) + } ); } ); }, Offer: function ( data ) { this.id = data.id; this.offernumber = data.offernumber; + this.offerleader_id = data.offerleader_id; + this.project_id = data.project_id; this.acceptance_chance = data.acceptance_chance; this.projectNumber = data.project ? data.project.projectnumber : null; this.customerName = data.customer ? data.customer.name : null; @@ -107,6 +103,8 @@ dbo.offersService = { this.rejectdate = data.rejectdate ? dbo.helpers.mysql2date( data.rejectdate ) : null; this.accepteddate = data.accepteddate ? dbo.helpers.mysql2date( data.accepteddate ) : null; this.acceptance_chance = data.acceptance_chance ? data.acceptance_chance : 0; + this.own_revenue = data.own_revenue; + this.other_revenue = data.other_revenue; this.archive = data.archive; } }; \ No newline at end of file