From a793100f79ef65faaf67d0c48d05ba5edaeac732 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 17 Jun 2019 10:15:42 +1000 Subject: [PATCH] Working on Company CRUD --- app/Factory/CompanyFactory.php | 35 +++++++++++ app/Http/Controllers/CompanyController.php | 47 +++++++++++---- .../Requests/Company/CreateCompanyRequest.php | 9 --- ...mpanyRequest => DestroyCompanyRequest.php} | 0 .../Requests/Company/StoreCompanyRequest.php | 2 +- app/Models/Company.php | 5 +- app/Repositories/CompanyRepository.php | 59 +++++++++++++++++++ routes/api.php | 2 + 8 files changed, 134 insertions(+), 25 deletions(-) create mode 100644 app/Factory/CompanyFactory.php rename app/Http/Requests/Company/{DestroyCompanyRequest => DestroyCompanyRequest.php} (100%) create mode 100644 app/Repositories/CompanyRepository.php diff --git a/app/Factory/CompanyFactory.php b/app/Factory/CompanyFactory.php new file mode 100644 index 000000000000..3cdd1e9ac2a4 --- /dev/null +++ b/app/Factory/CompanyFactory.php @@ -0,0 +1,35 @@ +name = ''; + $company->account_id = $account_id; + $company->company_key = $this->createHash(); + $company->settings = new CompanySettings(CompanySettings::defaults()); + $company->db = config('database.default'); + + return $company; + + } +} \ No newline at end of file diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php index 8a7a7275d509..bc8f358f2705 100644 --- a/app/Http/Controllers/CompanyController.php +++ b/app/Http/Controllers/CompanyController.php @@ -12,11 +12,16 @@ namespace App\Http\Controllers; use App\Http\Requests\Company\CreateCompanyRequest; +use App\Http\Requests\Company\DestroyCompanyRequest; +use App\Http\Requests\Company\EditCompanyRequest; use App\Http\Requests\Company\ShowCompanyRequest; +use App\Http\Requests\Company\StoreCompanyRequest; +use App\Http\Requests\Company\UpdateCompanyRequest; use App\Http\Requests\SignupRequest; use App\Jobs\Company\CreateCompany; use App\Jobs\RegisterNewAccount; use App\Models\Company; +use App\Repositories\CompanyRepository; use App\Transformers\CompanyTransformer; use App\Utils\Traits\MakesHash; use Illuminate\Foundation\Bus\DispatchesJobs; @@ -37,14 +42,17 @@ class CompanyController extends BaseController protected $entity_transformer = CompanyTransformer::class; + protected $company_repo; /** * CompanyController constructor. */ - public function __construct() + public function __construct(CompanyRepository $company_repo) { parent::__construct(); + $this->company_repo = $company_repo; + } /** @@ -54,7 +62,10 @@ class CompanyController extends BaseController */ public function index() { -// return view('signup.index'); + + $companies = Company::whereAccountId(auth()->user()->id); + + return $this->listResponse($companies); } @@ -63,9 +74,12 @@ class CompanyController extends BaseController * * @return \Illuminate\Http\Response */ - public function create() + public function create(CreateCompanyRequest $request) { - // + + $company = CompanyFactory::create(auth()->user()->company()->account->id); + + return $this->itemResponse($company); } /** @@ -74,7 +88,7 @@ class CompanyController extends BaseController * @param \App\Http\Requests\SignupRequest $request * @return \Illuminate\Http\Response */ - public function store(CreateCompanyRequest $request) + public function store(StoreCompanyRequest $request) { $company = CreateCompany::dispatchNow($request, auth()->user()->company()->account); @@ -91,7 +105,9 @@ class CompanyController extends BaseController */ public function show(ShowCompanyRequest $request, Company $company) { - // + + return $this->itemResponse($company); + } /** @@ -100,9 +116,11 @@ class CompanyController extends BaseController * @param int $id * @return \Illuminate\Http\Response */ - public function edit($id) + public function edit(EditCompanyRequest $request, Company $company) { - // + + return $this->itemResponse($company); + } /** @@ -112,9 +130,11 @@ class CompanyController extends BaseController * @param int $id * @return \Illuminate\Http\Response */ - public function update(Request $request, $id) + public function update(UpdateCompanyRequest $request, Company $company) { - // + $company = $this->company_repo->save($request->all(), $company); + + return $this->itemResponse($company); } /** @@ -123,8 +143,11 @@ class CompanyController extends BaseController * @param int $id * @return \Illuminate\Http\Response */ - public function destroy($id) + public function destroy(DestroyCompanyRequest $request, Company $company) { - // + + $company->delete(); + + return response()->json([], 200); } } diff --git a/app/Http/Requests/Company/CreateCompanyRequest.php b/app/Http/Requests/Company/CreateCompanyRequest.php index 08131c85b864..88471b9b7d6e 100644 --- a/app/Http/Requests/Company/CreateCompanyRequest.php +++ b/app/Http/Requests/Company/CreateCompanyRequest.php @@ -29,13 +29,4 @@ class CreateCompanyRequest extends Request } - public function rules() - { - - return [ - 'name' => 'required' - ]; - - } - } \ No newline at end of file diff --git a/app/Http/Requests/Company/DestroyCompanyRequest b/app/Http/Requests/Company/DestroyCompanyRequest.php similarity index 100% rename from app/Http/Requests/Company/DestroyCompanyRequest rename to app/Http/Requests/Company/DestroyCompanyRequest.php diff --git a/app/Http/Requests/Company/StoreCompanyRequest.php b/app/Http/Requests/Company/StoreCompanyRequest.php index 8c2a26f9bc98..26b97578e4eb 100644 --- a/app/Http/Requests/Company/StoreCompanyRequest.php +++ b/app/Http/Requests/Company/StoreCompanyRequest.php @@ -33,7 +33,7 @@ class StoreCompanyRequest extends Request //$this->sanitize(); return [ - // 'client_id' => 'required', + 'name' => 'required', // 'documents' => 'mimes:png,ai,svg,jpeg,tiff,pdf,gif,psd,txt,doc,xls,ppt,xlsx,docx,pptx', ]; } diff --git a/app/Models/Company.php b/app/Models/Company.php index 8908b550cc25..ef2bac84a171 100644 --- a/app/Models/Company.php +++ b/app/Models/Company.php @@ -40,9 +40,8 @@ class Company extends BaseModel protected $presenter = 'App\Models\Presenters\CompanyPresenter'; - protected $guarded = [ - 'id', - 'company_id' + protected $fillable = [ + 'name', ]; protected $appends = [ diff --git a/app/Repositories/CompanyRepository.php b/app/Repositories/CompanyRepository.php new file mode 100644 index 000000000000..3d1759ce93bc --- /dev/null +++ b/app/Repositories/CompanyRepository.php @@ -0,0 +1,59 @@ +fill($data); + + $company->save(); + + return $company; + + } + +} \ No newline at end of file diff --git a/routes/api.php b/routes/api.php index c28bf536c591..cfd869aba488 100644 --- a/routes/api.php +++ b/routes/api.php @@ -65,6 +65,8 @@ Route::group(['middleware' => ['db','api_secret_check','token_auth'], 'prefix' = Route::post('users/bulk', 'UserController@bulk')->name('users.bulk'); + Route::resource('companies', 'CompanyController'); // name = (companies. index / create / show / update / destroy / edit + /* Route::resource('tasks', 'TaskController'); // name = (tasks. index / create / show / update / destroy / edit