+
\ No newline at end of file
diff --git a/app/Modules/Admin/Views/posts/path/edit-form.blade.php b/app/Modules/Admin/Views/posts/path/edit-form.blade.php
new file mode 100644
index 0000000..4da1c18
--- /dev/null
+++ b/app/Modules/Admin/Views/posts/path/edit-form.blade.php
@@ -0,0 +1,53 @@
+
+
+
Добавить новость
+
\ No newline at end of file
diff --git a/app/Modules/Main/Helpers/helper.php b/app/Modules/Main/Helpers/helper.php
index 43d25b4..bbe2f73 100644
--- a/app/Modules/Main/Helpers/helper.php
+++ b/app/Modules/Main/Helpers/helper.php
@@ -131,7 +131,7 @@ function GetAvailableCities()
return City::all();
}
if ($user->hasRole(Role::CITY_MANAGER)) {
- $cititesOfManager = CityManager::where('user_id', $user->id)->pluck('city_id')->get();
+ $cititesOfManager = CityManager::where('user_id', $user->id)->pluck('city_id');
if ($cititesOfManager->count()) {
return City::whereIn('id', $cititesOfManager)->get();
}
diff --git a/app/Modules/Main/Models/Scopes/CityScope.php b/app/Modules/Main/Models/Scopes/CityScope.php
index 9f9f192..cd73ad7 100644
--- a/app/Modules/Main/Models/Scopes/CityScope.php
+++ b/app/Modules/Main/Models/Scopes/CityScope.php
@@ -12,21 +12,17 @@ class CityScope implements Scope
*/
public function apply(Builder $builder, Model $model): void
{
- if ($model->cities()->count()) { //если города для новости установлены
+ //dd(GetAvailableCities());
if ($cities = GetAvailableCities()) { //получаю доступные пользователю города
$citiesIds = [];
foreach ($cities as $city) {
$citiesIds[] = $city->id;
}
$builder->whereHas('cities', fn($q) => $q->whereIn('cities.id', $citiesIds));
-
+ $builder->OrDoesntHave('cities');
} else {
$builder->where('id', 0);//не знаю, как сделать, чтобы выбор был гарантированно пустой
}
- } else {
-
- }
- //$builder->where('created_at', '<', now()->minus(years: 2000));
}
}
?>
\ No newline at end of file
diff --git a/app/Modules/Post/Http/Controllers/PostController.php b/app/Modules/Post/Http/Controllers/PostController.php
index 890bfe5..7f294ca 100644
--- a/app/Modules/Post/Http/Controllers/PostController.php
+++ b/app/Modules/Post/Http/Controllers/PostController.php
@@ -25,5 +25,7 @@ public function open(Post $post)
'post' => $post
]);
}
-
+ public function create() {
+ return view('post::form.create');
+ }
}
diff --git a/app/Modules/Post/Http/Livewire/PostCreator.php b/app/Modules/Post/Http/Livewire/PostCreator.php
new file mode 100644
index 0000000..81c52bd
--- /dev/null
+++ b/app/Modules/Post/Http/Livewire/PostCreator.php
@@ -0,0 +1,106 @@
+dispatch('phoneInputAdded');
+
+ }
+ public function resetData()
+ {
+ $this->mount();
+ }
+ public function back()
+ {
+ $this->status = FormStatus::IN_PROCESS;
+ }
+
+ public function save()
+ {
+ $hasErrors = false;
+ foreach ($this->selectedObjects as $complexId=>$room) {
+ if ($this->createDeal($complexId, $room)) {
+ unset($this->selectedObjects[$complexId]);
+ } else {
+ $hasErrors = true;
+ }
+ }
+ if ($hasErrors) {
+ return $this->status = FormStatus::ERROR;
+ }
+ $this->status = FormStatus::SUCCESS;
+ }
+
+ private function createDeal($complexId, $room)
+ {
+ if (
+ !$deal = Deal::create([
+ 'agent_id' => $this->agentId,
+ 'complex_id' => $complexId,
+ 'plan7_data' => (is_array($room) && array_key_exists('id', $room)) ? json_encode($room) : null
+ ])
+ ) {
+ return false;
+ }
+
+ foreach ($this->contacts as $contact) {
+ if (
+ !$newUser = Client::updateOrCreate(
+ ['phone' => $contact['phones'][0]],
+ [
+ 'name' => trim($contact['firstName'] . ' ' . $contact['secondName']),
+ 'phone' => $contact['phones'][0]
+ ]
+ )
+ ) {
+ return false;
+ }
+ if (
+ !$dealClient = DealClients::firstOrCreate([
+ 'deal_id' => $deal->id,
+ 'client_id' => $newUser->id
+ ])
+ ) {
+ return false;
+ }
+ }
+ $this->dispatch('clientCreated');
+ return true;
+ }
+}
\ No newline at end of file
diff --git a/app/Modules/Post/Providers/ModuleServiceProvider.php b/app/Modules/Post/Providers/ModuleServiceProvider.php
index 7e77184..ea2d533 100644
--- a/app/Modules/Post/Providers/ModuleServiceProvider.php
+++ b/app/Modules/Post/Providers/ModuleServiceProvider.php
@@ -63,7 +63,7 @@ protected function registerLivewire()
{
Livewire::component('posts.list', \Modules\Post\Http\Livewire\PostsList::class);
Livewire::component('post.card', \Modules\Post\Http\Livewire\PostCard::class);
-
+ Livewire::component('post.form', \Modules\Post\Http\Livewire\PostCreator::class);
}
protected function registerComponent()
diff --git a/app/Modules/Post/Routes/web.php b/app/Modules/Post/Routes/web.php
index 2a055cc..ca7b57f 100644
--- a/app/Modules/Post/Routes/web.php
+++ b/app/Modules/Post/Routes/web.php
@@ -5,4 +5,5 @@
Route::middleware(['auth'])->group(function ()
{
Route::get('/news', [Modules\Post\Http\Controllers\PostController::class, 'index'])->name('posts');
+ Route::get('/news/create', [Modules\Post\Http\Controllers\PostController::class, 'create'])->name('post.create');
});
\ No newline at end of file
diff --git a/app/Modules/Post/Views/form/create.blade.php b/app/Modules/Post/Views/form/create.blade.php
new file mode 100644
index 0000000..c8be284
--- /dev/null
+++ b/app/Modules/Post/Views/form/create.blade.php
@@ -0,0 +1,7 @@
+@extends('layouts.app')
+
+@section('content')
+