diff --git a/modules/Auth/Http/Controllers/LoginController.php b/modules/Auth/Http/Controllers/LoginController.php index 1fa718b..47d3add 100644 --- a/modules/Auth/Http/Controllers/LoginController.php +++ b/modules/Auth/Http/Controllers/LoginController.php @@ -102,7 +102,6 @@ class LoginController extends Controller $request->session()->put('user.segment', Acl::getSegment(Acl::company_id())); $request->session()->put('user.name', Auth::user()->name); - Accounting::session_extend($request); $this->resetAttempt($request); } return $this->sendLoginResponse($request); diff --git a/modules/Auth/Http/Controllers/RegisterCompanyController.php b/modules/Auth/Http/Controllers/RegisterCompanyController.php deleted file mode 100644 index d360f26..0000000 --- a/modules/Auth/Http/Controllers/RegisterCompanyController.php +++ /dev/null @@ -1,285 +0,0 @@ - $request->get('biniin')], $this->getBiniinRules()); - - if ($validation->fails()) { - return [ - 'status' => 'error', - 'message' => __('Неправильно введен БИН/ИИН') - ]; - } - - $biniin = $validation->validated()['biniin']; - $company = $this->getCompanyByBiniin($biniin); - - if ($company) { - return [ - 'status' => 'success', - 'data' => [ - 'biniin' => $biniin, - 'name' => $company->name, - 'fullname' => $company->fullname, - 'companyExists' => true - ] - ]; - } - else { - $inputData = [ - 'biniin' => $biniin - ]; - $minStat = $this->minStat($biniin); - - if ($minStat['status'] == 2) { - $inputData['name'] = $minStat['data']['name']; - $inputData['fullname'] = $minStat['data']['name']; - } - - return [ - 'status' => 'success', - 'data' => array_merge($inputData, ['registerNewCompany' => true]) - ]; - } - } - - public function getCompanyByBiniin(string $biniin) { - return UniModel::model(config('platform.company.tables.company')) - ->where('biniin', trim($biniin)) - ->first(); - } - - /** - * Store a new company. - * - * @param Request $request - * @return RedirectResponse - * @throws \Exception - */ - public function registerCompany(Request $request) { - if (!Auth::check()) { - return redirect(lurl("/")); - } - - $userId = Auth::id(); - $biniin = $this->getBiniin($request); - - if ($company = $this->getCompanyByBiniin($biniin)) { - return $this->applyToCompany($company); - } - - $minStat = $this->minStat($biniin); - - [$name, $fullname] = $this->getNameAndFullName($request); - - $company = $this->saveCompany([ - 'name' => $name, - 'biniin' => $biniin, - 'fullname' => $fullname - ]); - - $this->saveOrganization($minStat, $company); - - Helper::company()->addUserToCompany($userId, $company->id); - Helper::company()->addUserRoleToCompany($userId, $company->id, self::COWORKER_ROLE); - Helper::company()->addUserRoleToCompany($userId, $company->id, self::DIRECTOR_ROLE); - - $this->updateSession($company->id); - - return redirect(lurl("/")); - } - - public function minStat(string $biniin){ - if (Cache::has($biniin)) { - return Cache::get($biniin); - } - - $i = 0; - - while($i < 3) { - try { - $i++; - $res = $this->getMinStatData($biniin); - if($res['status']){ - Cache::put($biniin, $res, 10); - return $res; - } - sleep(10); - } catch (\Exception $e){ -// ExceptionControl::message($e); - return ["status" => 0, "message" => "Данные не найдены"]; - } - } - - return ["status" => 0, "message" => "Данные не найдены"]; - } - - private function getMinStatData(string $biniin){ - $curl = curl_init(); - curl_setopt_array($curl, array( - CURLOPT_URL => 'https://stat.gov.kz/api/juridicalusr/counter/gov/?bin=' . $biniin . '&lang=ru', - CURLOPT_RETURNTRANSFER => true, - CURLOPT_MAXREDIRS => 10, - CURLOPT_CUSTOMREQUEST => 'GET', - CURLOPT_HTTPHEADER => array( - 'Referer: https://stat.gov.kz/jur-search/bin' - ), - )); - - $result = curl_exec($curl); - if (!curl_error($curl)) { - curl_close($curl); - $response = json_decode($result, 1); - if(!is_null($response)) { - if (array_key_exists("error", $response)) { - return ['status' => 0, 'message' => "Ошибка при запросе данных с stat gov kz"]; - } else { - if ($response["success"] == true) { - return ['status' => 2, 'data' => $response['obj']]; - } else { - if(is_null($response['obj'])){ - return ["status" => 1, "message" => "Данные не найдены"]; - } - } - } - } - return ["status" => 0, "message" => "Сервер занят"]; - } else { - return ["status" => 0, "message" => "Данные не найдены"]; - } - } - - /** - * @throws \Exception - */ - private function saveCompany(array $data) { - $company = UniModel::model(config('platform.company.tables.company')); - - $company->fill(array_merge($data, ['segment' => Segment::random()])); - - $company->save(); - return $company; - } - - private function saveOrganization(array $minStat, $company) { - $data = $this->getOrganizationData($minStat, $company); - $organization = UniModel::model(config('platform.company.tables.organization')); - $organization->fill($data); - $organization->save(); - } - - private function getBiniin(Request $request) { - return $request->validate($this->getBiniinRules())['biniin']; - } - - private function getNameAndFullName(Request $request) { - $data = $request->validate([ - 'name' => ['required', 'string', 'max:255'], - 'fullname' => ['required', 'string', 'max:255'], - ]); - - return array($data['name'], $data['fullname']); - } - - private function getOrganizationData(array $minStat, $company) { - - if ($minStat['status'] == 2) { - $organizationData = $minStat['data']; - - $organizationData['biniin'] = $organizationData['bin']; - unset($organizationData['bin']); - - $organizationData['registerDate'] = Carbon::parse($organizationData['registerDate']) - ->format('Y-m-d H:i:s'); - - unset($organizationData['id']); - } - else { - $organizationData = [ - "name" => $company->name, - "biniin" => $company->biniin - ]; - } - $organizationData['company_id'] = $company->id; - - return $organizationData; - } - - public function showRegisterCompanyForm() { - return view('platform.auth::registerCompany'); - } - - public function applyToCompany($company) { - if ($this->issetApplication($company->id)) { - return back() - ->withInput([ - 'name' => $company->name, - 'biniin' => $company->biniin, - 'fullname' => $company->name - ]) - ->with('companyExists', true) - ->withErrors(['company' => __('Your application already exists')]); - } - - $addRequest = UniModel::model(config('platform.company.tables.company_request')); - - $addRequest->fill([ - 'user_id' => Auth::id(), - 'company_id' => $company->id, - ]); - - $addRequest->save(); - - $this->updateSession(); - - return redirect(lurl("/")); - } - - private function issetApplication(int|string $companyId) { - return UniModel::model(config('platform.company.tables.company_request')) - ->where('user_id', Auth::id()) - ->where('company_id', $companyId) - ->count(); - } - - private function getBiniinRules(): array - { - return [ - 'biniin' => ['required', 'string', 'size:12', 'regex:/^[0-9]+$/'] - ]; - } - - private function updateSession(int $companyId = self::DEFAULT_COMPANY_ID): void - { - Session::put('user.company_id', $companyId); - Session::put('user.rights', Acl::getUserRights(Auth::id(), $companyId)); - Session::put('user.segment', Acl::getSegment($companyId)); - } -} diff --git a/modules/Auth/Http/Controllers/RegisterController.php b/modules/Auth/Http/Controllers/RegisterController.php index be882df..0af13f9 100644 --- a/modules/Auth/Http/Controllers/RegisterController.php +++ b/modules/Auth/Http/Controllers/RegisterController.php @@ -15,6 +15,7 @@ use App\Models\User; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; +use JetBrains\PhpStorm\NoReturn; class RegisterController extends Controller { @@ -46,7 +47,7 @@ class RegisterController extends Controller public function __construct() { $this->middleware('guest'); - $this->redirectTo = lurl('register_company'); + $this->redirectTo = lurl('/'); } /** @@ -64,6 +65,8 @@ class RegisterController extends Controller 'username' => ['required', 'string', 'max:255', Rule::unique($usersTable, 'username')], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique($usersTable, 'email')], 'password' => ['required', 'string', 'min:8', 'confirmed'], + 'biniin' => ['required', 'string', 'min:12', 'max:12'], + 'isorg' => ['boolean'], ]); } @@ -73,7 +76,7 @@ class RegisterController extends Controller * @param array $data * @return User; */ - protected function create(array $data) + #[NoReturn] protected function create(array $data) { $user = new User(); @@ -100,6 +103,35 @@ class RegisterController extends Controller $userRoleModel->save(); } + $company = UniModel::model(config('platform.company.tables.company')) + ->firstOrCreate([ + 'name' => $data['name'], + 'biniin' => $data['biniin'], + 'fullname' => $data['name'], + 'segment' => 'sol' + ]); + + $ucr = UniModel::model(config('platform.company.tables.company_user_role')) + ->firstOrCreate([ + 'user_id' => $user->id, + 'role_id' => 7, + 'company_id' => $company->id + ]); + if (!$ucr) { + UniModel::model(config('platform.company.tables.company_user_role')) + ->create([ + 'user_id' => $user->id, + 'role_id' => 6, + 'company_id' => $company->id + ]); + } + + UniModel::model(config('platform.company.tables.company_user')) + ->firstOrCreate([ + 'company_id' => $company->id, + 'user_id' => $user->id, + 'default' => true, + ]); return $user; } diff --git a/modules/Auth/routes/web.php b/modules/Auth/routes/web.php index 3b5fb6a..0bdc068 100644 --- a/modules/Auth/routes/web.php +++ b/modules/Auth/routes/web.php @@ -10,18 +10,6 @@ Route::any("/logout", [modules\Auth\Http\Controllers\LoginController::class,'log Route::get('/register',[modules\Auth\Http\Controllers\RegisterController::class,'showRegistrationForm'])->name('registerForm'); Route::post('/register',[modules\Auth\Http\Controllers\RegisterController::class,'register'])->name('register'); -Route::group([ - 'middleware' => ['auth', 'web'], -], function () { - Route::get('register_company/',[modules\Auth\Http\Controllers\RegisterCompanyController::class,'showRegisterCompanyForm']) - ->name('registerCompanyForm'); - Route::post('register_company/',[modules\Auth\Http\Controllers\RegisterCompanyController::class,'registerCompany']) - ->name('registerCompany'); - - Route::post('register_company/check_biniin_ajax',[modules\Auth\Http\Controllers\RegisterCompanyController::class,'checkBiniinAjax']) - ->name('checkBiniinAjax'); -}); - Route::get('/password/reset', [modules\Auth\Http\Controllers\ForgotPasswordController::class,'showLinkRequestForm'])->name('password.request'); Route::post('/password/email',[modules\Auth\Http\Controllers\ForgotPasswordController::class,'sendResetLinkEmail'])->name('password.email'); Route::get('/password/reset/{token}',[modules\Auth\Http\Controllers\ResetPasswordController::class,'showResetForm'])->name('password.reset'); diff --git a/modules/Auth/views/login.blade.php b/modules/Auth/views/login.blade.php index d31962a..4039ae7 100644 --- a/modules/Auth/views/login.blade.php +++ b/modules/Auth/views/login.blade.php @@ -4,7 +4,6 @@
-{{-- На главную--}}
-{{-- logo--}} - + logo
-{{-- {{ __('Login') }}--}}
@csrf
@@ -73,8 +70,7 @@
-

+7 7172 97-20-76

-

8 800 004-04-33 ({{ __('звонок бесплатный') }})

+

7 776 350 41 41({{ __('звонок бесплатный') }})

diff --git a/modules/Auth/views/register.blade.php b/modules/Auth/views/register.blade.php index cd39156..b270926 100644 --- a/modules/Auth/views/register.blade.php +++ b/modules/Auth/views/register.blade.php @@ -4,7 +4,6 @@
-{{-- На главную--}}
-{{-- logo--}} -
ПланФакт - УЧЕТ
+ logo
- {{-- {{ __('Register') }}--}} -{{--
--}} + {{ __('Register') }} + @csrf
@@ -64,6 +62,15 @@ @enderror
+
+ + + @error('biniin') + + @enderror +
+
+
+ + +
+ diff --git a/modules/Auth/views/registerCompany.blade.php b/modules/Auth/views/registerCompany.blade.php deleted file mode 100644 index 379ec30..0000000 --- a/modules/Auth/views/registerCompany.blade.php +++ /dev/null @@ -1,129 +0,0 @@ -@extends('layouts.app') - -@section('content') - @include('ajax-loader') -
-
- Вернуться назад -
- {{ __('Register Company') }} - logo -
-
- - @csrf - -
- - - @error('biniin') - - @enderror -
- - - - - - - -
-
-
-@endsection - -@push('scripts-bottom') - -@endpush diff --git a/modules/UserProfile/views/companylist.blade.php b/modules/UserProfile/views/companylist.blade.php index 0865e5f..a902ae4 100644 --- a/modules/UserProfile/views/companylist.blade.php +++ b/modules/UserProfile/views/companylist.blade.php @@ -13,11 +13,6 @@ use A7kz\Platform\Models\UniModel; $companies = Acl::myCompanies(); } - $orgs_rows = \A7kz\Accounting\Facades\Accounting::my_organizations(\Illuminate\Support\Facades\Request::get('filter')); - foreach ($orgs_rows as $orgs_row){ - $orgs[$orgs_row->id] = $orgs_row; - } - $active = Acl::activeCompany(); ?> @@ -52,11 +47,9 @@ use A7kz\Platform\Models\UniModel;
@foreach($companies as $company) - @if((empty($active) || $active->id != $company->id) && isset($orgs[$company->id])) + @if((empty($active) || $active->id != $company->id)) - -
{{$company->biniin}}{{$orgs[$company->id]->code_gu ?? ''}}{{ $orgs[$company->id]->{'name_'.app()->getLocale()} ?? $company->name}} @lang("Выбрать") diff --git a/resources/lang/ru.json b/resources/lang/ru.json index 07c081c..398530b 100644 --- a/resources/lang/ru.json +++ b/resources/lang/ru.json @@ -1,4 +1,12 @@ { "Добавить": "Добавить", - "Закрыть": "Закрыть" + "Закрыть": "Закрыть", + "Register": "Регистрация", + "Name": "Имя", + "Email Address": "Почтовый адрес", + "Username": "Логин", + "BinIin": "БИН\/ИИН", + "Password": "Пароль", + "Confirm Password": "Подтвердите пароль", + "isOrg": "Организация?" } \ No newline at end of file