diff --git a/app/Http/Controllers/Api/ProjectsController.php b/app/Http/Controllers/Api/ProjectsController.php new file mode 100644 index 0000000..903e806 --- /dev/null +++ b/app/Http/Controllers/Api/ProjectsController.php @@ -0,0 +1,39 @@ +repo = $repo; + } + public function index(Request $request) + { + return $this->repo->getProjects($request->get('q'), $request->get('status_id')); + } + + public function show($id) + { + return $this->repo->requireById($id); + } + + public function features($id) + { + $project = $this->repo->requireById($id); + // $project->load('features.tasks'); + $response = fractal() + ->item($project->toArray()) + ->transformWith(function($project) { + return $project; + }) + ->toArray(); + return $response; + } +} diff --git a/app/Http/Controllers/Projects/FeaturesController.php b/app/Http/Controllers/Projects/FeaturesController.php index 9a94cf7..1804670 100755 --- a/app/Http/Controllers/Projects/FeaturesController.php +++ b/app/Http/Controllers/Projects/FeaturesController.php @@ -86,7 +86,7 @@ class FeaturesController extends Controller { { $feature = $this->repo->update($req->except(['_method','_token']), $featureId); flash()->success(trans('feature.updated')); - return redirect()->route('projects.features', $feature->project_id); + return redirect()->route('features.show', $feature->id); } public function delete($featureId) diff --git a/app/Http/Controllers/Projects/ProjectsController.php b/app/Http/Controllers/Projects/ProjectsController.php index 9112220..5e86ec7 100755 --- a/app/Http/Controllers/Projects/ProjectsController.php +++ b/app/Http/Controllers/Projects/ProjectsController.php @@ -110,6 +110,8 @@ class ProjectsController extends Controller { $sheet->loadView('projects.features-export-excel',compact('project','features')); }); })->download('xls'); + } elseif ($exportType == 'excel-progress') { + return view('projects.features-export-progress-excel', compact('project','features')); } else { return view('projects.features-export-html', compact('project','features')); } diff --git a/config/session.php b/config/session.php index f1b0042..554beb2 100644 --- a/config/session.php +++ b/config/session.php @@ -109,7 +109,7 @@ return [ | */ - 'cookie' => 'laravel_session', + 'cookie' => 'nfs_project', /* |-------------------------------------------------------------------------- diff --git a/public/assets/css/app.s.css b/public/assets/css/app.s.css index bd15885..80dcef7 100644 --- a/public/assets/css/app.s.css +++ b/public/assets/css/app.s.css @@ -248,7 +248,7 @@ html { -webkit-tap-highlight-color: transparent; } body { - font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; + font-family: "Liberation Serif", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 1.428571429; color: #333333; diff --git a/resources/lang/id/project.php b/resources/lang/id/project.php index 933c834..7f20a61 100644 --- a/resources/lang/id/project.php +++ b/resources/lang/id/project.php @@ -26,6 +26,7 @@ return [ 'features' => 'Daftar Fitur', 'features_export_html' => 'Export HTML', 'features_export_excel' => 'Export Excel', + 'features_export_progress_excel' => 'Export Progress', 'subscriptions' => 'Langganan', 'worker' => 'Pekerja', 'status' => 'Status Project', diff --git a/resources/views/features/show.blade.php b/resources/views/features/show.blade.php index 70a4bb8..f4d7987 100755 --- a/resources/views/features/show.blade.php +++ b/resources/views/features/show.blade.php @@ -8,7 +8,7 @@

{!! link_to_route('features.edit', trans('feature.edit'), [$feature->id], ['class' => 'btn btn-warning']) !!} - {!! link_to_route('projects.features', trans('feature.back_to_index'), [$feature->project_id], ['class' => 'btn btn-default']) !!} + {!! link_to_route('projects.features', trans('feature.back_to_index'), [$feature->project_id, '#' . $feature->id], ['class' => 'btn btn-default']) !!}
{{ $feature->name }} {{ trans('feature.show') }}

diff --git a/resources/views/projects/features-export-progress-excel.blade.php b/resources/views/projects/features-export-progress-excel.blade.php index d8123e5..7788b1b 100755 --- a/resources/views/projects/features-export-progress-excel.blade.php +++ b/resources/views/projects/features-export-progress-excel.blade.php @@ -29,7 +29,7 @@ {{ trans('feature.name') }} {{ trans('feature.progress') }} {{-- {{ trans('feature.price') }} --}} - {{ trans('app.description') }} + {{-- {{ trans('app.description') }} --}} @@ -41,19 +41,21 @@ {{ $feature->progress = $feature->tasks->avg('progress')/100 }} {{-- {{ $feature->price }} --}} - {!! nl2br($feature->description) !!} + {{-- {!! nl2br($feature->description) !!} --}} + tasks->count()) @foreach($feature->tasks as $task) {{ $task->name }} - {!! nl2br($task->description) !!} + {{-- {!! nl2br($task->description) !!} --}} @endforeach @endif + */ ?> @empty {{ trans('feature.empty') }} @endforelse @@ -63,7 +65,7 @@ Total {{ $project->getFeatureOveralProgress() }} % {{-- {{ $features->sum('price') }} --}} - + {{-- --}} diff --git a/resources/views/projects/features.blade.php b/resources/views/projects/features.blade.php index 1e2063d..22df5dd 100755 --- a/resources/views/projects/features.blade.php +++ b/resources/views/projects/features.blade.php @@ -21,7 +21,8 @@
{!! link_to_route('projects.features-export', trans('project.features_export_html'), [$project->id, 'html', 'feature_type' => $key], ['class' => '','target' => '_blank']) !!} | - {!! link_to_route('projects.features-export', trans('project.features_export_excel'), [$project->id, 'excel', 'feature_type' => $key], ['class' => '']) !!} + {!! link_to_route('projects.features-export', trans('project.features_export_excel'), [$project->id, 'excel', 'feature_type' => $key], ['class' => '','target' => '_blank']) !!} | + {!! link_to_route('projects.features-export', trans('project.features_export_progress_excel'), [$project->id, 'excel-progress', 'feature_type' => $key], ['class' => '','target' => '_blank']) !!}

{{ $key == 1 ? 'Daftar Fitur' : 'Fitur Tambahan' }} @@ -69,7 +70,10 @@ Total {{ $groupedFeatures->sum('tasks_count') }} - {{ formatDecimal($project->getFeatureOveralProgress()) }} % + + {{ formatDecimal($groupedFeatures->sum('progress') / $groupedFeatures->count()) }} % + ({{ formatDecimal($project->getFeatureOveralProgress()) }} %) + {{ formatRp($groupedFeatures->sum('price')) }} diff --git a/resources/views/projects/partials/project-stats.blade.php b/resources/views/projects/partials/project-stats.blade.php new file mode 100644 index 0000000..b3a4fc7 --- /dev/null +++ b/resources/views/projects/partials/project-stats.blade.php @@ -0,0 +1,33 @@ + \ No newline at end of file diff --git a/resources/views/projects/show.blade.php b/resources/views/projects/show.blade.php index 9832bcf..0afe825 100755 --- a/resources/views/projects/show.blade.php +++ b/resources/views/projects/show.blade.php @@ -20,6 +20,7 @@ @include('projects.partials.project-show')

+ @include('projects.partials.project-stats') {!! Form::model($project, ['route' => ['projects.status-update', $project->id], 'method' => 'patch','class' => 'well well-sm form-inline']) !!} {!! FormField::select('status_id', getProjectStatusesList(), ['label' => trans('project.status')]) !!} {!! Form::submit('Update Project Status', ['class' => 'btn btn-info']) !!} diff --git a/routes/api.php b/routes/api.php index 3d2b170..cd59c5b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -1,8 +1,9 @@ 'v1','namespace' => 'Api', 'as' => 'api.', 'middleware' => ['auth:api']], function() { + require __DIR__ . '/api/projects.php'; /** - * Savety Calendar + * Calendar */ Route::get('get-events', ['as' => 'events.index', 'uses' => 'EventsController@index']); Route::post('events', ['as' => 'events.store', 'uses' => 'EventsController@store']); diff --git a/routes/api/projects.php b/routes/api/projects.php new file mode 100644 index 0000000..f32c211 --- /dev/null +++ b/routes/api/projects.php @@ -0,0 +1,4 @@ + 'projects.features', 'uses' => 'ProjectsController@features']); \ No newline at end of file diff --git a/tests/api/ApiManageProjectsTest.php b/tests/api/ApiManageProjectsTest.php new file mode 100644 index 0000000..bf7af8f --- /dev/null +++ b/tests/api/ApiManageProjectsTest.php @@ -0,0 +1,23 @@ +create(); + $project = factory(Project::class, 5)->create(['owner_id' => $user->id]); + + $this->getJson(route('api.projects.index'), [ + 'Authorization' => 'Bearer ' . $user->api_token + ]); + + $this->seeStatusCode(200); + } +} diff --git a/tests/functional/ManageFeaturesTest.php b/tests/functional/ManageFeaturesTest.php index a86fdaa..36d322f 100644 --- a/tests/functional/ManageFeaturesTest.php +++ b/tests/functional/ManageFeaturesTest.php @@ -71,7 +71,7 @@ class ManageFeaturesTest extends TestCase $this->select(2, 'type_id'); $this->press(trans('feature.update')); - $this->seePageIs('projects/' . $project->id . '/features'); + $this->seePageIs('features/' . $feature->id); $this->see(trans('feature.updated')); $this->seeInDatabase('features', [ 'name' => 'Nama Fitur Edit',