diff --git a/app/Http/Controllers/Company/CreateAgentController.php b/app/Http/Controllers/Company/CreateAgentController.php index 347893d..1c41b73 100644 --- a/app/Http/Controllers/Company/CreateAgentController.php +++ b/app/Http/Controllers/Company/CreateAgentController.php @@ -56,9 +56,10 @@ public function __invoke(Request $request) else { $password = $user->setForcedPassword(false); - $adminUser = User::find($admin->user_id); - $adminUser->notify(instance: new UserRegistered($user->email, password: $password)); - return redirect()->route('company.agents.table')->with('success', 'thank you'); + //$adminUser = User::find($admin->user_id); + //$adminUser->notify(new UserRegistered($user->email, password: $password)); + //return redirect()->route('company.agents.table')->with('success', 'thank you'); + return back()->with('success', 'Пароль для пользователя установлен: ' . $password); } return to_route('company.agents.table'); } diff --git a/app/Http/Controllers/Company/ResetAgentPasswordController.php b/app/Http/Controllers/Company/ResetAgentPasswordController.php new file mode 100644 index 0000000..f5adcdf --- /dev/null +++ b/app/Http/Controllers/Company/ResetAgentPasswordController.php @@ -0,0 +1,41 @@ +id()); + if (!$admin->count()) + { + abort(404); + return; + } + $admin = $admin->first(); + if ($agent->company_id != $admin->company_id) + { + return back(); + } + $user = $agent->user; + + if ($request->sendToEmail) + { + $user->setForcedPassword(); + } + else + { + $password = $user->setForcedPassword(false); + return back()->with('success', 'Пароль для пользователя "' . $user->name . '" сброшен. Новый пароль: ' . $password); + } + return back(); + } +} diff --git a/app/Livewire/CreateClientForm.php b/app/Livewire/CreateClientForm.php index 0bc1e11..9d95361 100644 --- a/app/Livewire/CreateClientForm.php +++ b/app/Livewire/CreateClientForm.php @@ -145,7 +145,7 @@ public function save() , 'complex_id' => $this->client['complexId'] ]; - $data['confirm_token'] = $this->client['confirmToken'] = hash('sha256', json_encode($data)); + //$data['confirm_token'] = $this->client['confirmToken'] = hash('sha256', json_encode($data)); if ($newDeal = Deal::create($data)) { @@ -166,8 +166,6 @@ public function save() } public function sendToBitrix(Deal $deal) { - //$user = auth()->user(); - //$agent = Agent::where(column: 'user_id', $user->id)->first(); $agent = $deal->agent; $agentName = $agent->user->getPartialsName(); $data = [ @@ -179,7 +177,7 @@ public function sendToBitrix(Deal $deal) 'BROKER_PHONE' => $agent->user->phone, 'BROKER_INN' => $agent->company->inn, 'OBJECT_NAME' => Complex::find($this->client['complexId'])->name, - 'CALLBACK_URL' => route('api.client', ['hash' => $this->client['confirmToken']]), + 'CALLBACK_URL' => route('api.client', ['hash' => $deal->confirmToken]), ]; $sender = new SendClient($deal->id, $data); $response = $sender->send(); diff --git a/app/Models/Bitrix/SendClient.php b/app/Models/Bitrix/SendClient.php index 3421dd4..a00c939 100644 --- a/app/Models/Bitrix/SendClient.php +++ b/app/Models/Bitrix/SendClient.php @@ -5,7 +5,7 @@ use Illuminate\Support\Facades\Http; class SendClient - { +{ private $IBLOCK_TYPE_ID = 'lists'; //CONFIG для Альфы @@ -13,49 +13,52 @@ class SendClient private $URL = 'https://b24alfa.pro/rest/3165/v90a792nderzu0dj/lists.element.add.json'; private $IBLOCK_ID = 27; private $ID; - const NAME = "NAME"; + const NAME = "NAME"; const CLIENT_SECOND_NAME = "PROPERTY_94"; - const CLIENT_FIRST_NAME = "PROPERTY_95"; - const CLIENT_PHONE = "PROPERTY_96"; + const CLIENT_FIRST_NAME = "PROPERTY_95"; + const CLIENT_PHONE = "PROPERTY_96"; const BROKER_SECOND_NAME = "PROPERTY_97"; - const BROKER_FIRST_NAME = "PROPERTY_98"; - const BROKER_PHONE = "PROPERTY_99"; - const OBJECT_NAME = "PROPERTY_100"; - const CALLBACK_URL = "PROPERTY_105"; + const BROKER_FIRST_NAME = "PROPERTY_98"; + const BROKER_PHONE = "PROPERTY_99"; + const OBJECT_NAME = "PROPERTY_100"; + const CALLBACK_URL = "PROPERTY_105"; private $data = []; public function __construct($id, $data) - { + { $this->ID = env('BITRIX_CODE_PREFIX', '') . $id; $data = array_change_key_case($data, CASE_UPPER); $finalData = []; $refl = new \ReflectionClass(__CLASS__); $constants = $refl->getConstants(); foreach ($constants as $constName => $constValue) - { + { foreach ($data as $key => $value) - { + { if ($constName == $key) - { + { $finalData[$constValue] = $value; break; - } } } + } $finalData['NAME'] = $finalData[self::CLIENT_FIRST_NAME] . ' ' . $finalData[self::CLIENT_SECOND_NAME]; $this->data = $finalData; return; - } - + } + public function setBitrixId($id) + { + $this->data['PROPERTY_123'] = $id; + } public function send() - { + { $data = [ 'IBLOCK_TYPE_ID' => $this->IBLOCK_TYPE_ID, - 'IBLOCK_ID' => $this->IBLOCK_ID, - 'ELEMENT_CODE' => $this->ID, - 'FIELDS' => $this->data + 'IBLOCK_ID' => $this->IBLOCK_ID, + 'ELEMENT_CODE' => $this->ID, + 'FIELDS' => $this->data ]; $sender = new BitrixSender($this->URL, $data); return $sender->send(); - } - } \ No newline at end of file + } +} \ No newline at end of file diff --git a/app/Models/Deal/Deal.php b/app/Models/Deal/Deal.php index c796c39..5539156 100644 --- a/app/Models/Deal/Deal.php +++ b/app/Models/Deal/Deal.php @@ -42,14 +42,18 @@ public function contract() protected static function booted(): void { + + static::creating(function (Deal $deal) + { + $deal->confirm_token = hash('sha256', json_encode($deal->all())); + }); + static::created(function (Deal $deal) { UserRole::create([ 'user_id' => $deal->client_id, 'role_id' => Role::CLIENT ]); - - //$this->notify(); }); static::deleted(function (Deal $deal) diff --git a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php index ecb98ac..66ad32b 100644 --- a/app/Modules/Admin/Http/Controllers/AdminBitrixController.php +++ b/app/Modules/Admin/Http/Controllers/AdminBitrixController.php @@ -13,6 +13,7 @@ use App\Models\Deal\DealStatus; use Modules\Bitrix\Models\BitrixId; use App\Models\User; +use App\Models\Bitrix\SendClient; //use App\Models\User\UserRole; //use App\Models\User\Role; @@ -61,7 +62,7 @@ public function syncDeals(Agent $agent) ; $dealItem = false; $bitrixId = BitrixId::where('bx_id', $deal['deal']['deal_id']) - ->where('bitrixable_type', get_class(new Deal())); + ->where('bitrixable_type', Deal::class); //Загрузка сделок if ($bitrixId->count() == 0) { @@ -90,6 +91,38 @@ public function syncDeals(Agent $agent) 'plan7_id' => $inDeal['plan7_id'] ] ); + $this->sendDealToBitrix($dealItem); + } + } + + function sendDealToBitrix(Deal $deal) + { + $deal->refresh(); + $client = $deal->user; + $agent = $deal->agent; + $clientName = $client->getPartialsName(); + $agentName = $agent->user->getPartialsName(); + $data = [ + 'CLIENT_FIRST_NAME' => $clientName['firstName'], + 'CLIENT_SECOND_NAME' => $clientName['secondName'], + 'CLIENT_PHONE' => $client->phone, + 'BROKER_FIRST_NAME' => $agentName['firstName'], + 'BROKER_SECOND_NAME' => $agentName['secondName'], + 'BROKER_PHONE' => $agent->user->phone, + 'BROKER_INN' => $agent->company->inn, + 'OBJECT_NAME' => $deal->complex->name, + 'CALLBACK_URL' => route('api.client', ['hash' => $deal->confirm_token]), + ]; + $sender = new SendClient($deal->id, $data); + $sender->setBitrixId($deal->bitrixId()); + $response = $sender->send(); + if ($response) + { + return $response; + } + else + { + return false; } } } \ No newline at end of file diff --git a/app/Modules/Admin/Views/users/edit.blade.php b/app/Modules/Admin/Views/users/edit.blade.php index 305a772..9e04430 100644 --- a/app/Modules/Admin/Views/users/edit.blade.php +++ b/app/Modules/Admin/Views/users/edit.blade.php @@ -50,7 +50,7 @@ {{ __($userRole->role->name) }} - {{ $userRole->created_at->diffForHumans() }} + {{ $userRole->created_at?->diffForHumans() }}