Browse Source

Merge pull request 'update clear code' (#61) from dev-wahyun into staging

Reviewed-on: ibnu/generic-ospro-backend#61
pull/1/head
farhantock 8 months ago
parent
commit
6ba759d324
  1. 8
      app/Http/Controllers/AssignMaterialController.php
  2. 5
      app/Http/Controllers/AssignToolsController.php
  3. 2
      app/Http/Controllers/HolidayController.php
  4. 3
      app/Http/Controllers/HumanResourceController.php
  5. 2
      app/Http/Controllers/ReportActivityController.php
  6. 2
      app/Http/Controllers/ReportActivityMaterialController.php
  7. 2
      app/Http/Controllers/UserToActivityController.php
  8. 89
      app/Models/Activity.php
  9. 37
      app/Models/AssignMaterial.php
  10. 2
      app/Models/ProjectRole.php
  11. 2
      app/Models/User.php
  12. 57
      app/Models/UserToActivity.php
  13. 20
      routes/web.php

8
app/Http/Controllers/AssignMaterialController.php

@ -8,7 +8,7 @@ use App\Models\RequestMaterial;
use App\Models\Activity; use App\Models\Activity;
use App\Models\ReportActivityMaterial; use App\Models\ReportActivityMaterial;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Datatables; use Yajra\Datatables\Datatables;
class AssignMaterialController extends Controller class AssignMaterialController extends Controller
{ {
@ -47,7 +47,11 @@ class AssignMaterialController extends Controller
if ($planDate >= $startDate) { if ($planDate >= $startDate) {
$result = AssignMaterial::create($data); $result = AssignMaterial::create($data);
return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200], 200); if($result) {
return response()->json(['status' => 'success', 'message' => 'Data added!', 'code' => 200], 200);
} else {
return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 400], 400);
}
} else { } else {
return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 400], 400); return response()->json(['status' => 'failed', 'message' => 'Failed to add data!', 'code' => 400], 400);
} }

5
app/Http/Controllers/AssignToolsController.php

@ -2,10 +2,9 @@
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\{AssignMaterial,AssignTools,ToolsResource};
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\AssignTools; use Yajra\Datatables\Datatables;
use Datatables;
use App\Models\ToolsResource;
class AssignToolsController extends Controller class AssignToolsController extends Controller
{ {
public function add(Request $request){ public function add(Request $request){

2
app/Http/Controllers/HolidayController.php

@ -4,7 +4,7 @@ namespace App\Http\Controllers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\Holiday; use App\Models\Holiday;
use Datatables; use Yajra\Datatables\Datatables;
class HolidayController extends Controller class HolidayController extends Controller
{ {

3
app/Http/Controllers/HumanResourceController.php

@ -22,7 +22,8 @@ class HumanResourceController extends Controller
'name' => 'required', 'name' => 'required',
'ktp_number' => 'required|string|unique:m_users,ktp_number', 'ktp_number' => 'required|string|unique:m_users,ktp_number',
'employee_type' => 'required', 'employee_type' => 'required',
'company_id' => 'required' 'company_id' => 'required',
'username' => 'unique:m_users,username'
]); ]);
$data = $request->all(); $data = $request->all();

2
app/Http/Controllers/ReportActivityController.php

@ -6,7 +6,7 @@ use Illuminate\Http\Request;
use App\Models\ReportActivity; use App\Models\ReportActivity;
use App\Models\Activity; use App\Models\Activity;
use App\Models\Image; use App\Models\Image;
use Datatables; use Yajra\Datatables\Datatables;
class ReportActivityController extends Controller class ReportActivityController extends Controller
{ {

2
app/Http/Controllers/ReportActivityMaterialController.php

@ -8,7 +8,7 @@ use Illuminate\Support\Facades\DB;
use App\Models\ReportActivityMaterial; use App\Models\ReportActivityMaterial;
use App\Models\Activity; use App\Models\Activity;
use App\Models\AssignMaterial; use App\Models\AssignMaterial;
use Datatables; use Yajra\Datatables\Datatables;
use DateTime; use DateTime;
class ReportActivityMaterialController extends Controller class ReportActivityMaterialController extends Controller

2
app/Http/Controllers/UserToActivityController.php

@ -7,7 +7,7 @@ use App\Models\UserToActivity;
use App\Models\Activity; use App\Models\Activity;
use App\Models\AssignMaterial; use App\Models\AssignMaterial;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Datatables; use Yajra\Datatables\Datatables;
class UserToActivityController extends Controller class UserToActivityController extends Controller
{ {

89
app/Models/Activity.php

@ -33,6 +33,9 @@ class Activity extends Model
'jobs_done', 'assign_hr', 'assign_material', 'assign_tools', 'assign_expense' 'jobs_done', 'assign_hr', 'assign_material', 'assign_tools', 'assign_expense'
]; ];
protected $casts = [
'rencana_biaya' => 'double'
];
public function getStartDateAttribute($value) public function getStartDateAttribute($value)
{ {
@ -61,58 +64,60 @@ class Activity extends Model
public static function boot() { public static function boot() {
parent::boot(); parent::boot();
DB::transaction(function() {
static::updating(function($data) { static::updating(function($data) {
$data->logPersentaseProgress(); $data->logPersentaseProgress();
}); });
static::updated(function($data) { static::updated(function($data) {
$data->updateBobot(); $data->updateBobot();
$data->updateCostPlanning(); $data->updateCostPlanning();
if($data->bobot_planning){ if($data->bobot_planning){
$data->updatePersentaseProgress(); $data->updatePersentaseProgress();
} }
$data->updateCostActual(); $data->updateCostActual();
// if($data->start_date != request()->start_date || $data->end_date != request()->end_date) { // if($data->start_date != request()->start_date || $data->end_date != request()->end_date) {
// $data->updateStartEndDateHeader(); // $data->updateStartEndDateHeader();
// } // }
}); });
static::deleted(function($data) { static::deleted(function($data) {
if (isset($data->parent_id)) { if (isset($data->parent_id)) {
if(Activity::where("parent_id", $data->parent_id)->count() == 0) { if(Activity::where("parent_id", $data->parent_id)->count() == 0) {
$activity = Activity::find($data->parent_id); $activity = Activity::find($data->parent_id);
if ($activity) { if ($activity) {
$activity->update(["type_activity"=>"task"]); $activity->update(["type_activity"=>"task"]);
} }
} }
} }
$data->updateBobot(true); $data->updateBobot(true);
$data->updateCostPlanning(); $data->updateCostPlanning();
if($data->bobot_planning){ if($data->bobot_planning){
$data->updatePersentaseProgress(); $data->updatePersentaseProgress();
} }
$data->updateCostActual(); $data->updateCostActual();
$data->updateStartEndDateHeader(); $data->updateStartEndDateHeader();
}); });
},5);
} }
private function updateBobot($isDelete = false) private function updateBobot($isDelete = false)
{ {
$root = Activity::where('version_gantt_id', $this->version_gantt_id) $root = Activity::where([
->where("proyek_id", $this->proyek_id) ['version_gantt_id', $this->version_gantt_id],
->whereNull('parent_id') ['proyek_id', $this->proyek_id]
])
->whereNull('parent_id')
->first(); ->first();
if(isset($root) && $root->rencana_biaya > 0){ if(isset($root) && doubleval($root->rencana_biaya) > 0){
$activities = Activity::where("proyek_id", $this->proyek_id)->where("version_gantt_id", $this->version_gantt_id)->get(); $activities = Activity::where([['proyek_id', $this->proyek_id],['version_gantt_id', $this->version_gantt_id]])->get();
foreach ($activities as $activity) { foreach ($activities as $activity) {
if($isDelete && $activity->id == $this->id) if($isDelete && $activity->id == $this->id)
continue; continue;
$activity->bobot_planning = ( (int)$activity->rencana_biaya / $root->rencana_biaya) * 100; $activity->bobot_planning = ( doubleval($activity->rencana_biaya) / doubleval($root->rencana_biaya)) * 100;
$activity->updated_by = auth()->user() ? auth()->user()->name : "system"; $activity->updated_by = auth()->user() ? auth()->user()->name : "system";
$activity->saveQuietly(); $activity->saveQuietly();

37
app/Models/AssignMaterial.php

@ -3,10 +3,8 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use App\Models\RequestMaterial; use App\Models\{Activity,RequestMaterial,ReportActivityMaterial};
use App\Models\Activity; use Illuminate\Support\Facades\DB;
use App\Models\ReportActivityMaterial;
class AssignMaterial extends Model class AssignMaterial extends Model
{ {
protected $table = 'assign_material_to_activity'; protected $table = 'assign_material_to_activity';
@ -23,24 +21,25 @@ class AssignMaterial extends Model
protected $casts = [ protected $casts = [
'id' => 'integer', 'id' => 'integer',
'budget' => 'string', 'budget' => 'string',
'qty_planning' => 'float'
]; ];
public static function boot() { public static function boot() {
parent::boot(); parent::boot();
DB::transaction(function () {
static::created(function($data) { static::created(function($data) {
$activity = Activity::find($data->activity_id); $activity = Activity::find((int)$data->activity_id);
$material = RequestMaterial::where("id", $data->material_id)->first(); $material = RequestMaterial::find((int)$data->material_id);
$activity->rencana_biaya += floatval($material->price) * floatval($data->qty_planning); $activity->rencana_biaya += (doubleval($material->price) * doubleval($data->qty_planning));
$activity->save(); $activity->save();
}); });
static::deleted(function($data) { static::deleted(function($data) {
$reportActivities = ReportActivityMaterial::where('assign_material_id', $data->id)->delete(); ReportActivityMaterial::where('assign_material_id', $data->id)->delete();
$activity = Activity::where('id', $data->activity_id)->first(); $activity = Activity::find($data->activity_id);
$activity->rencana_biaya -= floatval($data->budget) * floatval($data->qty_planning); $activity->rencana_biaya -= (doubleval($data->budget) * doubleval($data->qty_planning));
$activity->save(); $activity->save();
}); });
}, 5);
} }
} }

2
app/Models/ProjectRole.php

@ -12,6 +12,6 @@ class ProjectRole extends Model
const UPDATED_AT = 'updated_at'; const UPDATED_AT = 'updated_at';
protected $fillable = [ protected $fillable = [
'name', 'description', 'created_at', 'created_by', 'updated_at', 'updated_by' 'name', 'description', 'created_at', 'created_by', 'updated_at', 'company_id', 'updated_by'
]; ];
} }

2
app/Models/User.php

@ -24,7 +24,7 @@ class User extends Model implements AuthenticatableContract, AuthorizableContrac
protected $fillable = [ protected $fillable = [
'name', 'email', 'role_id', 'username', 'session_login', 'phone_number', 'email', 'address', 'name', 'email', 'role_id', 'username', 'session_login', 'phone_number', 'email', 'address',
'fcm_token', 'gender', 'birth_place', 'birth_date', 'blood_type', 'ktp_number', 'working_hours', 'fcm_token', 'gender', 'birth_place', 'birth_date', 'blood_type', 'ktp_number', 'working_hours',
'created_at', 'created_by', 'updated_at', 'updated_by', 'status_resource', 'discount_id' 'created_at', 'created_by', 'updated_at', 'updated_by', 'status_resource', 'discount_id','company_id'
]; ];
const CREATED_AT = 'created_at'; const CREATED_AT = 'created_at';

57
app/Models/UserToActivity.php

@ -4,6 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use App\Models\Activity; use App\Models\Activity;
use Illuminate\Support\Facades\DB;
class UserToActivity extends Model class UserToActivity extends Model
{ {
@ -29,35 +30,37 @@ class UserToActivity extends Model
public static function boot() { public static function boot() {
parent::boot(); parent::boot();
static::created(function($data) { DB::transaction(function(){
$activity = Activity::find($data->activity_id); static::created(function($data) {
$getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first(); $activity = Activity::find($data->activity_id);
$getWorkingHours = UserToProyek::where([['user_id', $data->user_id],['proyek_id', $activity->proyek_id]])->first();
$salary = 0;
if($getWorkingHours->uom_standart_rate == "Hour") {
$salary = (doubleval($getWorkingHours->standart_rate) * 8) * (int)$activity->duration * ($getWorkingHours->max_used / 100);
} else {
$salary = (doubleval($getWorkingHours->standart_rate) * (int)$activity->duration) * ($getWorkingHours->max_used / 100);
}
$activity->rencana_biaya += doubleval($salary);
$activity->save();
});
$salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100); static::deleted(function($data) {
$activity = Activity::find($data->activity_id);
if($getWorkingHours->uom_standart_rate == "Hour") $getWorkingHours = UserToProyek::where([['user_id', $data->user_id],['proyek_id', $activity->proyek_id]])->first();
$salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100); $salary = 0;
if($getWorkingHours->uom_standart_rate == "Hour"){
$activity->rencana_biaya += $salary; $salary = (doubleval($getWorkingHours->standart_rate) * 8) * (int)$activity->duration * ($getWorkingHours->max_used / 100);
$activity->save(); } else {
}); $salary = (doubleval($getWorkingHours->standart_rate) * (int)$activity->duration) * ($getWorkingHours->max_used / 100);
}
static::deleted(function($data) { $activity->rencana_biaya -= doubleval($salary);
$activity = Activity::find($data->activity_id);
$getWorkingHours = UserToProyek::where('user_id', $data->user_id)->where('proyek_id', $activity->proyek_id)->first();
$salary = ($getWorkingHours->standart_rate * $activity->duration) * ($getWorkingHours->max_used / 100);
if($getWorkingHours->uom_standart_rate == "Hour"){
$salary = ($getWorkingHours->standart_rate * 8) * $activity->duration * ($getWorkingHours->max_used / 100);
}
$activity->rencana_biaya -= $salary;
if ($activity->rencana_biaya < 0) {
$activity->rencana_biaya = 0;
}
$activity->save();
});
if ($activity->rencana_biaya < 0) {
$activity->rencana_biaya = 0;
}
$activity->save();
});
}, 5);
} }
} }

20
routes/web.php

@ -141,16 +141,6 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro
$router->post('/human-resource/check-old-password/{id}', 'HumanResourceController@checkOldPassword'); $router->post('/human-resource/check-old-password/{id}', 'HumanResourceController@checkOldPassword');
$router->get('/human-resource/sync', 'HumanResourceController@sync'); $router->get('/human-resource/sync', 'HumanResourceController@sync');
$router->post('/refferal-code/search', 'RefferalCodeController@search');
$router->post('/refferal-code/add', 'RefferalCodeController@add');
$router->get('/refferal-code/edit/{id}', 'RefferalCodeController@edit');
$router->put('/refferal-code/update/{id}', 'RefferalCodeController@update');
$router->post('/product-transaction/search', 'ProductTransactionController@search');
$router->post('/product-transaction/add', 'ProductTransactionController@add');
$router->get('/product-transaction/edit/{id}', 'ProductTransactionController@edit');
$router->put('/product-transaction/update/{id}', 'ProductTransactionController@update');
$router->post('/project-role/search', 'ProjectRoleController@search'); $router->post('/project-role/search', 'ProjectRoleController@search');
$router->post('/project-role/add', 'ProjectRoleController@add'); $router->post('/project-role/add', 'ProjectRoleController@add');
$router->get('/project-role/edit/{id}', 'ProjectRoleController@edit'); $router->get('/project-role/edit/{id}', 'ProjectRoleController@edit');
@ -599,7 +589,15 @@ $router->group(['prefix' => 'api', 'middleware' => 'cors'], function () use ($ro
$router->delete('/demo-management/delete/{id}', 'DemoController@delete'); $router->delete('/demo-management/delete/{id}', 'DemoController@delete');
$router->get('/demo-management/list', 'DemoController@list'); $router->get('/demo-management/list', 'DemoController@list');
$router->get('information-storage/{company_name}', 'Controller@storage'); $router->get('/information-storage/{company_name}', 'Controller@storage');
$router->post('/register-user','UserRegisterController@add');
$router->post('/refferal-code/search', 'RefferalCodeController@search');
$router->post('/refferal-code/add', 'RefferalCodeController@add');
$router->get('/refferal-code/edit/{id}', 'RefferalCodeController@edit');
$router->put('/refferal-code/update/{id}', 'RefferalCodeController@update');
$router->post('/product-transaction/edit/{id}', 'ProductTransactionController@add'); $router->post('/product-transaction/edit/{id}', 'ProductTransactionController@add');
$router->put('/product-transaction/update/{id}', 'ProductTransactionController@update'); $router->put('/product-transaction/update/{id}', 'ProductTransactionController@update');
$router->post('/product-transaction/search', 'ProductTransactionController@search'); $router->post('/product-transaction/search', 'ProductTransactionController@search');

Loading…
Cancel
Save