contracts created
This commit is contained in:
parent
1a3136e9f0
commit
9fa55fed78
68
app/Http/Controllers/Bitrix/ClientsApiController.php
Normal file
68
app/Http/Controllers/Bitrix/ClientsApiController.php
Normal file
@ -0,0 +1,68 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bitrix;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Models\Deal\Deal;
|
||||
use App\Models\Deal\DealStatus;
|
||||
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
|
||||
class ClientsApiController extends Controller
|
||||
{
|
||||
public const ACTION_CONFIRM = 'confirm';
|
||||
public const ACTION_UPDATE_CONTRACT = 'contract';
|
||||
public function index(Request $request)
|
||||
{
|
||||
if ($deal = Deal::where('confirm_token', $request->hash)->first())
|
||||
{
|
||||
switch ( $request->action )
|
||||
{
|
||||
case $this::ACTION_CONFIRM:
|
||||
$this->confirm($deal, $request);
|
||||
break;
|
||||
case $this::ACTION_UPDATE_CONTRACT:
|
||||
$this->updateContract($deal, $request);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public function confirm(Deal $deal, Request $request)
|
||||
{
|
||||
if ((bool) $request->is_unique)
|
||||
{
|
||||
$deal->status = DealStatus::UNIQUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
$deal->status = DealStatus::NOT_UNIQUE;
|
||||
}
|
||||
|
||||
Log::build([
|
||||
'driver' => 'single',
|
||||
'path' => storage_path('logs/bitrix.log'),
|
||||
])->error(
|
||||
json_encode(
|
||||
[
|
||||
'is_unique' => $request->is_unique,
|
||||
'deal' => $deal->id,
|
||||
'status' => $deal->status
|
||||
]
|
||||
)
|
||||
);
|
||||
$deal->save();
|
||||
return $deal->id;
|
||||
}
|
||||
|
||||
public function update_contract(Deal $deal, Request $request)
|
||||
{
|
||||
$contract = new ContractApiController;
|
||||
$contract($deal, $request);
|
||||
}
|
||||
}
|
||||
29
app/Http/Controllers/Bitrix/ContractApiController.php
Normal file
29
app/Http/Controllers/Bitrix/ContractApiController.php
Normal file
@ -0,0 +1,29 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Bitrix;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Models\Deal\Deal;
|
||||
use App\Models\Deal\Contract;
|
||||
use App\Models\Deal\ContractStatus;
|
||||
use App\Models\Agent\Agent;
|
||||
class ContractApiController
|
||||
{
|
||||
public function __invoke(Deal $deal, Request $request)
|
||||
{
|
||||
Contract::updateOrCreate(
|
||||
['deal_id' => $deal->id],
|
||||
[
|
||||
'status' => ContractStatus::NEW ,
|
||||
'comment' => $request->comment,
|
||||
'price' => $request->price,
|
||||
'reward' => $request->reward,
|
||||
'square' => $request->square,
|
||||
'floor' => $request->floor
|
||||
]
|
||||
);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -34,6 +34,7 @@ public function __invoke(Request $request)
|
||||
]);
|
||||
$user->setForcedPassword();
|
||||
}
|
||||
CompanyAdmin::where('user_id', $user->id)->delete();//удаляю, если уже была админская учетка
|
||||
CompanyAdmin::create([
|
||||
'user_id' => $user->id,
|
||||
'company_id' => $company->id
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
//DEPRICATED
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
30
app/Http/Controllers/Deal/ContractController.php
Normal file
30
app/Http/Controllers/Deal/ContractController.php
Normal file
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Deal;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
use App\Models\Deal\Deal;
|
||||
use App\Models\Deal\Contract;
|
||||
use App\Models\Deal\ContractStatus;
|
||||
use App\Models\Agent\Agent;
|
||||
|
||||
class ContractController extends Controller
|
||||
{
|
||||
public function index(Contract $contract)
|
||||
{
|
||||
return view(
|
||||
'clients.contract.index',
|
||||
[
|
||||
'contract' => $contract
|
||||
]
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
public function getAllDealsInCompany(Request $request)
|
||||
{
|
||||
$user = auth()->user();
|
||||
}
|
||||
}
|
||||
@ -177,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('deal.confirm', ['hash' => $this->client['confirmToken']]),
|
||||
'CALLBACK_URL' => route('api.client', ['hash' => $this->client['confirmToken']]),
|
||||
];
|
||||
$sender = new SendClient($deal->id, $data);
|
||||
$response = $sender->send();
|
||||
|
||||
27
app/Livewire/MainMenu.php
Normal file
27
app/Livewire/MainMenu.php
Normal file
@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace App\Livewire;
|
||||
|
||||
use Livewire\Component;
|
||||
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\Role;
|
||||
|
||||
|
||||
class MainMenu extends Component
|
||||
{
|
||||
|
||||
public $userId;
|
||||
|
||||
public function mount()
|
||||
{
|
||||
$this->userId = auth()->user()->id;
|
||||
}
|
||||
public function render()
|
||||
{
|
||||
return view('livewire.main-menu', [
|
||||
'userRoles' => UserRole::where('user_id', $this->userId)->pluck('role_id')->toArray(),
|
||||
'roles' => Role::class
|
||||
]);
|
||||
}
|
||||
}
|
||||
@ -9,6 +9,8 @@
|
||||
|
||||
use App\Models\Company\Company;
|
||||
use App\Models\User;
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\Role;
|
||||
use App\Models\Deal\Deal;
|
||||
|
||||
class Agent extends Model
|
||||
@ -34,4 +36,32 @@ public function deals()
|
||||
{
|
||||
return $this->hasMany(Deal::class);
|
||||
}
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::created(function (Agent $agent)
|
||||
{
|
||||
UserRole::create([
|
||||
'user_id' => $agent->user_id,
|
||||
'role_id' => Role::AGENT
|
||||
]);
|
||||
});
|
||||
static::updated(function (Agent $agent)
|
||||
{
|
||||
if ($agent->trashed())
|
||||
{
|
||||
UserRole::where([
|
||||
'user_id' => $agent->user_id,
|
||||
'role_id' => Role::AGENT
|
||||
])->delete();
|
||||
}
|
||||
else
|
||||
{
|
||||
UserRole::create([
|
||||
'user_id' => $agent->user_id,
|
||||
'role_id' => Role::AGENT
|
||||
]);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@ -26,7 +26,7 @@ class SendClient
|
||||
|
||||
public function __construct($id, $data)
|
||||
{
|
||||
$this->ID = $id;
|
||||
$this->ID = env('BITRIX_CODE_PREFIX', '') . $id;
|
||||
$data = array_change_key_case($data, CASE_UPPER);
|
||||
$finalData = [];
|
||||
$refl = new \ReflectionClass(__CLASS__);
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\Role;
|
||||
|
||||
class CompanyAdmin extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
@ -13,4 +16,22 @@ class CompanyAdmin extends Model
|
||||
'company_id'
|
||||
];
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::created(function (CompanyAdmin $admin)
|
||||
{
|
||||
UserRole::create([
|
||||
'user_id' => $admin->user_id,
|
||||
'role_id' => Role::COMPANY_ADMIN
|
||||
]);
|
||||
});
|
||||
static::deleted(function (CompanyAdmin $admin)
|
||||
{
|
||||
UserRole::where([
|
||||
'user_id' => $admin->user_id,
|
||||
'role_id' => Role::COMPANY_ADMIN
|
||||
])->delete();
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
28
app/Models/Deal/Contract.php
Normal file
28
app/Models/Deal/Contract.php
Normal file
@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\Deal;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Contract extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
const CREATED_AT = 'created_at';
|
||||
const UPDATED_AT = 'updated_at';
|
||||
protected $table = 'client_contract';
|
||||
protected $fillable = [
|
||||
'deal_id',
|
||||
'status',
|
||||
'comment',
|
||||
'price',
|
||||
'reward',
|
||||
'square',
|
||||
'floor'
|
||||
];
|
||||
|
||||
public function deal()
|
||||
{
|
||||
return $this->belongsTo(Deal::class, 'deal_id');
|
||||
}
|
||||
}
|
||||
11
app/Models/Deal/ContractStatus.php
Normal file
11
app/Models/Deal/ContractStatus.php
Normal file
@ -0,0 +1,11 @@
|
||||
<?php
|
||||
namespace App\Models\Deal;
|
||||
enum ContractStatus
|
||||
{
|
||||
case NEW;
|
||||
case TREATY;
|
||||
case RESERVATION;
|
||||
case SUCCESS;
|
||||
case DECLINE;
|
||||
}
|
||||
|
||||
@ -5,6 +5,9 @@
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
use App\Models\User\UserRole;
|
||||
use App\Models\User\Role;
|
||||
|
||||
class Deal extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
@ -28,4 +31,28 @@ public function agent()
|
||||
{
|
||||
return $this->belongsTo(\App\Models\Agent\Agent::class, 'agent_id');
|
||||
}
|
||||
|
||||
public function contract()
|
||||
{
|
||||
return $this->hasOne(Contract::class, 'deal_id');
|
||||
}
|
||||
|
||||
protected static function booted(): void
|
||||
{
|
||||
static::created(function (Deal $deal)
|
||||
{
|
||||
UserRole::create([
|
||||
'user_id' => $deal->client_id,
|
||||
'role_id' => Role::CLIENT
|
||||
]);
|
||||
});
|
||||
static::deleted(function (Deal $deal)
|
||||
{
|
||||
UserRole::where([
|
||||
'user_id' => $deal->client_id,
|
||||
'role_id' => Role::CLIENT
|
||||
])->delete();
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
17
app/Models/User/Role.php
Normal file
17
app/Models/User/Role.php
Normal file
@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\User;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
class Role extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
public const SUPER_ADMIN = '1';
|
||||
public const COMPANY_ADMIN = '2';
|
||||
public const AGENT = '3';
|
||||
public const CLIENT = '4';
|
||||
|
||||
}
|
||||
18
app/Models/User/UserRole.php
Normal file
18
app/Models/User/UserRole.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models\User;
|
||||
|
||||
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use App\Models\User;
|
||||
use App\Models\User\Role;
|
||||
|
||||
class UserRole extends Model
|
||||
{
|
||||
use HasFactory;
|
||||
|
||||
protected $fillable = [
|
||||
'user_id',
|
||||
'role_id',
|
||||
];
|
||||
}
|
||||
36
database/migrations/2025_03_12_023918_create_roles_table.php
Normal file
36
database/migrations/2025_03_12_023918_create_roles_table.php
Normal file
@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('roles', function (Blueprint $table)
|
||||
{
|
||||
$table->id();
|
||||
$table->string('name');
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
DB::table('roles')->insert([
|
||||
['id' => 1, 'name' => 'Super admin'],
|
||||
['id' => 2, 'name' => 'Company admin'],
|
||||
['id' => 3, 'name' => 'Agent'],
|
||||
['id' => 4, 'name' => 'Client'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('roles');
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('user_roles', function (Blueprint $table)
|
||||
{
|
||||
$table->id();
|
||||
$table->foreignId('user_id')->references('id')->on('users')->onDelete('cascade');
|
||||
$table->foreignId(column: 'role_id')->references('id')->on('roles')->onDelete('cascade');
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('user_roles');
|
||||
}
|
||||
};
|
||||
@ -0,0 +1,35 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::create('client_contract', function (Blueprint $table)
|
||||
{
|
||||
$table->id();
|
||||
$table->foreignId('deal_id')->references('id')->on('deals')->onDelete('cascade');
|
||||
$table->enum('status', ['NEW', 'DECLINE', 'TREATY', 'SUCCESS', 'RESERVATION'])->default('NEW');
|
||||
$table->string('comment')->nullable();
|
||||
$table->float('price')->nullable();
|
||||
$table->float('reward')->nullable();
|
||||
$table->float('square')->nullable();
|
||||
$table->integer('floor')->nullable();
|
||||
$table->timestamps();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('client_contract');
|
||||
}
|
||||
};
|
||||
@ -29,5 +29,6 @@
|
||||
"Phone": "Номер телефона",
|
||||
"Email": "Электронная почта",
|
||||
"SelfEmployer name": "ФИО полностью",
|
||||
"SoleProperty name": "ФИО полностью"
|
||||
"SoleProperty name": "ФИО полностью",
|
||||
"contract status new": "Новый"
|
||||
}
|
||||
110
resources/views/clients/contract/index.blade.php
Normal file
110
resources/views/clients/contract/index.blade.php
Normal file
@ -0,0 +1,110 @@
|
||||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
<div class="row">
|
||||
<div class="col-12 col-lg-8">
|
||||
<!--Имя и контакты-->
|
||||
<div class="row py-5">
|
||||
<div class="col-12 col-lg-4">
|
||||
<div class="fs-6 text-secondary">ФИО</div>
|
||||
<div class="fw-bold fs-5 text-truncate">{{ $contract->deal->user->name }}</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-3">
|
||||
<div class="fs-6 text-secondary">Email</div>
|
||||
<div class="fw-bold fs-5 text-truncate">{{ $contract->deal->user->email }}</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-3">
|
||||
<div class="fs-6 text-secondary">Телефон</div>
|
||||
<div class="fw-bold fs-5 text-truncate">{{ $contract->deal->user->phone }}</div>
|
||||
</div>
|
||||
<div class="d-none d-lg-block col-2 text-end">
|
||||
<a href="" class="btn border-1 border-secondary-subtle text-secondary rounded-4 p-3">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
|
||||
class="bi bi-arrow-right" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd"
|
||||
d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!--Город-->
|
||||
<div class="row bg-white py-3">
|
||||
<div class="col-9">
|
||||
<div class="fs-5 fw-bold my-2">{{ $contract->deal->complex->city->name }}</div>
|
||||
<div class="fs-5 fw-bold text-secondary my-2">Не выбрано</div>
|
||||
</div>
|
||||
<div class="col-3 text-end">
|
||||
<a href="" class="btn border-1 border-secondary-subtle text-secondary rounded-4 p-3">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
|
||||
class="bi bi-trash3" viewBox="0 0 16 16">
|
||||
<path
|
||||
d="M6.5 1h3a.5.5 0 0 1 .5.5v1H6v-1a.5.5 0 0 1 .5-.5M11 2.5v-1A1.5 1.5 0 0 0 9.5 0h-3A1.5 1.5 0 0 0 5 1.5v1H1.5a.5.5 0 0 0 0 1h.538l.853 10.66A2 2 0 0 0 4.885 16h6.23a2 2 0 0 0 1.994-1.84l.853-10.66h.538a.5.5 0 0 0 0-1zm1.958 1-.846 10.58a1 1 0 0 1-.997.92h-6.23a1 1 0 0 1-.997-.92L3.042 3.5zm-7.487 1a.5.5 0 0 1 .528.47l.5 8.5a.5.5 0 0 1-.998.06L5 5.03a.5.5 0 0 1 .47-.53Zm5.058 0a.5.5 0 0 1 .47.53l-.5 8.5a.5.5 0 1 1-.998-.06l.5-8.5a.5.5 0 0 1 .528-.47M8 4.5a.5.5 0 0 1 .5.5v8.5a.5.5 0 0 1-1 0V5a.5.5 0 0 1 .5-.5" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
<a href="" class="btn border-1 border-secondary-subtle text-secondary rounded-4 p-3">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor"
|
||||
class="bi bi-pen" viewBox="0 0 16 16">
|
||||
<path
|
||||
d="m13.498.795.149-.149a1.207 1.207 0 1 1 1.707 1.708l-.149.148a1.5 1.5 0 0 1-.059 2.059L4.854 14.854a.5.5 0 0 1-.233.131l-4 1a.5.5 0 0 1-.606-.606l1-4a.5.5 0 0 1 .131-.232l9.642-9.642a.5.5 0 0 0-.642.056L6.854 4.854a.5.5 0 1 1-.708-.708L9.44.854A1.5 1.5 0 0 1 11.5.796a1.5 1.5 0 0 1 1.998-.001m-.644.766a.5.5 0 0 0-.707 0L1.95 11.756l-.764 3.057 3.057-.764L14.44 3.854a.5.5 0 0 0 0-.708z" />
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<!--Основная часть-->
|
||||
<div class="row">
|
||||
<div class="col col-lg-8">
|
||||
<div class="row my-4">
|
||||
<div class="col col-md-6">
|
||||
<div class="fs-6 text-secondary">Статус</div>
|
||||
<div class="fw-bold fs-5 text-truncate text-dark-emphasis">
|
||||
{{ __('contract status ' . strtolower($contract->status)) }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-md-6">
|
||||
<div class="fs-6 text-secondary">Дата создания</div>
|
||||
<div class="fw-bold fs-5 text-truncate text-dark-emphasis">
|
||||
{{ $contract->created_at->format('d.m.y H:i') }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row my-4">
|
||||
<div class="col col-md-6">
|
||||
<div class="fs-6 text-secondary">Площадь объекта</div>
|
||||
<div class="fw-bold fs-5 text-truncate text-dark-emphasis">{{ $contract->square }}</div>
|
||||
</div>
|
||||
<div class="col col-md-6">
|
||||
<div class="fs-6 text-secondary">Этаж</div>
|
||||
<div class="fw-bold fs-5 text-truncate text-dark-emphasis">{{ $contract->floor }}</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row my-4">
|
||||
<div class="col">
|
||||
<div class="fs-6 text-secondary">Комментарий к договору</div>
|
||||
<div class="fw-bold fs-5 text-truncate text-dark-emphasis">{{ $contract->comment }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col col-lg-4 p-3">
|
||||
<div class="rounded-4 h-100 w-100" style="background-color:#ebeef5"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-4 py-3 text-dark" style="background-color:#eef5fb">
|
||||
<div class="fw-bold fs-5 mb-3">История договора</div>
|
||||
@for ($i = 0; $i <= 4; $i++)
|
||||
<div class="d-flex flex-row mb-3">
|
||||
<div class="pe-2">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="30" height="30" fill="currentColor"
|
||||
class="bi bi-record-circle-fill align-middle" viewBox="0 0 16 16">
|
||||
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-8 3a3 3 0 1 0 0-6 3 3 0 0 0 0 6" />
|
||||
</svg>
|
||||
</div>
|
||||
<div class="">
|
||||
<div class="text-secondary">05.03.25</div>
|
||||
<div class="fw-bold text-dark-emphasis">Запланирована встреча с клиентом</div>
|
||||
</div>
|
||||
</div>
|
||||
@endfor
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@ -1,3 +1,5 @@
|
||||
<livewire:mainMenu />
|
||||
<!--
|
||||
<ul class="nav flex flex-md-column ">
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="{{ route('home') }}" class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active"
|
||||
@ -40,3 +42,4 @@ class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active" ar
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
-->
|
||||
|
||||
@ -7,9 +7,9 @@
|
||||
<tbody class="">
|
||||
@foreach ($deals as $deal)
|
||||
<tr>
|
||||
<td>
|
||||
<!--<td>
|
||||
<img src="../../images/icons/user.png" class="img-fluid align-middle" style="height: 50px;">
|
||||
</td>
|
||||
</td>-->
|
||||
<td class="fw-semibold fs-5 align-middle">
|
||||
{{ $deal->user->name }}
|
||||
@if ($deal->status == $statuses::MODERATION)
|
||||
@ -30,7 +30,7 @@
|
||||
<td class="align-middle">
|
||||
{{ $deal->complex->city->name }}
|
||||
</td>
|
||||
<td class="align-middle">
|
||||
<td class="align-middle text-end d-none">
|
||||
<a href="#" class="btn">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
|
||||
fill="currentColor" class="bi bi-three-dots-vertical" viewBox="0 0 16 16">
|
||||
@ -39,6 +39,21 @@
|
||||
</svg>
|
||||
</a>
|
||||
</td>
|
||||
@if ($deal->contract)
|
||||
<td class="align-middle text-center bg-white">
|
||||
|
||||
<a href="{{ route('contract', ['contract' => $deal->contract]) }}" class="btn">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16"
|
||||
fill="currentColor" class="bi bi-arrow-right" viewBox="0 0 16 16">
|
||||
<path fill-rule="evenodd"
|
||||
d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8" />
|
||||
</svg>
|
||||
</a>
|
||||
|
||||
</td>
|
||||
@else
|
||||
<td></td>
|
||||
@endif
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
|
||||
@ -10,12 +10,12 @@
|
||||
<small>Добавить клиента</small>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="form-floating mb-3">
|
||||
<input wire:model.live="client.firstName" id="client.firstName" type="text"
|
||||
class="form-control rounded-4 @error('client.firstName') is-invalid @enderror"
|
||||
name="client.firstName" required autocomplete="client.firstName" placeholder="Имя">
|
||||
<label for="firstName">Имя</label>
|
||||
<label for="client.firstName">Имя</label>
|
||||
@error('client.firstName')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
@ -23,12 +23,12 @@ class="form-control rounded-4 @error('client.firstName') is-invalid @enderror"
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="form-floating mb-3">
|
||||
<input wire:model.live="client.secondName" id="client.secondName" type="text"
|
||||
class="form-control rounded-4 @error('client.secondName') is-invalid @enderror"
|
||||
name="client.secondName" required autocomplete="client.secondName" placeholder="Фамилия">
|
||||
<label for="secondName">Фамилия</label>
|
||||
<label for="client.secondName">Фамилия</label>
|
||||
@error('client.secondName')
|
||||
<span class="invalid-feedback" role="alert">
|
||||
<strong>{{ $message }}</strong>
|
||||
@ -39,7 +39,7 @@ class="form-control rounded-4 @error('client.secondName') is-invalid @enderror"
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="form-floating mb-3">
|
||||
<input wire:model.live="client.phone" id="client.phone" type="tel"
|
||||
class="form-control rounded-4 @error('client.phone') is-invalid @enderror"
|
||||
@ -52,7 +52,7 @@ class="form-control rounded-4 @error('client.phone') is-invalid @enderror"
|
||||
@enderror
|
||||
</div>
|
||||
</div>
|
||||
<div class="col">
|
||||
<div class="col-12 col-xl-6">
|
||||
<div class="form-floating mb-3">
|
||||
<input wire:model.live="client.city" disabled id="client.city" type="text"
|
||||
class="form-control rounded-4 @error('client.city') is-invalid @enderror" name="client.city"
|
||||
@ -85,11 +85,10 @@ class="form-select rounded-4 @error('client.complexId') is-invalid @enderror" id
|
||||
@enderror
|
||||
</div>
|
||||
|
||||
@if($adminAccount)
|
||||
@if ($adminAccount)
|
||||
<div class="form-floating mb-3">
|
||||
<select wire:model.live="agent"
|
||||
class="form-select rounded-4 @error('agent') is-invalid @enderror" id="agent"
|
||||
name="agent" aria-label="Агент">
|
||||
<select wire:model.live="agent" class="form-select rounded-4 @error('agent') is-invalid @enderror"
|
||||
id="agent" name="agent" aria-label="Агент">
|
||||
<option selected></option>
|
||||
@foreach ($agents as $agent)
|
||||
<option value="{{ $agent->id }}">
|
||||
@ -137,8 +136,7 @@ class="bi bi-check-circle-fill" viewBox="0 0 16 16">
|
||||
<div class="text-center fs-5 ">Мы проверим его уникальность и направим Вам информацию в личном
|
||||
кабинете</div>
|
||||
<div class="text-center mt-3">
|
||||
<button wire:click="resetData"
|
||||
class="btn active border-white border-3 rounded">Продолжить</button>
|
||||
<button wire:click="resetData" class="btn active border-white border-3 rounded">Продолжить</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@ -156,17 +154,15 @@ class="bi bi-emoji-astonished" viewBox="0 0 16 16">
|
||||
<div class="text-center fs-5 ">Кажется, возникла проблема на нашей стороне, мы уже ее решаем.
|
||||
Попробуйте зайти сюда позже.</div>
|
||||
<div class="text-center my-3">
|
||||
<button wire:click="back"
|
||||
class="btn btn-lg active border-2 rounded">Повторить</button>
|
||||
<button wire:click="back" class="btn btn-lg active border-2 rounded">Повторить</button>
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@script
|
||||
<script>
|
||||
|
||||
function checkPhoneFormat()
|
||||
{
|
||||
alert(1);return;
|
||||
<script>
|
||||
function checkPhoneFormat() {
|
||||
alert(1);
|
||||
return;
|
||||
var digits = phone.replace(/^8/, '7').replace(/[^\d]+/, '');
|
||||
if (digits.length < 11) {
|
||||
return phone;
|
||||
@ -187,6 +183,6 @@ function checkPhoneFormat()
|
||||
digits.replace(/^(\d)(\d+)(\d\d\d)(\d\d)(\d\d)$/, '+$1 $2 $3‒$4‒$5') :
|
||||
digits.replace(/^(\d)(\d+)(\d\d\d)(\d\d)(\d\d)$/, '+$1$2 $3‒$4‒$5');
|
||||
}
|
||||
</script>
|
||||
</script>
|
||||
@endscript
|
||||
</div>
|
||||
|
||||
57
resources/views/livewire/main-menu.blade.php
Normal file
57
resources/views/livewire/main-menu.blade.php
Normal file
@ -0,0 +1,57 @@
|
||||
<div>
|
||||
<ul class="nav flex flex-md-column ">
|
||||
@if (in_array($roles::AGENT, $userRoles))
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="{{ route('home') }}"
|
||||
class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active" aria-current="page">
|
||||
<i class="bi bi-columns-gap"></i> <span class="d-none d-lg-inline text-truncate">Главная</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if (in_array($roles::AGENT, $userRoles) || in_array($roles::COMPANY_ADMIN, $userRoles))
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="{{ route('clients.table') }}"
|
||||
class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active" aria-current="page">
|
||||
<i class="bi bi-person"></i> <span class="d-none d-lg-inline">Клиенты</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
@if (in_array($roles::AGENT, $userRoles) || in_array($roles::COMPANY_ADMIN, $userRoles))
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="/projects" class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active"
|
||||
aria-current="page">
|
||||
<i class="bi bi-book"></i> <span class="d-none d-lg-inline">Проекты</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="/news" class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active"
|
||||
aria-current="page">
|
||||
<i class="bi bi-layers"></i> <span class="d-none d-lg-inline">Новости</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@if (in_array($roles::COMPANY_ADMIN, $userRoles))
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="{{ route('company.agents.table') }}"
|
||||
class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active" aria-current="page">
|
||||
<i class="bi bi-people"></i> <span class="d-none d-lg-inline">Агенты</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
@if (in_array($roles::COMPANY_ADMIN, $userRoles))
|
||||
<li class="nav-item text-center m-2">
|
||||
<a href="{{ route('company.details') }}"
|
||||
class="nav-link d-flex align-items-center gap-2 fs-5 border rounded-4 active" aria-current="page">
|
||||
<i class="bi bi-gear"></i> <span class="d-none d-lg-inline">Настройки</span>
|
||||
</a>
|
||||
</li>
|
||||
@endif
|
||||
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
@ -14,7 +14,7 @@
|
||||
</style>
|
||||
<div class="container">
|
||||
<div>
|
||||
<div class="d-flex mb-3">
|
||||
<div class="d-lg-flex mb-3">
|
||||
<div class="p-2 border rounded-3 border-1 p-1 bg-white">
|
||||
<input type="radio" class="btn-check" name="options-base" id="option5" autocomplete="off" checked>
|
||||
<label class="btn p-2 fs-5" for="option5">Все</label>
|
||||
@ -28,7 +28,7 @@
|
||||
<input type="radio" class="btn-check" name="options-base" id="option7" autocomplete="off">
|
||||
<label class="btn p-2 fs-5" for="option7">Ипотека</label>
|
||||
</div>
|
||||
<div class="ms-auto p-2 hstack gap-2">
|
||||
<div class="ms-auto py-2 hstack gap-2">
|
||||
<select class="form-select form-select-lg bg-white" aria-label="Large select example">
|
||||
<option selected>Город: любой</option>
|
||||
<option value="1">Иркутск</option>
|
||||
@ -48,8 +48,8 @@
|
||||
|
||||
<div>
|
||||
@for ($i = 0; $i <= 3; $i++)
|
||||
<div class="d-flex">
|
||||
<div class="card flex-fill me-2 border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="d-lg-flex">
|
||||
<div class="card flex-fill border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="rounded" alt="...">
|
||||
@ -66,7 +66,7 @@ class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill
|
||||
<p class="card-text text-secondary">10 августа 2024 г.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill me-2 border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="card flex-fill border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="rounded" alt="...">
|
||||
@ -83,7 +83,7 @@ class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill
|
||||
<p class="card-text text-secondary">10 августа 2024 г.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill me-2 border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="card flex-fill border-0 p-2 m-2 bg-white" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="rounded" alt="...">
|
||||
|
||||
@ -14,8 +14,8 @@
|
||||
</style>
|
||||
<div class="container">
|
||||
<div>
|
||||
<div class="d-flex mb-3">
|
||||
<div class="p-2 border rounded-3 border-1 p-1 bg-white">
|
||||
<div class="d-lg-flex">
|
||||
<div class="p-2 border rounded-3 border-1 bg-white ">
|
||||
<input type="radio" class="btn-check" name="options-base" id="option5" autocomplete="off" checked>
|
||||
<label class="btn p-2 fs-5" for="option5">Все</label>
|
||||
|
||||
@ -25,7 +25,7 @@
|
||||
<input type="radio" class="btn-check" name="options-base" id="option7" autocomplete="off">
|
||||
<label class="btn p-2 fs-5" for="option7">Приобретенные</label>
|
||||
</div>
|
||||
<div class="ms-auto p-2 hstack gap-2">
|
||||
<div class="ms-auto py-2 hstack gap-2">
|
||||
<select class="form-select form-select-lg bg-white" aria-label="Large select example">
|
||||
<option selected>Город: любой</option>
|
||||
<option value="1">Иркутск</option>
|
||||
@ -40,13 +40,14 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex mb-3">
|
||||
<div class="d-none d-lg-flex my-3">
|
||||
<div class="me-2">
|
||||
<div class="fw-bold fs-6 text-secondary">
|
||||
Комнатность
|
||||
</div>
|
||||
<div class="border rounded-3 bg-white p-1">
|
||||
<input type="radio" class="btn-check" name="options-base1" id="option10" autocomplete="off" checked>
|
||||
<input type="radio" class="btn-check" name="options-base1" id="option10" autocomplete="off"
|
||||
checked>
|
||||
<label class="btn p-2 fs-5" for="option10">Студия</label>
|
||||
<div class="vr"></div>
|
||||
<input type="radio" class="btn-check" name="options-base1" id="option11" autocomplete="off">
|
||||
@ -82,7 +83,8 @@
|
||||
Срок заселения
|
||||
</div>
|
||||
<div class="border rounded-3 bg-white p-1">
|
||||
<input type="radio" class="btn-check" name="options-base2" id="option20" autocomplete="off" checked>
|
||||
<input type="radio" class="btn-check" name="options-base2" id="option20" autocomplete="off"
|
||||
checked>
|
||||
<label class="btn p-2 fs-5" for="option20">Сдан</label>
|
||||
<div class="vr"></div>
|
||||
<input type="radio" class="btn-check" name="options-base2" id="option21" autocomplete="off">
|
||||
@ -101,7 +103,8 @@
|
||||
|
||||
</div>
|
||||
<div class="border rounded-3 bg-white p-1">
|
||||
<input type="radio" class="btn-check" name="options-base3" id="option30" autocomplete="off" checked>
|
||||
<input type="radio" class="btn-check" name="options-base3" id="option30" autocomplete="off"
|
||||
checked>
|
||||
<label class="btn p-2 fs-5" for="option30">
|
||||
<i class="bi bi-grid-fill"></i>
|
||||
</label>
|
||||
@ -115,183 +118,73 @@
|
||||
</div>
|
||||
|
||||
<div>
|
||||
<div class="d-flex">
|
||||
<div class="card flex-fill me-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
@for ($i = 0; $i <= 3; $i++)
|
||||
<div class="d-lg-flex">
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill mx-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill ms-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span
|
||||
class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex mt-3">
|
||||
<div class="card flex-fill me-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill mx-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill ms-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex mt-3">
|
||||
<div class="card flex-fill me-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill mx-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill ms-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
<div class="position-absolute bottom-0 start-0 m-3">
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Новые
|
||||
корпуса</span>
|
||||
<span class="badge bg-light text-dark border-secondary bg-opacity-75 fs-6 rounded-pill">Ипотека
|
||||
5%</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="d-flex card-title fw-bold">
|
||||
<span class="">Пионер</span>
|
||||
<span class="ms-auto fw-bold fs-6" style="color:#e6662a">от 4,5 млн. Р</span>
|
||||
</h5>
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endfor
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
@endsection
|
||||
|
||||
@ -33,7 +33,7 @@ class="list-group-item list-group-item-action p-3 bg-white rounded border border
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6">
|
||||
<div class="px-5 py-3 bg-primary border rounded-3 mx-auto d-flex align-items-center"
|
||||
<div class="p-2 px-sm-5 py-sm-3 bg-primary border rounded-3 mx-auto d-flex align-items-center"
|
||||
style="min-height:30em;">
|
||||
<livewire:createClientForm />
|
||||
</div>
|
||||
@ -45,8 +45,8 @@ class="list-group-item list-group-item-action p-3 bg-white rounded border border
|
||||
<div class="fs-5 fw-bold">Новости</div>
|
||||
<div class="ms-auto p-2">Смотреть все</div>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<div class="flex-fill card mb-3 placeholder-glow me-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="d-lg-flex">
|
||||
<div class="flex-fill card mb-3 placeholder-glow m-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="row g-0 h-100">
|
||||
<div class="col-md-6">
|
||||
<div class="card-body">
|
||||
@ -58,14 +58,14 @@ class="badge bg-body-secondary text-dark border-secondary bg-opacity-75 fs-6 rou
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 bg-secondary bg-opacity-50 rounded-end"
|
||||
style="background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
style="height:200px;background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
<a href="#" class="btn btn-light btn-lg rounded-4 position-absolute bottom-0 end-0 m-3">
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-fill card mb-3 placeholder-glow mx-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="flex-fill card mb-3 placeholder-glow m-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="row g-0 h-100">
|
||||
<div class="col-md-6">
|
||||
<div class="card-body">
|
||||
@ -77,14 +77,14 @@ class="badge bg-body-secondary text-dark border-secondary bg-opacity-75 fs-6 rou
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 bg-secondary bg-opacity-50 rounded-end"
|
||||
style="background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
style="height:200px;background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
<a href="#" class="btn btn-light btn-lg rounded-4 position-absolute bottom-0 end-0 m-3">
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex-fill card mb-3 placeholder-glow ms-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="flex-fill card mb-3 placeholder-glow m-2 bg-white" style="min-height:200px; max-width: 540px;">
|
||||
<div class="row g-0 h-100">
|
||||
<div class="col-md-6">
|
||||
<div class="card-body">
|
||||
@ -96,7 +96,7 @@ class="badge bg-body-secondary text-dark border-secondary bg-opacity-75 fs-6 rou
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6 bg-secondary bg-opacity-50 rounded-end"
|
||||
style="background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
style="height:200px;background-image:url('https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg')">
|
||||
<a href="#" class="btn btn-light btn-lg rounded-4 position-absolute bottom-0 end-0 m-3">
|
||||
<i class="bi bi-arrow-right"></i>
|
||||
</a>
|
||||
@ -110,8 +110,8 @@ class="badge bg-body-secondary text-dark border-secondary bg-opacity-75 fs-6 rou
|
||||
<div class="fs-5 fw-bold">Избранное</div>
|
||||
<div class="ms-auto p-2">Смотреть все</div>
|
||||
</div>
|
||||
<div class="d-flex">
|
||||
<div class="card flex-fill me-2" style="">
|
||||
<div class="d-lg-flex">
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
@ -130,7 +130,7 @@ class="" alt="...">
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill mx-2" style="">
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
@ -149,7 +149,7 @@ class="" alt="...">
|
||||
<p class="card-text">Иркутск, ул. 4-я Совесткая, 11</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="card flex-fill ms-2" style="">
|
||||
<div class="card flex-fill m-2" style="">
|
||||
<div class="card-img-top ratio ratio-16x9">
|
||||
<img src="https://img3.sibdom.ru/images/photo_crop_282_212/houses/photo_main/97/97be/97be2371dd0bba9c4605c3ea6f06e213.jpg"
|
||||
class="" alt="...">
|
||||
|
||||
@ -5,6 +5,7 @@
|
||||
|
||||
use App\Http\Controllers\ConfirmClientFromBitrix;
|
||||
use App\Http\Controllers\Company\ConfirmCompanyController;
|
||||
use App\Http\Controllers\Bitrix\ClientsApiController;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@ -17,9 +18,13 @@
|
||||
|
|
||||
*/
|
||||
|
||||
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
|
||||
Route::middleware('auth:sanctum')->get('/user', function (Request $request)
|
||||
{
|
||||
return $request->user();
|
||||
});
|
||||
});
|
||||
|
||||
Route::post('/client/confirm', [ConfirmClientFromBitrix::class, 'confirm'])->name('deal.confirm');
|
||||
Route::post('/company/status/update', ConfirmCompanyController::class)->name('company.status.update');
|
||||
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');
|
||||
|
||||
@ -39,6 +39,7 @@
|
||||
{
|
||||
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('/contract/{contract}', [App\Http\Controllers\Deal\ContractController::class, 'index'])->name('contract');
|
||||
Route::get('/company/details/', [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');
|
||||
|
||||
Loading…
Reference in New Issue
Block a user