Offrte gours

This commit is contained in:
2018-07-30 10:45:53 +02:00
parent b86c3fc4b9
commit 708a22f734
8 changed files with 119 additions and 30 deletions
@@ -51,6 +51,7 @@ class EmployeeHoursController extends MY_Controller {
unset( $data['id'] );
unset( $data['hourType'] );
unset( $data['project_id'] );
if( $hourType == 'OFFERS' ) $data['offer_id'] = $projectID;
$data['hourdate'] = date2mysql( $data['hourdate'] );
@@ -34,6 +34,13 @@ class OffersController extends MY_Controller {
$this->json( $offers );
}
public function getOffersWithoutProject()
{
$offersWithoutProject = Offer::getOffersWithoutProject();
$this->json( $offersWithoutProject);
}
public function saveOffer()
{
$offerValidation = new OfferValidation();
@@ -79,11 +79,25 @@ class ProjectsController extends MY_Controller {
Offer::whereId( $offerID )->update( ['project_id' => $project->id] );
Projectemployee::create( [
'project_id' => $project->id,
'user_id' => $offer->offerleader_id,
'tarif' => User::find( $offer->offerleader_id )->hourlyrate
] );
Projectemployee::firstOrCreateProjectemployee( $offer->offerleader_id, $project->id );
$offerteHours = Employeehour::whereOfferId( $offerID )->get();
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] );
}
+10
View File
@@ -41,6 +41,16 @@ class Offer extends BaseModel {
return $offers;
}
public static function getOffersWithoutProject( )
{
$offersWithoutProject = Offer::orderBy('startdate')
->whereNull('rejectdate')
->whereNull('project_id')
->get();
return $offersWithoutProject;
}
public static function saveOffer( $offerID, $offer )
{
$offer = (array) $offer;
@@ -59,6 +59,25 @@ class Projectemployee extends BaseModel {
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 )
{
$projectemployee = Projectemployee::create( [
+18 -6
View File
@@ -76,12 +76,24 @@
visible: ! inEdit()"></span>
<select class="form-control form-control-sm"
data-bind="options:projects,
optionsText:'projectname',
optionsValue:'projectID',
value:projectID,
optionsCaption:'selecteer...',
visible:inEdit(),
event:{change:$root.saveEmployeehours}"></select>
optionsText:'projectname',
optionsValue:'projectID',
value:projectID,
optionsCaption:'selecteer...',
visible:inEdit(),
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 -->
</td>
<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 ) {
$.getJSON( 'index.php/projects/offersController/getOffer/' + userID )
.done( function ( data ) {
@@ -9,20 +9,21 @@
dbo.employeehoursInit = function () {
if ( dbo.employeehoursModel !== undefined ) {
dbo.employeehoursModel.refreshHours();
dbo.employeehoursModel.init();
} else {
dbo.employeehoursModel = {
employeehours : ko.observableArray( [] ),
archive : ko.observable( false ),
months : ko.observableArray( [] ),
years : ko.observableArray( [] ),
hourtypes : ko.observableArray( [] ),
employees : ko.observableArray( [] ),
selectedYear : ko.observable(),
selectedMonth : ko.observable(),
busy : false,
selectedEmployeeID: ko.observable(),
employeehours : ko.observableArray( [] ),
archive : ko.observable( false ),
months : ko.observableArray( [] ),
years : ko.observableArray( [] ),
hourtypes : ko.observableArray( [] ),
employees : ko.observableArray( [] ),
selectedYear : ko.observable(),
selectedMonth : ko.observable(),
busy : false,
selectedEmployeeID : ko.observable(),
offersWithoutProject: ko.observableArray( [] ),
init: function () {
var vm = dbo.employeehoursModel;
@@ -37,15 +38,20 @@ dbo.employeehoursInit = function () {
dbo.employeehoursDataService.getHourtypes( function ( data ) {
vm.hourtypes( data );
dbo.userDataService.getUserWithprojects( function ( data ) {
vm.employees.removeAll();
_.each( data, function ( p ) {
vm.employees.push( new vm.Employee( p ) );
} );
vm.selectedEmployeeID( dbo.currentUser.id )
dbo.offerDataService.getOffersWithoutProject( function ( data ) {
vm.offersWithoutProject( data );
console.log( data );
console.log( vm.offersWithoutProject() );
dbo.userDataService.getUserWithprojects( function ( data ) {
vm.employees.removeAll();
_.each( data, function ( p ) {
vm.employees.push( new vm.Employee( p ) );
} );
vm.selectedEmployeeID( dbo.currentUser.id )
vm.busy = false;
vm.refreshEmployeehours();
vm.busy = false;
vm.refreshEmployeehours();
} );
} );
} );
},
@@ -90,6 +96,7 @@ dbo.employeehoursInit = function () {
if ( !self.hourtype_id() ) return;
if ( !self.hourdate() ) return;
if ( self.hourType() == 'PROJECTS' && !self.projectID() ) return;
if ( self.hourType() == 'OFFERS' && !self.projectID() ) return;
var submitDATA = {
id : self.id(),
@@ -179,14 +186,26 @@ dbo.employeehoursInit = function () {
_.each( data.projectemployees, function ( 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 ) {
this.projectEmployeeID = data.id;
this.type = 'PROJECT';
this.projectID = data.project.id;
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 ) {
var vm = dbo.employeehoursModel;
var self = this;