diff --git a/app/Factory/InvoiceFactory.php b/app/Factory/InvoiceFactory.php index 76f876788205..b378ffbb30ea 100644 --- a/app/Factory/InvoiceFactory.php +++ b/app/Factory/InvoiceFactory.php @@ -6,7 +6,7 @@ use App\Models\Invoice; class InvoiceFactory { - public static function create() :\stdClass + public static function create(int $company_id, int $user_id) :\stdClass { $invoice = new \stdClass; $invoice->invoice_status_id = Invoice::STATUS_DRAFT; @@ -31,6 +31,8 @@ class InvoiceFactory $invoice->amount = 0; $invoice->balance = 0; $invoice->partial = 0; + $invoice->user_id = $user_id; + $invoice->company_id = $company_id; return $invoice; } diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php index 6fbbed63d761..976514b5f07c 100644 --- a/app/Http/Controllers/InvoiceController.php +++ b/app/Http/Controllers/InvoiceController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers; +use App\Factory\InvoiceFactory; use App\Models\Invoice; use App\Utils\Traits\MakesHash; use Illuminate\Http\Request; @@ -57,7 +58,9 @@ class InvoiceController extends BaseController */ public function create() { - // + $invoice = InvoiceFactory::create(auth()->user()->company()->id, auth()->user()->id); + + return $this->itemResponse($invoice); } /** diff --git a/app/Http/Requests/Client/CreateClientRequest.php b/app/Http/Requests/Client/CreateClientRequest.php index 4c4c11715b6d..41e8f2574f35 100644 --- a/app/Http/Requests/Client/CreateClientRequest.php +++ b/app/Http/Requests/Client/CreateClientRequest.php @@ -15,7 +15,7 @@ class CreateClientRequest extends Request public function authorize() : bool { - return auth()->user()->can('create', Client::Class); + return auth()->user()->can('create', Client::class); } } \ No newline at end of file diff --git a/app/Http/Requests/Invoice/CreateInvoiceRequest.php b/app/Http/Requests/Invoice/CreateInvoiceRequest.php new file mode 100644 index 000000000000..78a730f1835c --- /dev/null +++ b/app/Http/Requests/Invoice/CreateInvoiceRequest.php @@ -0,0 +1,21 @@ +user()->can('create', Invoice::class); + } + +} \ No newline at end of file diff --git a/app/Http/Requests/Invoice/EditInvoiceRequest.php b/app/Http/Requests/Invoice/EditInvoiceRequest.php new file mode 100644 index 000000000000..a3359226f7cd --- /dev/null +++ b/app/Http/Requests/Invoice/EditInvoiceRequest.php @@ -0,0 +1,32 @@ +user()->can('edit', $this->invoice); + } + + public function sanitize() + { + $input = $this->all(); + + //$input['id'] = $this->encodePrimaryKey($input['id']); + + //$this->replace($input); + + return $this->all(); + } + +} \ No newline at end of file diff --git a/app/Http/Requests/Invoice/ShowInvoiceRequest.php b/app/Http/Requests/Invoice/ShowInvoiceRequest.php new file mode 100644 index 000000000000..3808c46ed9ee --- /dev/null +++ b/app/Http/Requests/Invoice/ShowInvoiceRequest.php @@ -0,0 +1,21 @@ +user()->can('view', $this->invoice); + } + +} \ No newline at end of file diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php new file mode 100644 index 000000000000..00d55bf215c0 --- /dev/null +++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php @@ -0,0 +1,33 @@ +user()->can('create', Invoice::class); + } + + public function rules() + { + + + } + + public function messages() + { + + } + + +} \ No newline at end of file diff --git a/app/Http/Requests/Invoice/UpdateInvoiceRequest.php b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php new file mode 100644 index 000000000000..9d2910de5e50 --- /dev/null +++ b/app/Http/Requests/Invoice/UpdateInvoiceRequest.php @@ -0,0 +1,34 @@ +user(); //todo permissions + } + + public function rules() + { + + } + + public function messages() + { + + } + + +} \ No newline at end of file diff --git a/app/Policies/InvoicePolicy.php b/app/Policies/InvoicePolicy.php new file mode 100644 index 000000000000..eeec3ed81338 --- /dev/null +++ b/app/Policies/InvoicePolicy.php @@ -0,0 +1,25 @@ +isAdmin() || $user->hasPermission('create_invoice'); + } + +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php index c836e8e663f0..eb67cbeaabb2 100644 --- a/app/Providers/AuthServiceProvider.php +++ b/app/Providers/AuthServiceProvider.php @@ -3,8 +3,10 @@ namespace App\Providers; use App\Models\Client; +use App\Models\Invoice; use App\Models\Product; use App\Policies\ClientPolicy; +use App\Policies\InvoicePolicy; use App\Policies\ProductPolicy; use Auth; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; @@ -20,6 +22,7 @@ class AuthServiceProvider extends ServiceProvider protected $policies = [ Client::class => ClientPolicy::class, Product::class => ProductPolicy::class, + Invoice::class => InvoicePolicy::class, ]; /**