diff --git a/app/Http/Controllers/BackupsController.php b/app/Http/Controllers/BackupsController.php index 757f0f5..4abaa8e 100755 --- a/app/Http/Controllers/BackupsController.php +++ b/app/Http/Controllers/BackupsController.php @@ -2,13 +2,17 @@ namespace App\Http\Controllers; -use App\Http\Requests\BackupUploadRequest; use BackupManager\Filesystems\Destination; use BackupManager\Manager; use Illuminate\Http\Request; use League\Flysystem\FileExistsException; use League\Flysystem\FileNotFoundException; +/** + * Database Backups Controller. + * + * @author Nafies Luthfi + */ class BackupsController extends Controller { public function index(Request $request) @@ -38,8 +42,8 @@ class BackupsController extends Controller $fileName = $request->get('file_name') ?: date('Y-m-d_Hi'); $manager->makeBackup()->run('mysql', [ - new Destination('local', 'backup/db/'.$fileName), - ], 'gzip'); + new Destination('local', 'backup/db/'.$fileName), + ], 'gzip'); flash(trans('backup.created', ['filename' => $fileName.'.gz']), 'success'); @@ -80,11 +84,11 @@ class BackupsController extends Controller public function upload(Request $request) { - $data = $request->validate([ - 'backup_file' => 'required|mimetypes:application/x-gzip', - ], [ - 'backup_file.mimetypes' => 'Invalid file type, must be .gz file', - ]); + $data = $request->validate([ + 'backup_file' => 'required|mimetypes:application/x-gzip', + ], [ + 'backup_file.mimetypes' => 'Invalid file type, must be .gz file', + ]); $file = $data['backup_file']; $fileName = $file->getClientOriginalName(); diff --git a/app/Http/Controllers/InvoiceDraftController.php b/app/Http/Controllers/InvoiceDraftsController.php similarity index 70% rename from app/Http/Controllers/InvoiceDraftController.php rename to app/Http/Controllers/InvoiceDraftsController.php index fde1ea8..581cec5 100644 --- a/app/Http/Controllers/InvoiceDraftController.php +++ b/app/Http/Controllers/InvoiceDraftsController.php @@ -8,7 +8,12 @@ use App\Services\InvoiceDrafts\InvoiceDraftCollection; use App\Services\InvoiceDrafts\Item; use Illuminate\Http\Request; -class InvoiceDraftController extends Controller +/** + * Invoice Drafts Controller. + * + * @author Nafies Luthfi + */ +class InvoiceDraftsController extends Controller { private $draftCollection; @@ -19,10 +24,10 @@ class InvoiceDraftController extends Controller public function index(Request $request) { - $draft = $this->draftCollection->content()->first(); + $draft = $this->draftCollection->content()->first(); $projects = Project::pluck('name', 'id'); - return view('invoices.create', compact('draft', 'projects')); + return view('invoice-drafts.index', compact('draft', 'projects')); } public function show(Request $request, $draftKey = null) @@ -31,18 +36,18 @@ class InvoiceDraftController extends Controller if (is_null($draft)) { flash(trans('invoice.draft_not_found'), 'danger'); - return redirect()->route('invoices.create'); + return redirect()->route('invoice-drafts.index'); } $projects = Project::pluck('name', 'id'); - return view('invoices.create', compact('draft', 'projects')); + return view('invoice-drafts.index', compact('draft', 'projects')); } - public function add(Request $request) + public function create(Request $request) { $this->draftCollection->add(new InvoiceDraft()); - return redirect()->route('invoices.create', $this->draftCollection->content()->last()->draftKey); + return redirect()->route('invoice-drafts.show', $this->draftCollection->content()->last()->draftKey); } public function addDraftItem(Request $request, $draftKey) @@ -69,23 +74,24 @@ class InvoiceDraftController extends Controller return back(); } - function empty($draftKey) { + public function emptyDraft($draftKey) + { $this->draftCollection->emptyDraft($draftKey); - return redirect()->route('invoices.create', $draftKey); + return redirect()->route('invoice-drafts.show', $draftKey); } - public function remove(Request $request) + public function remove(Request $request, $draftKey) { $this->draftCollection->removeDraft($request->draft_key); if ($this->draftCollection->isEmpty()) { - return redirect()->route('invoices.create-empty'); + return redirect()->route('invoice-drafts.index'); } $lastDraft = $this->draftCollection->content()->last(); - return redirect()->route('invoices.create', $lastDraft->draftKey); + return redirect()->route('invoice-drafts.show', $lastDraft->draftKey); } public function destroy() @@ -93,7 +99,7 @@ class InvoiceDraftController extends Controller $this->draftCollection->destroy(); flash(trans('invoice.draft_destroyed'), 'warning'); - return redirect()->route('cart.index'); + return redirect()->route('invoice-drafts.index'); } public function proccess(Request $request, $draftKey) @@ -108,19 +114,19 @@ class InvoiceDraftController extends Controller if ($draft->getItemsCount() == 0) { flash(trans('invoice.item_list_empty'), 'warning')->important(); - return redirect()->route('invoices.create', [$draftKey]); + return redirect()->route('invoice-drafts.show', [$draftKey]); } - flash(trans('invoice.confirm_instruction', ['back_link' => link_to_route('invoices.create', trans('app.back'), $draftKey)]), 'warning')->important(); + flash(trans('invoice.confirm_instruction'), 'warning')->important(); - return redirect()->route('invoices.create', [$draftKey, 'action' => 'confirm']); + return redirect()->route('invoice-drafts.show', [$draftKey, 'action' => 'confirm']); } public function store(Request $request, $draftKey) { $draft = $this->draftCollection->get($draftKey); if (is_null($draft)) { - return redirect()->route('cart.index'); + return redirect()->route('invoice-drafts.index'); } $invoice = $draft->store(); diff --git a/app/Http/Controllers/InvoicesController.php b/app/Http/Controllers/InvoicesController.php index cd3029b..1eb978a 100644 --- a/app/Http/Controllers/InvoicesController.php +++ b/app/Http/Controllers/InvoicesController.php @@ -3,8 +3,12 @@ namespace App\Http\Controllers; use App\Entities\Invoices\Invoice; -use Illuminate\Http\Request; +/** + * Invoices Controller. + * + * @author Nafies Luthfi + */ class InvoicesController extends Controller { public function show(Invoice $invoice) diff --git a/app/Http/Controllers/Projects/FilesController.php b/app/Http/Controllers/Projects/FilesController.php index 26bd109..ba4f6e0 100644 --- a/app/Http/Controllers/Projects/FilesController.php +++ b/app/Http/Controllers/Projects/FilesController.php @@ -7,6 +7,11 @@ use App\Http\Controllers\Controller; use File as FileSystem; use Illuminate\Http\Request; +/** + * Project Files Controller. + * + * @author Nafies Luthfi + */ class FilesController extends Controller { private $fileableTypes = [ diff --git a/app/Http/Controllers/Projects/InvoicesController.php b/app/Http/Controllers/Projects/InvoicesController.php index 97e5d1e..9887941 100644 --- a/app/Http/Controllers/Projects/InvoicesController.php +++ b/app/Http/Controllers/Projects/InvoicesController.php @@ -4,8 +4,12 @@ namespace App\Http\Controllers\Projects; use App\Entities\Projects\Project; use App\Http\Controllers\Controller; -use Illuminate\Http\Request; +/** + * Project Invoices Controller. + * + * @author Nafies Luthfi + */ class InvoicesController extends Controller { public function index(Project $project) diff --git a/app/Http/Controllers/Projects/TasksController.php b/app/Http/Controllers/Projects/TasksController.php index 3bfbd37..dafcaea 100755 --- a/app/Http/Controllers/Projects/TasksController.php +++ b/app/Http/Controllers/Projects/TasksController.php @@ -8,6 +8,11 @@ use App\Http\Requests\Tasks\CreateRequest; use App\Http\Requests\Tasks\DeleteRequest; use App\Http\Requests\Tasks\UpdateRequest; +/** + * Project Tasks Controller. + * + * @author Nafies Luthfi + */ class TasksController extends Controller { diff --git a/app/Http/Controllers/ReportsController.php b/app/Http/Controllers/ReportsController.php index fa9878a..e304c1b 100755 --- a/app/Http/Controllers/ReportsController.php +++ b/app/Http/Controllers/ReportsController.php @@ -2,63 +2,66 @@ namespace App\Http\Controllers; -use App\Http\Controllers\Controller; use App\Entities\Reports\ReportsRepository; - +use App\Http\Controllers\Controller; use Illuminate\Http\Request; -class ReportsController extends Controller { - - private $repo; +/** + * Reports Controller. + * + * @author Nafies Luthfi + */ +class ReportsController extends Controller +{ + private $repo; - public function __construct(ReportsRepository $repo) - { - $this->repo = $repo; - } + public function __construct(ReportsRepository $repo) + { + $this->repo = $repo; + } - public function index(Request $req) - { - $reports = $this->repo->getAll($req->get('q')); - return view('reports.payments.index',compact('reports')); - } + public function index(Request $req) + { + $reports = $this->repo->getAll($req->get('q')); + return view('reports.payments.index', compact('reports')); + } - public function daily(Request $req) - { - $q = $req->get('q'); - $date = $req->get('date',date('Y-m-d')); + public function daily(Request $req) + { + $q = $req->get('q'); + $date = $req->get('date', date('Y-m-d')); - $payments = $this->repo->getDailyReports($date, $q); - return view('reports.payments.daily', compact('payments','date')); - } + $payments = $this->repo->getDailyReports($date, $q); + return view('reports.payments.daily', compact('payments', 'date')); + } - public function monthly(Request $req) - { - $year = date('Y'); - $month = date('m'); - if ($req->has('year') && $req->has('month')) - { - $year = $req->get('year'); - $month = $req->get('month'); - } - $reports = $this->repo->getMonthlyReports($year, $month); - $months = \getMonths(); - $years = \getYears(); - return view('reports.payments.monthly', compact('reports','months','years','month','year')); - } + public function monthly(Request $req) + { + $year = date('Y'); + $month = date('m'); + if ($req->has('year') && $req->has('month')) { + $year = $req->get('year'); + $month = $req->get('month'); + } + $reports = $this->repo->getMonthlyReports($year, $month); + $months = \getMonths(); + $years = \getYears(); + return view('reports.payments.monthly', compact('reports', 'months', 'years', 'month', 'year')); + } - public function yearly(Request $req) - { - $year = $req->get('year',date('Y')); + public function yearly(Request $req) + { + $year = $req->get('year', date('Y')); - $reports = $this->repo->getYearlyReports($year); - $years = \getYears(); - return view('reports.payments.yearly', compact('reports','years','year')); - } + $reports = $this->repo->getYearlyReports($year); + $years = \getYears(); + return view('reports.payments.yearly', compact('reports', 'years', 'year')); + } - public function currentCredits() - { - $projects = $this->repo->getCurrentCredits(); - return view('reports.current-credits', compact('projects')); - } + public function currentCredits() + { + $projects = $this->repo->getCurrentCredits(); + return view('reports.current-credits', compact('projects')); + } } diff --git a/app/Http/Controllers/SubscriptionsController.php b/app/Http/Controllers/SubscriptionsController.php index 4594bfb..62c75f4 100755 --- a/app/Http/Controllers/SubscriptionsController.php +++ b/app/Http/Controllers/SubscriptionsController.php @@ -9,9 +9,13 @@ use App\Http\Controllers\Controller; use App\Http\Requests\SubscriptionRequest as FormRequest; use Illuminate\Http\Request; +/** + * Subscriptions Controller. + * + * @author Nafies Luthfi + */ class SubscriptionsController extends Controller { - private $repo; public function __construct(SubscriptionsRepository $repo) diff --git a/app/Http/Controllers/Users/UsersController.php b/app/Http/Controllers/Users/UsersController.php index 8c2b542..7332345 100755 --- a/app/Http/Controllers/Users/UsersController.php +++ b/app/Http/Controllers/Users/UsersController.php @@ -7,7 +7,7 @@ use App\Http\Controllers\Controller; use Illuminate\Http\Request; /** - * Users Controller + * Users Controller. * * @author Nafies Luthfi */ diff --git a/app/Http/Middleware/GlobalViewVariables.php b/app/Http/Middleware/GlobalViewVariables.php index dbdebd8..ab188c7 100644 --- a/app/Http/Middleware/GlobalViewVariables.php +++ b/app/Http/Middleware/GlobalViewVariables.php @@ -6,6 +6,11 @@ use App\Entities\Projects\Project; use Closure; use DB; +/** + * Global View Variables Middleware. + * + * @author Nafies Luthfi + */ class GlobalViewVariables { /** diff --git a/app/Http/Middleware/Role.php b/app/Http/Middleware/Role.php index 43f488d..4b2de90 100644 --- a/app/Http/Middleware/Role.php +++ b/app/Http/Middleware/Role.php @@ -4,6 +4,11 @@ namespace App\Http\Middleware; use Closure; +/** + * Role Middleware. + * + * @author Nafies Luthfi + */ class Role { /** diff --git a/app/Providers/OptionServiceProvider.php b/app/Providers/OptionServiceProvider.php index bc620f4..1134096 100644 --- a/app/Providers/OptionServiceProvider.php +++ b/app/Providers/OptionServiceProvider.php @@ -2,9 +2,14 @@ namespace App\Providers; -use Illuminate\Support\ServiceProvider; use App\Services\Option; +use Illuminate\Support\ServiceProvider; +/** + * Option Service Provider. + * + * @author Nafies Luthfi + */ class OptionServiceProvider extends ServiceProvider { /** diff --git a/app/Queries/AdminDashboardQuery.php b/app/Queries/AdminDashboardQuery.php index 2d69ee0..0b8f3b2 100644 --- a/app/Queries/AdminDashboardQuery.php +++ b/app/Queries/AdminDashboardQuery.php @@ -9,7 +9,7 @@ use App\Entities\Subscriptions\Subscription; use Carbon\Carbon; /** - * AdminDashboardQuery + * Admin Dashboard Query. * * @author Nafies Luthfi */ diff --git a/resources/lang/id/invoice.php b/resources/lang/id/invoice.php index 06d5b48..e12297d 100644 --- a/resources/lang/id/invoice.php +++ b/resources/lang/id/invoice.php @@ -6,26 +6,32 @@ return [ 'list' => 'Daftar Invoice', 'search' => 'Cari Invoice', 'detail' => 'Detail Invoice', - 'not_found' => 'Invoice tidak ditemukan', + 'not_found' => 'Invoice tidak ditemukan.', 'empty' => 'Belum ada Invoice', 'back_to_index' => 'Kembali ke daftar Invoice', - 'draft_not_found' => 'Draft Invoice tidak ditemukan', + 'draft_list' => 'List Draft Invoice', + 'draft_list_empty' => 'Draft Invoice kosong.', + 'draft_not_found' => 'Draft Invoice tidak ditemukan.', // Actions - 'proccess' => 'Proses Invoice', - 'item_list_empty' => 'List Item masih kosong.', - 'create' => 'Input Invoice Baru', - 'created' => 'Input Invoice baru telah berhasil.', - 'show' => 'Detail Invoice', - 'edit' => 'Edit Invoice', - 'update' => 'Update Invoice', - 'updated' => 'Update data Invoice telah berhasil.', - 'delete' => 'Hapus Invoice', - 'delete_confirm' => 'Anda yakin akan menghapus Invoice ini?', - 'deleted' => 'Hapus data Invoice telah berhasil.', - 'undeleted' => 'Data Invoice gagal dihapus.', - 'undeleteable' => 'Data Invoice tidak dapat dihapus.', - 'print' => 'Cetak Invoice', + 'proccess' => 'Proses Invoice', + 'item_list_empty' => 'List Item masih kosong.', + 'create' => 'Input Invoice Baru', + 'save' => 'Simpan Invoice', + 'created' => 'Input Invoice baru telah berhasil.', + 'show' => 'Detail Invoice', + 'edit' => 'Edit Invoice', + 'update' => 'Update Invoice', + 'updated' => 'Update data Invoice telah berhasil.', + 'delete' => 'Hapus Invoice', + 'delete_confirm' => 'Anda yakin akan menghapus Invoice ini?', + 'deleted' => 'Hapus data Invoice telah berhasil.', + 'undeleted' => 'Data Invoice gagal dihapus.', + 'undeleteable' => 'Data Invoice tidak dapat dihapus.', + 'print' => 'Cetak Invoice', + 'add-item' => 'Tambah Item', + 'item_added' => 'Item berhasil ditambahkan.', + 'confirm_instruction' => 'Silakan periksa rincian di bawah ini, jika belum sesuai, silakan klik kembali.', // Attributes 'number' => 'No. Invoice', @@ -34,6 +40,7 @@ return [ 'items' => 'Item Invoice', 'notes' => 'Catatan', 'amount' => 'Tagihan', + 'total' => 'Total Tagihan', 'customer' => 'Customer', 'item_description' => 'Deskripsi', 'item_amount' => 'Biaya', diff --git a/resources/views/invoice-drafts/index.blade.php b/resources/views/invoice-drafts/index.blade.php new file mode 100644 index 0000000..d9118e0 --- /dev/null +++ b/resources/views/invoice-drafts/index.blade.php @@ -0,0 +1,37 @@ +@extends('layouts.app') + +@section('title', 'Entry Invoice') + +@section('content') +

+
+ {!! FormField::formButton(['route' => 'invoice-drafts.create'], trans('invoice.create'), [ + 'class' => 'btn btn-default', + 'name' => 'create-invoice-draft', + 'id' => 'invoice-draft-create-button' + ] ) !!} +
+ {{ trans('invoice.draft_list') }} +

+ + +@includeWhen(! InvoiceDraftCollection::isEmpty(), 'invoice-drafts.partials.invoice-draft-tabs') +@if ($draft) + @if (Request::get('action') == 'confirm') + @include('invoice-drafts.partials.draft-confirm') + @else +
+
@include('invoice-drafts.partials.draft-item-list')
+
@include('invoice-drafts.partials.form-draft-detail')
+
+ @endif +@else + {{ trans('invoice.draft_list_empty') }} + {!! FormField::formButton(['route' => 'invoice-drafts.create'], trans('invoice.create'), [ + 'id' => 'invoice-draft-create-button', + 'name' => 'create-invoice-draft', + 'class' => 'btn btn-link', + 'style' => 'padding:0px', + ]) !!} +@endif +@endsection \ No newline at end of file diff --git a/resources/views/invoices/partials/draft-confirm.blade.php b/resources/views/invoice-drafts/partials/draft-confirm.blade.php similarity index 52% rename from resources/views/invoices/partials/draft-confirm.blade.php rename to resources/views/invoice-drafts/partials/draft-confirm.blade.php index d7d0350..c0e2c11 100644 --- a/resources/views/invoices/partials/draft-confirm.blade.php +++ b/resources/views/invoice-drafts/partials/draft-confirm.blade.php @@ -1,21 +1,44 @@ -
+
+
+
+

{{ trans('invoice.detail') }}

+ + + + + + + + + +
{{ trans('invoice.project') }} + {{ App\Entities\Projects\Project::findOrFail($draft->projectId)->name }} +
{{ trans('invoice.total') }}{{ formatRp($draft->getTotal()) }}
{{ trans('invoice.notes') }}{{ $draft->notes }}
+ +
+
-

{{ trans('invoice.confirm') }}

+

{{ trans('invoice.items') }}

- - - + + + @forelse($draft->items() as $key => $item) - + @empty @@ -23,7 +46,7 @@ - + @@ -31,29 +54,4 @@ -
-
-

{{ trans('invoice.detail') }}

-
-
#DeskripsiBiaya{{ trans('app.table_no') }}{{ trans('invoice.item_description') }}{{ trans('invoice.item_amount') }}
{{ $key + 1 }}{{ $item->description }}{!! nl2br($item->description) !!} {{ formatRp($item->amount) }}
{{ trans('invoice.total') }} :{{ trans('invoice.total') }} : {{ formatRp($draft->getTotal()) }}
- - - - - - - - -
{{ trans('invoice.project') }} - {{ App\Entities\Projects\Project::findOrFail($draft->projectId)->name }} -
{{ trans('invoice.total') }}{{ formatRp($draft->getTotal()) }}
{{ trans('invoice.notes') }}{{ $draft->notes }}
-
- -
-
-
\ No newline at end of file +
diff --git a/resources/views/invoice-drafts/partials/draft-item-list.blade.php b/resources/views/invoice-drafts/partials/draft-item-list.blade.php new file mode 100644 index 0000000..7bf45fd --- /dev/null +++ b/resources/views/invoice-drafts/partials/draft-item-list.blade.php @@ -0,0 +1,78 @@ +
+
+

+ {{ trans('invoice.items') }} + ({{ $draft->getItemsCount() }} Item) +

+
+ + + + + + + + + + + + @foreach($draft->items() as $key => $item) + + + + {{ Form::open(['route' => ['invoice-drafts.update-draft-item', $draft->draftKey], 'method' => 'patch']) }} + {{ Form::hidden('item_key', $key) }} + + + {{ Form::close() }} + + + @endforeach + + + + + + {{ Form::open(['route' => ['invoice-drafts.add-draft-item', $draft->draftKey]]) }} + + + + {{ Form::close() }} + + + + + + + + + +
#DeskripsiBiayaAction
{{ $no }} + {!! FormField::textarea( + 'description', + ['id' => 'description-'.$key, 'value' => $item->description, 'label' => false] + ) !!} + + {!! FormField::price( + 'amount', + ['id' => 'amount-'.$key, 'value' => $item->amount, 'label' => false] + ) !!} + {{ Form::submit('Update', ['id' => 'update-item-'.$key, 'class' => 'btn btn-success btn-xs pull-right']) }} + + {!! FormField::delete([ + 'route' => ['invoice-drafts.remove-draft-item', $draft->draftKey], + 'onsubmit' => 'Yakin ingin menghapus Item ini?', + 'class' => '', + ], 'x', ['id' => 'remove-item-'.$key, 'class' => 'btn btn-danger btn-xs show-on-hover','title' => 'Hapus item ini'], ['item_index' => $key]) !!} +
Tambah Item Invoice
  + {!! FormField::textarea( + 'description', + ['id' => 'description', 'label' => false, 'placeholder' => 'Deskripsi Item'] + ) !!} + + {!! FormField::price( + 'amount', + ['id' => 'amount', 'label' => false, 'placeholder' => 'Biaya Item'] + ) !!} + {{ Form::submit('add-item', ['class' => 'btn btn-primary']) }}
{{ trans('invoice.amount') }} :{{ formatRp($draft->getTotal()) }}
+
\ No newline at end of file diff --git a/resources/views/invoice-drafts/partials/form-draft-detail.blade.php b/resources/views/invoice-drafts/partials/form-draft-detail.blade.php new file mode 100644 index 0000000..d228e99 --- /dev/null +++ b/resources/views/invoice-drafts/partials/form-draft-detail.blade.php @@ -0,0 +1,16 @@ +
+

{{ trans('invoice.detail') }}

+ {{ Form::open(['route' => ['invoice-drafts.draft-proccess', $draft->draftKey], 'method' => 'patch']) }} +
+ {!! FormField::select('project_id', $projects, [ + 'label' => trans('invoice.project'), + 'value' => $draft->projectId, + 'required' => true, + ] ) !!} + {!! FormField::textarea('notes', ['label' => trans('invoice.notes'), 'value' => $draft->notes]) !!} +
+ + {{ Form::close() }} +
diff --git a/resources/views/invoices/partials/invoice-draft-tabs.blade.php b/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php similarity index 57% rename from resources/views/invoices/partials/invoice-draft-tabs.blade.php rename to resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php index 95efe9f..6ad0291 100644 --- a/resources/views/invoices/partials/invoice-draft-tabs.blade.php +++ b/resources/views/invoice-drafts/partials/invoice-draft-tabs.blade.php @@ -1,15 +1,15 @@ - +