diff --git a/app/Modules/Bitrix/Models/BitrixId.php b/app/Modules/Bitrix/Models/BitrixId.php index 3bc15c0..9c3ec0e 100644 --- a/app/Modules/Bitrix/Models/BitrixId.php +++ b/app/Modules/Bitrix/Models/BitrixId.php @@ -86,7 +86,6 @@ protected static function booted() break; } throw new \Exception('Error of bitrix identifier getter for ' . $bitrixId->bitrixable_type . ' with id ' . $bitrixId->bitrixable_id); - }); static::created(function (BitrixId $bitrixId) { diff --git a/app/Modules/Bitrix/Models/BitrixSender.php b/app/Modules/Bitrix/Models/BitrixSender.php index 96cb3ba..93fe307 100644 --- a/app/Modules/Bitrix/Models/BitrixSender.php +++ b/app/Modules/Bitrix/Models/BitrixSender.php @@ -38,9 +38,9 @@ public function send() $result = file_get_contents($this->url, false, $context); $result = json_decode($result, $associative = true); $this->resultData = $result; - if (array_key_exists('result', $result)) + if (is_array($this->resultData) && array_key_exists('result', $result)) { - return $result['result']; + return true; } else { diff --git a/app/Modules/Bitrix/Models/SendCompany.php b/app/Modules/Bitrix/Models/SendCompany.php index f1b5978..0afaec6 100644 --- a/app/Modules/Bitrix/Models/SendCompany.php +++ b/app/Modules/Bitrix/Models/SendCompany.php @@ -5,17 +5,21 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; -use Modules\Main\Models\Agent\Agent; -use Modules\Main\Models\Complex; +use Modules\Main\Models\Company\Company; class SendCompany extends BitrixSender { use HasFactory; - public function __construct(Agent $agent) + public function __construct(Company $company) { $this->data = [ - 'name' => $agent->user->name, - 'phones' => [$agent->user->phone], + 'name' => $company->name, + 'inn' => $company->inn, + 'email' => $company->email, + 'address' => $company->legal_address + //'phone' => $company->phone, + ]; + //dd($company); $this->url = 'https://b24alfa.pro/channels/lk/createCompany/'; } } diff --git a/app/Modules/Bitrix/Traits/Bitrixable.php b/app/Modules/Bitrix/Traits/Bitrixable.php index 6ee0a79..4afe4a4 100644 --- a/app/Modules/Bitrix/Traits/Bitrixable.php +++ b/app/Modules/Bitrix/Traits/Bitrixable.php @@ -48,8 +48,16 @@ protected static function create(array $attributes = []) $model = new static(); $model->fill($attributes); $model->save(); - $model->setBitrixId(); - return $model; + try + { + $model->setBitrixId(); + return $model; + } + catch (\Exception $e) + { + $model->delete(); + throw new \Exception('Error of bitrix identifier getter'); + } } public static function firstOrCreate($attributes = [], $values = []) diff --git a/app/Http/Controllers/Company/AgentsTableController.php b/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php similarity index 91% rename from app/Http/Controllers/Company/AgentsTableController.php rename to app/Modules/Main/Http/Controllers/Company/AgentsTableController.php index 69b6069..5794351 100644 --- a/app/Http/Controllers/Company/AgentsTableController.php +++ b/app/Modules/Main/Http/Controllers/Company/AgentsTableController.php @@ -1,6 +1,6 @@ withTrashed(); } - return view('company.agents.table', [ + return view('main::company.agents.table', [ 'agents' => $agents->get(), 'status' => $request->status, 'cities' => City::all() diff --git a/app/Http/Controllers/Company/ConfirmCompanyController.php b/app/Modules/Main/Http/Controllers/Company/ConfirmCompanyController.php similarity index 80% rename from app/Http/Controllers/Company/ConfirmCompanyController.php rename to app/Modules/Main/Http/Controllers/Company/ConfirmCompanyController.php index 4a987df..1bcdf49 100644 --- a/app/Http/Controllers/Company/ConfirmCompanyController.php +++ b/app/Modules/Main/Http/Controllers/Company/ConfirmCompanyController.php @@ -1,46 +1,46 @@ company_id); if ($company->secret == $request->secret) - { + { $company->status = $request->status; $company->save(); $user = User::where('email', $company->email); if ($user->count() == 1) - { + { $user = $user->first(); - } + } else - { + { $user = User::create([ - 'name' => $request->user_name, + 'name' => $request->user_name, 'email' => $company->email, 'phone' => $request->user_phone ]); $user->setForcedPassword(); - } + } CompanyAdmin::where('user_id', $user->id)->delete();//удаляю, если уже была админская учетка CompanyAdmin::create([ - 'user_id' => $user->id, + 'user_id' => $user->id, 'company_id' => $company->id ]); return true; - } - return false; } - } \ No newline at end of file + return false; + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Company/CreateAgentController.php b/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php similarity index 94% rename from app/Http/Controllers/Company/CreateAgentController.php rename to app/Modules/Main/Http/Controllers/Company/CreateAgentController.php index 1c41b73..affb227 100644 --- a/app/Http/Controllers/Company/CreateAgentController.php +++ b/app/Modules/Main/Http/Controllers/Company/CreateAgentController.php @@ -1,11 +1,11 @@ enum('type', CompanyType::class); $validated = $request->validate([ 'name' => 'required|max:255', @@ -33,23 +34,31 @@ public function __invoke(Request $request) ]); $data = $request->only('name', 'email', 'inn', 'legal_address', 'secret', 'status', 'type', 'phone', 'city_id'); - $company = Company::create($data); - if (!$company) + try { - return back()->withErrors(['msg' => 'Company creation error'])->withInput(); + $company = Company::create($data); + } + catch (\Exception $e) + { + if ($e->getMessage() == 'Error of bitrix identifier getter') + { + return back()->withErrors(['msg' => 'Не удалось отправить данные на проверку. Попробуйте позже'])->withInput(); + } + return back()->withErrors(['msg' => 'Не удалось создать агентство. Попробуйте позже'])->withInput(); + } $data['callback_url'] = route('company.status.update', [ 'company_id' => $company->id, 'secret' => $company->secret ]); - $companyConfirmByBitrix = new SendCompany($company->id, $data); + /*$companyConfirmByBitrix = new SendCompany($company->id, $data); if (!$sender = $companyConfirmByBitrix->send()) { $company->delete(); return back()->withErrors(['msg' => 'Error with bitrix sender'])->withInput(); - } - return view('company.created'); + }*/ + return view('main::company.created'); } } diff --git a/app/Http/Controllers/Company/CreateCompanyFormController.php b/app/Modules/Main/Http/Controllers/Company/CreateCompanyFormController.php similarity index 77% rename from app/Http/Controllers/Company/CreateCompanyFormController.php rename to app/Modules/Main/Http/Controllers/Company/CreateCompanyFormController.php index 9043ae7..e1c0c68 100644 --- a/app/Http/Controllers/Company/CreateCompanyFormController.php +++ b/app/Modules/Main/Http/Controllers/Company/CreateCompanyFormController.php @@ -1,12 +1,12 @@ city_id; } ; - return view('company.create', [ + return view('main::company.create', [ 'type' => $type, 'city_id' => $city_id, 'typesList' => CompanyType::cases(), diff --git a/app/Http/Controllers/Company/DeleteAgentController.php b/app/Modules/Main/Http/Controllers/Company/DeleteAgentController.php similarity index 80% rename from app/Http/Controllers/Company/DeleteAgentController.php rename to app/Modules/Main/Http/Controllers/Company/DeleteAgentController.php index d6aff9e..d5c5316 100644 --- a/app/Http/Controllers/Company/DeleteAgentController.php +++ b/app/Modules/Main/Http/Controllers/Company/DeleteAgentController.php @@ -1,11 +1,11 @@ get(); if ($company->type == CompanyType::SelfEmployer || $company->type == CompanyType::SoleProperty) { - return view('company.details.selfemp', [ + return view('main::company.details.selfemp', [ 'company' => $company, 'details' => $details ]); @@ -45,7 +45,7 @@ public function index($companyId = null) ; if ($company->type == CompanyType::Agency) { - return view('company.details.agency', [ + return view('main::company.details.agency', [ 'company' => $company, 'details' => $details ]); diff --git a/app/Http/Controllers/Company/ResetAgentPasswordController.php b/app/Modules/Main/Http/Controllers/Company/ResetAgentPasswordController.php similarity index 95% rename from app/Http/Controllers/Company/ResetAgentPasswordController.php rename to app/Modules/Main/Http/Controllers/Company/ResetAgentPasswordController.php index e9f01f6..e0a6f09 100644 --- a/app/Http/Controllers/Company/ResetAgentPasswordController.php +++ b/app/Modules/Main/Http/Controllers/Company/ResetAgentPasswordController.php @@ -1,6 +1,6 @@ belongsTo(City::class); } + + protected static function booted() + { + static::created(function (Company $company) + { + $details = new Details($company); + $details->create(); + }); + } } diff --git a/app/Modules/Main/Models/Company/Details.php b/app/Modules/Main/Models/Company/Details.php index e3a3c2d..07dc65e 100644 --- a/app/Modules/Main/Models/Company/Details.php +++ b/app/Modules/Main/Models/Company/Details.php @@ -17,6 +17,15 @@ public function __construct(Company $company) } public function get() + { + if (!$this->company->details) + { + $this->create(); + } + return $this->details = $this->company->details; + } + + public function create() { if (!$this->company->details) { diff --git a/app/Modules/Main/Routes/web.php b/app/Modules/Main/Routes/web.php index b9af2f2..c7ea765 100644 --- a/app/Modules/Main/Routes/web.php +++ b/app/Modules/Main/Routes/web.php @@ -3,11 +3,37 @@ use Illuminate\Support\Facades\Route; use Modules\Main\Http\Controllers\MainController; -Route::middleware(['auth'])->group(function() { - +//Company +Route::get('/company/create', Modules\Main\Http\Controllers\Company\CreateCompanyFormController::class)->name('company.form.create'); +Route::post('/company/create', Modules\Main\Http\Controllers\Company\CreateCompanyController::class)->name('company.create'); +Route::post('/company/status/update', Modules\Main\Http\Controllers\Company\ConfirmCompanyController::class)->name('company.status.update'); + +Route::middleware(['auth'])->group(function () +{ + Route::get('/main', [MainController::class, 'index']); - Route::middleware(['hasAccess'])->group(function() { + + + Route::get('/company/confirmer', function () + { + return view(view: 'company.post_confirmer'); + }); + + Route::middleware(['auth'])->group(function () + { + Route::get('/company/details/{company?}', [Modules\Main\Http\Controllers\Company\DetailsController::class, 'index'])->name('company.details'); + Route::post('/company/{company}/details/', [Modules\Main\Http\Controllers\Company\DetailsController::class, 'store'])->name('company.details.store'); + Route::get('/agents/table', [Modules\Main\Http\Controllers\Company\AgentsTableController::class, 'index'])->name('company.agents.table'); + Route::post('/company/agents/store/', Modules\Main\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); + Route::post('/company/agents/{agent}/password/reset/', Modules\Main\Http\Controllers\Company\ResetAgentPasswordController::class)->name('company.agent.password.reset'); + Route::get('/company/agents/{agent}/delete', Modules\Main\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete'); + Route::get('/company/agents/{agent}/restore', Modules\Main\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore'); + + }); + + Route::middleware(['hasAccess'])->group(function () + { /** Routes that need to be protected - Маршруты которые нужно защитить */ }); }); \ No newline at end of file diff --git a/resources/views/company/agents/table.blade.php b/app/Modules/Main/Views/company/agents/table.blade.php similarity index 100% rename from resources/views/company/agents/table.blade.php rename to app/Modules/Main/Views/company/agents/table.blade.php diff --git a/resources/views/company/create.blade.php b/app/Modules/Main/Views/company/create.blade.php similarity index 100% rename from resources/views/company/create.blade.php rename to app/Modules/Main/Views/company/create.blade.php diff --git a/resources/views/company/created.blade.php b/app/Modules/Main/Views/company/created.blade.php similarity index 100% rename from resources/views/company/created.blade.php rename to app/Modules/Main/Views/company/created.blade.php diff --git a/resources/views/company/details/agency.blade.php b/app/Modules/Main/Views/company/details/agency.blade.php similarity index 100% rename from resources/views/company/details/agency.blade.php rename to app/Modules/Main/Views/company/details/agency.blade.php diff --git a/resources/views/company/details/selfemp.blade.php b/app/Modules/Main/Views/company/details/selfemp.blade.php similarity index 100% rename from resources/views/company/details/selfemp.blade.php rename to app/Modules/Main/Views/company/details/selfemp.blade.php diff --git a/resources/views/company/details/soleprop.blade.php b/app/Modules/Main/Views/company/details/soleprop.blade.php similarity index 100% rename from resources/views/company/details/soleprop.blade.php rename to app/Modules/Main/Views/company/details/soleprop.blade.php diff --git a/resources/views/company/post_confirmer.blade.php b/app/Modules/Main/Views/company/post_confirmer.blade.php similarity index 100% rename from resources/views/company/post_confirmer.blade.php rename to app/Modules/Main/Views/company/post_confirmer.blade.php diff --git a/resources/views/layouts/guest.blade.php b/resources/views/layouts/guest.blade.php index e28bf60..1861ed4 100644 --- a/resources/views/layouts/guest.blade.php +++ b/resources/views/layouts/guest.blade.php @@ -70,9 +70,9 @@ -
+
@foreach ($errors->all() as $error) - {{ $error }} +
{{ $error }}
@endforeach @yield('content')
diff --git a/routes/api.php b/routes/api.php index 94321dc..f664be5 100644 --- a/routes/api.php +++ b/routes/api.php @@ -19,12 +19,11 @@ */ Route::middleware('auth:sanctum')->get('/user', function (Request $request) - { +{ return $request->user(); - }); +}); Route::post('/client', [ClientsApiController::class, 'index'])->name('api.client'); //Route::post('/client/confirm', [ConfirmClientFromBitrix::class, 'confirm'])->name('deal.confirm'); //Route::post('/client/{$deal}/contract', CoController::class)->name('company.status.update'); -Route::post('/company/status/update', ConfirmCompanyController::class)->name('company.status.update'); diff --git a/routes/web.php b/routes/web.php index ea6b9fd..ae28f1c 100644 --- a/routes/web.php +++ b/routes/web.php @@ -27,27 +27,10 @@ return redirect('/home'); })->middleware(['auth', 'signed'])->name('verification.verify'); -//Company -Route::get('/company/create', App\Http\Controllers\Company\CreateCompanyFormController::class)->name('company.form.create'); -Route::post('/company/create', CreateCompanyController::class)->name('company.create'); -Route::get('/company/confirmer', function () -{ - return view(view: 'company.post_confirmer'); -}); - Route::middleware(['auth'])->group(function () { Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home'); Route::get('/clients/table', [App\Http\Controllers\ClientsTableController::class, 'index'])->name('clients.table'); - Route::get('/company/details/{company?}', [App\Http\Controllers\Company\DetailsController::class, 'index'])->name('company.details'); - - Route::post('/company/{company}/details/', [App\Http\Controllers\Company\DetailsController::class, 'store'])->name('company.details.store'); - Route::get('/agents/table', [App\Http\Controllers\Company\AgentsTableController::class, 'index'])->name('company.agents.table'); - Route::post('/company/agents/store/', App\Http\Controllers\Company\CreateAgentController::class)->name('company.agents.store'); - Route::post('/company/agents/{agent}/password/reset/', App\Http\Controllers\Company\ResetAgentPasswordController::class)->name('company.agent.password.reset'); - Route::get('/company/agents/{agent}/delete', App\Http\Controllers\Company\DeleteAgentController::class)->name('company.agents.delete'); - Route::get('/company/agents/{agent}/restore', App\Http\Controllers\Company\RestoreAgentController::class)->name('company.agents.restore'); - }); //МАКЕТЫ