Offrte gours
This commit is contained in:
@@ -51,6 +51,7 @@ class EmployeeHoursController extends MY_Controller {
|
|||||||
unset( $data['id'] );
|
unset( $data['id'] );
|
||||||
unset( $data['hourType'] );
|
unset( $data['hourType'] );
|
||||||
unset( $data['project_id'] );
|
unset( $data['project_id'] );
|
||||||
|
if( $hourType == 'OFFERS' ) $data['offer_id'] = $projectID;
|
||||||
|
|
||||||
$data['hourdate'] = date2mysql( $data['hourdate'] );
|
$data['hourdate'] = date2mysql( $data['hourdate'] );
|
||||||
|
|
||||||
|
|||||||
@@ -34,6 +34,13 @@ class OffersController extends MY_Controller {
|
|||||||
$this->json( $offers );
|
$this->json( $offers );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getOffersWithoutProject()
|
||||||
|
{
|
||||||
|
$offersWithoutProject = Offer::getOffersWithoutProject();
|
||||||
|
|
||||||
|
$this->json( $offersWithoutProject);
|
||||||
|
}
|
||||||
|
|
||||||
public function saveOffer()
|
public function saveOffer()
|
||||||
{
|
{
|
||||||
$offerValidation = new OfferValidation();
|
$offerValidation = new OfferValidation();
|
||||||
|
|||||||
@@ -79,11 +79,25 @@ class ProjectsController extends MY_Controller {
|
|||||||
|
|
||||||
Offer::whereId( $offerID )->update( ['project_id' => $project->id] );
|
Offer::whereId( $offerID )->update( ['project_id' => $project->id] );
|
||||||
|
|
||||||
Projectemployee::create( [
|
Projectemployee::firstOrCreateProjectemployee( $offer->offerleader_id, $project->id );
|
||||||
'project_id' => $project->id,
|
|
||||||
'user_id' => $offer->offerleader_id,
|
$offerteHours = Employeehour::whereOfferId( $offerID )->get();
|
||||||
'tarif' => User::find( $offer->offerleader_id )->hourlyrate
|
foreach ( $offerteHours as $offerteHour )
|
||||||
] );
|
{
|
||||||
|
$projectemployee =
|
||||||
|
Projectemployee::firstOrCreateProjectemployee( $offerteHour->employee_id, $project->id );
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'projectemployee_id' => $projectemployee->id,
|
||||||
|
'hourtype_id' => 10,
|
||||||
|
'hourdate' => $offerteHour->hourdate,
|
||||||
|
'hours' => $offerteHour->hours
|
||||||
|
];
|
||||||
|
|
||||||
|
Projecthour::create( $data );
|
||||||
|
|
||||||
|
Employeehour::whereId( $offerteHour->id )->delete();
|
||||||
|
}
|
||||||
|
|
||||||
$this->json( ['success' => TRUE, 'projectnumber' => $projectnumber] );
|
$this->json( ['success' => TRUE, 'projectnumber' => $projectnumber] );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,6 +41,16 @@ class Offer extends BaseModel {
|
|||||||
return $offers;
|
return $offers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function getOffersWithoutProject( )
|
||||||
|
{
|
||||||
|
$offersWithoutProject = Offer::orderBy('startdate')
|
||||||
|
->whereNull('rejectdate')
|
||||||
|
->whereNull('project_id')
|
||||||
|
->get();
|
||||||
|
|
||||||
|
return $offersWithoutProject;
|
||||||
|
}
|
||||||
|
|
||||||
public static function saveOffer( $offerID, $offer )
|
public static function saveOffer( $offerID, $offer )
|
||||||
{
|
{
|
||||||
$offer = (array) $offer;
|
$offer = (array) $offer;
|
||||||
|
|||||||
@@ -59,6 +59,25 @@ class Projectemployee extends BaseModel {
|
|||||||
return $details;
|
return $details;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function firstOrCreateProjectemployee( $userID, $projectID )
|
||||||
|
{
|
||||||
|
$projectemployee = self::whereUserId($userID)->whereProjectId($projectID);
|
||||||
|
|
||||||
|
if( $projectemployee->count() > 0 ) return $projectemployee->first();
|
||||||
|
|
||||||
|
$user = User::find( $userID );
|
||||||
|
|
||||||
|
$tarif = $user ? $user->hourlyrate : 0;
|
||||||
|
|
||||||
|
$projectemployee = Projectemployee::create( [
|
||||||
|
'project_id' => $projectID,
|
||||||
|
'user_id' => $userID,
|
||||||
|
'tarif' => $tarif
|
||||||
|
] );
|
||||||
|
|
||||||
|
return $projectemployee;
|
||||||
|
}
|
||||||
|
|
||||||
public static function createProjectEmployee( $projectID )
|
public static function createProjectEmployee( $projectID )
|
||||||
{
|
{
|
||||||
$projectemployee = Projectemployee::create( [
|
$projectemployee = Projectemployee::create( [
|
||||||
|
|||||||
@@ -76,12 +76,24 @@
|
|||||||
visible: ! inEdit()"></span>
|
visible: ! inEdit()"></span>
|
||||||
<select class="form-control form-control-sm"
|
<select class="form-control form-control-sm"
|
||||||
data-bind="options:projects,
|
data-bind="options:projects,
|
||||||
optionsText:'projectname',
|
optionsText:'projectname',
|
||||||
optionsValue:'projectID',
|
optionsValue:'projectID',
|
||||||
value:projectID,
|
value:projectID,
|
||||||
optionsCaption:'selecteer...',
|
optionsCaption:'selecteer...',
|
||||||
visible:inEdit(),
|
visible:inEdit(),
|
||||||
event:{change:$root.saveEmployeehours}"></select>
|
event:{change:$root.saveEmployeehours}"></select>
|
||||||
|
<!-- /ko -->
|
||||||
|
<!-- ko if: hourType() == 'OFFERS' -->
|
||||||
|
<span data-bind="text:dbo.helpers.findArrayElement('projectID', 'projectname', projectID(), projects()),
|
||||||
|
visible: ! inEdit()"></span>
|
||||||
|
<select class="form-control form-control-sm"
|
||||||
|
data-bind="options:$root.offersWithoutProject,
|
||||||
|
optionsText:'offername',
|
||||||
|
optionsValue:'id',
|
||||||
|
value:projectID,
|
||||||
|
optionsCaption:'selecteer...',
|
||||||
|
visible:inEdit(),
|
||||||
|
event:{change:$root.saveEmployeehours}"></select>
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
</td>
|
</td>
|
||||||
<td class="align-right" data-bind="css:{'red-line': id() == 0}">
|
<td class="align-right" data-bind="css:{'red-line': id() == 0}">
|
||||||
|
|||||||
@@ -14,6 +14,13 @@ dbo.offerDataService = {
|
|||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
|
getOffersWithoutProject: function ( callback ) {
|
||||||
|
$.getJSON( 'index.php/projects/offersController/getOffersWithoutProject' )
|
||||||
|
.done( function ( data ) {
|
||||||
|
callback(data);
|
||||||
|
} );
|
||||||
|
},
|
||||||
|
|
||||||
getOffer: function ( userID, callback ) {
|
getOffer: function ( userID, callback ) {
|
||||||
$.getJSON( 'index.php/projects/offersController/getOffer/' + userID )
|
$.getJSON( 'index.php/projects/offersController/getOffer/' + userID )
|
||||||
.done( function ( data ) {
|
.done( function ( data ) {
|
||||||
|
|||||||
@@ -9,20 +9,21 @@
|
|||||||
dbo.employeehoursInit = function () {
|
dbo.employeehoursInit = function () {
|
||||||
|
|
||||||
if ( dbo.employeehoursModel !== undefined ) {
|
if ( dbo.employeehoursModel !== undefined ) {
|
||||||
dbo.employeehoursModel.refreshHours();
|
dbo.employeehoursModel.init();
|
||||||
} else {
|
} else {
|
||||||
dbo.employeehoursModel = {
|
dbo.employeehoursModel = {
|
||||||
|
|
||||||
employeehours : ko.observableArray( [] ),
|
employeehours : ko.observableArray( [] ),
|
||||||
archive : ko.observable( false ),
|
archive : ko.observable( false ),
|
||||||
months : ko.observableArray( [] ),
|
months : ko.observableArray( [] ),
|
||||||
years : ko.observableArray( [] ),
|
years : ko.observableArray( [] ),
|
||||||
hourtypes : ko.observableArray( [] ),
|
hourtypes : ko.observableArray( [] ),
|
||||||
employees : ko.observableArray( [] ),
|
employees : ko.observableArray( [] ),
|
||||||
selectedYear : ko.observable(),
|
selectedYear : ko.observable(),
|
||||||
selectedMonth : ko.observable(),
|
selectedMonth : ko.observable(),
|
||||||
busy : false,
|
busy : false,
|
||||||
selectedEmployeeID: ko.observable(),
|
selectedEmployeeID : ko.observable(),
|
||||||
|
offersWithoutProject: ko.observableArray( [] ),
|
||||||
|
|
||||||
init: function () {
|
init: function () {
|
||||||
var vm = dbo.employeehoursModel;
|
var vm = dbo.employeehoursModel;
|
||||||
@@ -37,15 +38,20 @@ dbo.employeehoursInit = function () {
|
|||||||
|
|
||||||
dbo.employeehoursDataService.getHourtypes( function ( data ) {
|
dbo.employeehoursDataService.getHourtypes( function ( data ) {
|
||||||
vm.hourtypes( data );
|
vm.hourtypes( data );
|
||||||
dbo.userDataService.getUserWithprojects( function ( data ) {
|
dbo.offerDataService.getOffersWithoutProject( function ( data ) {
|
||||||
vm.employees.removeAll();
|
vm.offersWithoutProject( data );
|
||||||
_.each( data, function ( p ) {
|
console.log( data );
|
||||||
vm.employees.push( new vm.Employee( p ) );
|
console.log( vm.offersWithoutProject() );
|
||||||
} );
|
dbo.userDataService.getUserWithprojects( function ( data ) {
|
||||||
vm.selectedEmployeeID( dbo.currentUser.id )
|
vm.employees.removeAll();
|
||||||
|
_.each( data, function ( p ) {
|
||||||
|
vm.employees.push( new vm.Employee( p ) );
|
||||||
|
} );
|
||||||
|
vm.selectedEmployeeID( dbo.currentUser.id )
|
||||||
|
|
||||||
vm.busy = false;
|
vm.busy = false;
|
||||||
vm.refreshEmployeehours();
|
vm.refreshEmployeehours();
|
||||||
|
} );
|
||||||
} );
|
} );
|
||||||
} );
|
} );
|
||||||
},
|
},
|
||||||
@@ -90,6 +96,7 @@ dbo.employeehoursInit = function () {
|
|||||||
if ( !self.hourtype_id() ) return;
|
if ( !self.hourtype_id() ) return;
|
||||||
if ( !self.hourdate() ) return;
|
if ( !self.hourdate() ) return;
|
||||||
if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return;
|
if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return;
|
||||||
|
if ( self.hourType() == 'OFFERS' && !self.projectID() ) return;
|
||||||
|
|
||||||
var submitDATA = {
|
var submitDATA = {
|
||||||
id : self.id(),
|
id : self.id(),
|
||||||
@@ -179,14 +186,26 @@ dbo.employeehoursInit = function () {
|
|||||||
_.each( data.projectemployees, function ( p ) {
|
_.each( data.projectemployees, function ( p ) {
|
||||||
self.projecten.push( new vm.Project( p ) );
|
self.projecten.push( new vm.Project( p ) );
|
||||||
} );
|
} );
|
||||||
|
_.each( vm.offersWithoutProject(), function ( p ) {
|
||||||
|
console.log( p );
|
||||||
|
self.projecten.push( new vm.Offer( p, self.id ) );
|
||||||
|
} );
|
||||||
},
|
},
|
||||||
|
|
||||||
Project: function ( data ) {
|
Project: function ( data ) {
|
||||||
this.projectEmployeeID = data.id;
|
this.projectEmployeeID = data.id;
|
||||||
|
this.type = 'PROJECT';
|
||||||
this.projectID = data.project.id;
|
this.projectID = data.project.id;
|
||||||
this.project = data.project.projectnumber + ' - ' + data.project.projectname;
|
this.project = data.project.projectnumber + ' - ' + data.project.projectname;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
Offer: function ( data, employeeID ) {
|
||||||
|
this.projectemployeeID = employeeID;
|
||||||
|
this.type = 'OFFER';
|
||||||
|
this.projectID = data.id;
|
||||||
|
this.project = data.offernumber + ' - ' + data.offername;
|
||||||
|
},
|
||||||
|
|
||||||
Employeehour: function ( data ) {
|
Employeehour: function ( data ) {
|
||||||
var vm = dbo.employeehoursModel;
|
var vm = dbo.employeehoursModel;
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|||||||
Reference in New Issue
Block a user