From de040a4455842680d0b22117332858260ad33915 Mon Sep 17 00:00:00 2001 From: Hillel Coren Date: Wed, 31 Jan 2018 13:51:18 +0200 Subject: [PATCH] Working on proposals --- .../ProposalCategoryController.php | 4 +- .../Controllers/ProposalSnippetController.php | 7 +- .../ProposalTemplateController.php | 7 +- app/Models/EntityModel.php | 2 +- app/Ninja/Repositories/AccountRepository.php | 1 + resources/lang/en/texts.php | 9 +- resources/views/list.blade.php | 12 +- .../views/proposals/categories/edit.blade.php | 7 ++ .../views/proposals/snippets/edit.blade.php | 101 ++++++++++++++++ .../views/proposals/templates/edit.blade.php | 110 ++++++++++++++++++ routes/web.php | 20 ++-- 11 files changed, 251 insertions(+), 29 deletions(-) create mode 100644 resources/views/proposals/categories/edit.blade.php create mode 100644 resources/views/proposals/snippets/edit.blade.php create mode 100644 resources/views/proposals/templates/edit.blade.php diff --git a/app/Http/Controllers/ProposalCategoryController.php b/app/Http/Controllers/ProposalCategoryController.php index 556b12c47e08..034aea230c19 100644 --- a/app/Http/Controllers/ProposalCategoryController.php +++ b/app/Http/Controllers/ProposalCategoryController.php @@ -62,7 +62,7 @@ class ProposalCategoryController extends BaseController 'quotePublicId' => $request->quote_id, ]; - return View::make('proposal_categories.edit', $data); + return View::make('proposals/categories/edit', $data); } public function edit(ProposalCategoryRequest $request) @@ -79,7 +79,7 @@ class ProposalCategoryController extends BaseController 'clientPublicId' => $proposalCategory->client ? $proposalCategory->client->public_id : null, ]; - return View::make('proposal_categories.edit', $data); + return View::make('proposals/categories.edit', $data); } public function store(CreateProposalCategoryRequest $request) diff --git a/app/Http/Controllers/ProposalSnippetController.php b/app/Http/Controllers/ProposalSnippetController.php index c61547928cb3..c92e6f5e7790 100644 --- a/app/Http/Controllers/ProposalSnippetController.php +++ b/app/Http/Controllers/ProposalSnippetController.php @@ -7,7 +7,6 @@ use App\Http\Requests\ProposalSnippetRequest; use App\Http\Requests\UpdateProposalSnippetRequest; use App\Models\Invoice; use App\Models\ProposalSnippet; -use App\Models\ProposalSnippetTemplate; use App\Ninja\Datatables\ProposalSnippetDatatable; use App\Ninja\Repositories\ProposalSnippetRepository; use App\Services\ProposalSnippetService; @@ -59,11 +58,11 @@ class ProposalSnippetController extends BaseController 'url' => 'proposal_snippets', 'title' => trans('texts.new_proposal_snippet'), 'quotes' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), - 'templates' => ProposalSnippetTemplate::scope()->orderBy('name')->get(), + 'templates' => ProposalSnippet::scope()->orderBy('name')->get(), 'quotePublicId' => $request->quote_id, ]; - return View::make('proposal_snippets.edit', $data); + return View::make('proposals/snippets/edit', $data); } public function edit(ProposalSnippetRequest $request) @@ -80,7 +79,7 @@ class ProposalSnippetController extends BaseController 'clientPublicId' => $proposalSnippet->client ? $proposalSnippet->client->public_id : null, ]; - return View::make('proposal_snippets.edit', $data); + return View::make('proposals/snippets/edit', $data); } public function store(CreateProposalSnippetRequest $request) diff --git a/app/Http/Controllers/ProposalTemplateController.php b/app/Http/Controllers/ProposalTemplateController.php index c7b792c57f79..dacf38ee7fa3 100644 --- a/app/Http/Controllers/ProposalTemplateController.php +++ b/app/Http/Controllers/ProposalTemplateController.php @@ -7,7 +7,6 @@ use App\Http\Requests\ProposalTemplateRequest; use App\Http\Requests\UpdateProposalTemplateRequest; use App\Models\Invoice; use App\Models\ProposalTemplate; -use App\Models\ProposalTemplateTemplate; use App\Ninja\Datatables\ProposalTemplateDatatable; use App\Ninja\Repositories\ProposalTemplateRepository; use App\Services\ProposalTemplateService; @@ -59,11 +58,11 @@ class ProposalTemplateController extends BaseController 'url' => 'proposal_templates', 'title' => trans('texts.new_proposal_template'), 'quotes' => Invoice::scope()->with('client.contacts')->quotes()->orderBy('id')->get(), - 'templates' => ProposalTemplateTemplate::scope()->orderBy('name')->get(), + 'templates' => ProposalTemplate::scope()->orderBy('name')->get(), 'quotePublicId' => $request->quote_id, ]; - return View::make('proposal_templates.edit', $data); + return View::make('proposals/templates/edit', $data); } public function edit(ProposalTemplateRequest $request) @@ -80,7 +79,7 @@ class ProposalTemplateController extends BaseController 'clientPublicId' => $proposalTemplate->client ? $proposalTemplate->client->public_id : null, ]; - return View::make('proposal_templates.edit', $data); + return View::make('proposals/templates/edit', $data); } public function store(CreateProposalTemplateRequest $request) diff --git a/app/Models/EntityModel.php b/app/Models/EntityModel.php index e6048243c64d..f0dde93ce33e 100644 --- a/app/Models/EntityModel.php +++ b/app/Models/EntityModel.php @@ -321,7 +321,7 @@ class EntityModel extends Eloquent 'recurring_expenses' => 'files-o', 'credits' => 'credit-card', 'quotes' => 'file-text-o', - 'proposals' => 'tasks', + 'proposals' => 'th-large', 'tasks' => 'clock-o', 'expenses' => 'file-image-o', 'vendors' => 'building', diff --git a/app/Ninja/Repositories/AccountRepository.php b/app/Ninja/Repositories/AccountRepository.php index e0541516c381..9a09411316d2 100644 --- a/app/Ninja/Repositories/AccountRepository.php +++ b/app/Ninja/Repositories/AccountRepository.php @@ -225,6 +225,7 @@ class AccountRepository ENTITY_PAYMENT, ENTITY_CREDIT, ENTITY_PROJECT, + ENTITY_PROPOSAL, ]; foreach ($entityTypes as $entityType) { diff --git a/resources/lang/en/texts.php b/resources/lang/en/texts.php index ffe3f03c97bd..566614562942 100644 --- a/resources/lang/en/texts.php +++ b/resources/lang/en/texts.php @@ -2662,6 +2662,7 @@ $LANG = array( 'proposal' => 'Proposal', 'proposals' => 'Proposals', + 'list_proposals' => 'List Proposals', 'new_proposal' => 'New Proposal', 'edit_proposal' => 'Edit Proposal', 'archive_proposal' => 'Archive Proposal', @@ -2674,6 +2675,8 @@ $LANG = array( 'archived_proposals' => 'Successfully archived :count proposals', 'deleted_proposals' => 'Successfully archived :count proposals', 'restored_proposal' => 'Successfully restored proposal', + 'snippet' => 'Snippet', + 'snippets' => 'Snippets', 'proposal_snippet' => 'Snippet', 'proposal_snippets' => 'Snippets', 'new_proposal_snippet' => 'New Snippet', @@ -2688,6 +2691,8 @@ $LANG = array( 'archived_proposal_snippets' => 'Successfully archived :count snippets', 'deleted_proposal_snippets' => 'Successfully archived :count snippets', 'restored_proposal_snippet' => 'Successfully restored snippet', + 'template' => 'Template', + 'templates' => 'Templates', 'proposal_template' => 'Template', 'proposal_templates' => 'Templates', 'new_proposal_template' => 'New Template', @@ -2702,8 +2707,8 @@ $LANG = array( 'archived_proposal_templates' => 'Successfully archived :count temlates', 'deleted_proposal_templates' => 'Successfully archived :count temlates', 'restored_proposal_template' => 'Successfully restored temlate', - 'proposal_category' => 'Proposal Category', - 'proposal_categories' => 'Proposal Categories', + 'proposal_category' => 'Category', + 'proposal_categories' => 'Categories', 'new_proposal_category' => 'New Category', 'edit_proposal_category' => 'Edit Category', 'archive_proposal_category' => 'Archive Category', diff --git a/resources/views/list.blade.php b/resources/views/list.blade.php index 9c9fd12a21d6..0bb194461a99 100644 --- a/resources/views/list.blade.php +++ b/resources/views/list.blade.php @@ -47,16 +47,16 @@ class="form-control pull-left" placeholder="{{ trans('texts.filter') }}" value="{{ Input::get('filter') }}"/> @if ($entityType == ENTITY_PROPOSAL) - {!! DropdownButton::normal(trans('texts.templates')) + {!! DropdownButton::normal(trans('texts.proposal_templates')) ->withAttributes(['class'=>'templatesDropdown']) ->withContents([ - ['label' => trans('texts.new_template'), 'url' => url('/proposal_templates/create')], + ['label' => trans('texts.new_proposal_template'), 'url' => url('/proposal_templates/create')], ] )->split() !!} - {!! DropdownButton::normal(trans('texts.snippets')) + {!! DropdownButton::normal(trans('texts.proposal_snippets')) ->withAttributes(['class'=>'snippetsDropdown']) ->withContents([ - ['label' => trans('texts.new_snippet'), 'url' => url('/proposal_snippets/create')], + ['label' => trans('texts.new_proposal_snippet'), 'url' => url('/proposal_snippets/create')], ] )->split() !!} @elseif ($entityType == ENTITY_PROPOSAL_SNIPPET) - {!! DropdownButton::normal(trans('texts.categories')) + {!! DropdownButton::normal(trans('texts.proposal_categories')) ->withAttributes(['class'=>'categoriesDropdown']) ->withContents([ - ['label' => trans('texts.new_category'), 'url' => url('/proposal_categories/create')], + ['label' => trans('texts.new_proposal_category'), 'url' => url('/proposal_categories/create')], ] )->split() !!} + + + + +@stop + +@section('content') + + {!! Former::open() !!} + +
+
+
+
+
+
+ {!! Former::select('quote_id')->addOption('', '') + ->label(trans('texts.quote')) + ->addGroupClass('quote-select') !!} + +
+
+ {!! Former::select('template_id')->addOption('', '') + ->label(trans('texts.template')) + ->addGroupClass('template-select') !!} + +
+
+
+
+
+
+ +
+ {!! Button::normal(trans('texts.cancel')) + ->appendIcon(Icon::create('remove-circle')) + ->asLinkTo(HTMLUtils::previousUrl('/proposals')) !!} + + {!! Button::success(trans("texts.save")) + ->withAttributes(array('id' => 'saveButton', 'onclick' => 'onSaveClick()')) + ->appendIcon(Icon::create('floppy-disk')) !!} +
+ + {!! Former::close() !!} + +
+ + + +@stop diff --git a/resources/views/proposals/templates/edit.blade.php b/resources/views/proposals/templates/edit.blade.php new file mode 100644 index 000000000000..a56ad361c298 --- /dev/null +++ b/resources/views/proposals/templates/edit.blade.php @@ -0,0 +1,110 @@ +@extends('header') + +@section('head') + @parent + + + + + + +@stop + +@section('content') + + {!! Former::open() !!} + +
+
+
+
+
+
+ {!! Former::select('quote_id')->addOption('', '') + ->label(trans('texts.quote')) + ->addGroupClass('quote-select') !!} + +
+
+ {!! Former::select('template_id')->addOption('', '') + ->label(trans('texts.template')) + ->addGroupClass('template-select') !!} + +
+
+
+
+
+
+ +
+ {!! Button::normal(trans('texts.cancel')) + ->appendIcon(Icon::create('remove-circle')) + ->asLinkTo(HTMLUtils::previousUrl('/proposals')) !!} + + {!! Button::success(trans("texts.save")) + ->withAttributes(array('id' => 'saveButton', 'onclick' => 'onSaveClick()')) + ->appendIcon(Icon::create('floppy-disk')) !!} +
+ + {!! Former::close() !!} + +
+ + + +@stop diff --git a/routes/web.php b/routes/web.php index cc0aeabdf3e1..961d52dc103d 100644 --- a/routes/web.php +++ b/routes/web.php @@ -205,21 +205,21 @@ Route::group(['middleware' => ['lookup:user', 'auth:user']], function () { Route::get('api/quotes/{client_id?}', 'QuoteController@getDatatable'); Route::post('quotes/bulk', 'QuoteController@bulk'); - Route::get('proposals/create/{quote_id?}', 'ProposalController@create'); - Route::resource('proposals', 'ProposalController'); - Route::get('api/proposals', 'ProposalController@getDatatable'); - - Route::get('proposal_templates/create', 'ProposalTemplateController@create'); - Route::resource('proposal_templates', 'ProposalTemplateController'); - Route::get('api/proposal_templates', 'ProposalTemplateController@getDatatable'); + Route::get('proposal_categories/create', 'ProposalCategoryController@create'); + Route::resource('proposal_categories', 'ProposalCategoryController'); + Route::get('api/proposal_categories', 'ProposalCategoryController@getDatatable'); Route::get('proposal_snippets/create', 'ProposalSnippetController@create'); Route::resource('proposal_snippets', 'ProposalSnippetController'); Route::get('api/proposal_snippets', 'ProposalSnippetController@getDatatable'); - Route::get('proposal_categories/create', 'ProposalCategoryController@create'); - Route::resource('proposal_categories', 'ProposalCategoryController'); - Route::get('api/proposal_categories', 'ProposalCategoryController@getDatatable'); + Route::get('proposal_templates/create', 'ProposalTemplateController@create'); + Route::resource('proposal_templates', 'ProposalTemplateController'); + Route::get('api/proposal_templates', 'ProposalTemplateController@getDatatable'); + + Route::get('proposals/create/{quote_id?}', 'ProposalController@create'); + Route::resource('proposals', 'ProposalController'); + Route::get('api/proposals', 'ProposalController@getDatatable'); Route::resource('payments', 'PaymentController'); Route::get('payments/create/{client_id?}/{invoice_id?}', 'PaymentController@create');