Skip to content

Commit

Permalink
Fixed search
Browse files Browse the repository at this point in the history
  • Loading branch information
andrewdrake committed Aug 25, 2024
1 parent fd5353a commit 6ce76cd
Show file tree
Hide file tree
Showing 15 changed files with 161 additions and 106 deletions.
14 changes: 10 additions & 4 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- SMS
- Payments

<!--- ## 1.0.0 - 2023-XX-XX
<!--- ## 1.0.0 - 2024-XX-XX
### Added
### Changed
### Fixed
### Removed --->

## 1.2.1 - 2023-08-24
## 1.2.2 - 2024-08-25
### Fixed
- Kanban board search
- Search when not using encrypted fields
- Bug when custom field has been deleted

## 1.2.1 - 24-08-24
### Fixed
- Force seed pipeline settings

## 1.2.0 - 2023-08-24
## 1.2.0 - 2024-08-24
### Added
- Kanban boards
- Custom Fields
Expand All @@ -38,7 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- But when added organization
- Version check

## 1.1.0 - 2023-06-17
## 1.1.0 - 2024-06-17
### Added
- Support for Laravel 11
- Product barcode
Expand Down
2 changes: 1 addition & 1 deletion config/package.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,6 @@
|
*/

'version' => '1.2.1',
'version' => '1.2.2',

];
4 changes: 2 additions & 2 deletions resources/views/deals/partials/card-board.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
@endcomponent

@component('laravel-crm::components.card-table')

<livewire:live-deal-board />
<livewire:live-deal-board :deals="$deals" />

@endcomponent

Expand Down
2 changes: 1 addition & 1 deletion resources/views/leads/partials/card-board.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@

@component('laravel-crm::components.card-table')

<livewire:live-lead-board />
<livewire:live-lead-board :leads="$leads" />

@endcomponent

Expand Down
4 changes: 2 additions & 2 deletions resources/views/quotes/partials/card-board.blade.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
@endcomponent

@component('laravel-crm::components.card-table')

<livewire:live-quote-board />
<livewire:live-quote-board :quotes="$quotes" />

@endcomponent

Expand Down
40 changes: 23 additions & 17 deletions src/Http/Controllers/DealController.php
Original file line number Diff line number Diff line change
Expand Up @@ -285,15 +285,6 @@ public function search(Request $request)
{
$viewSetting = auth()->user()->crmSettings()->where('name', 'view_deals')->first();

if(! $viewSetting) {
auth()->user()->crmSettings()->create([
'name' => 'view_deals',
'value' => 'list',
]);
} elseif($viewSetting->value == 'board') {
return redirect(route('laravel-crm.deals.board'));
}

$searchValue = Deal::searchValue($request);

if (! $searchValue || trim($searchValue) == '') {
Expand All @@ -318,8 +309,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand All @@ -331,12 +329,20 @@ public function search(Request $request)
}
});

return view('laravel-crm::deals.index', [
'deals' => $deals,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Deal()))->first(),
]);
if($viewSetting->value === 'board') {
return view('laravel-crm::deals.board', [
'deals' => $deals,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null
]);
} else {
return view('laravel-crm::deals.index', [
'deals' => $deals,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Deal()))->first(),
]);
}
}

/**
Expand Down
11 changes: 9 additions & 2 deletions src/Http/Controllers/DeliveryController.php
Original file line number Diff line number Diff line change
Expand Up @@ -240,8 +240,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand Down
11 changes: 9 additions & 2 deletions src/Http/Controllers/InvoiceController.php
Original file line number Diff line number Diff line change
Expand Up @@ -254,8 +254,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand Down
41 changes: 23 additions & 18 deletions src/Http/Controllers/LeadController.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,6 @@ public function index(Request $request)
$leads = Lead::filter($params)->whereNull('converted_at')->latest()->paginate(30);
}


return view('laravel-crm::leads.index', [
'leads' => $leads,
'viewSetting' => $viewSetting->value ?? null,
Expand Down Expand Up @@ -280,15 +279,6 @@ public function search(Request $request)
{
$viewSetting = auth()->user()->crmSettings()->where('name', 'view_leads')->first();

if(! $viewSetting) {
auth()->user()->crmSettings()->create([
'name' => 'view_leads',
'value' => 'list',
]);
} elseif($viewSetting->value == 'board') {
return redirect(route('laravel-crm.leads.board'));
}

$searchValue = Lead::searchValue($request);

if (! $searchValue || trim($searchValue) == '') {
Expand All @@ -314,8 +304,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand All @@ -327,12 +324,20 @@ public function search(Request $request)
}
});

return view('laravel-crm::leads.index', [
'leads' => $leads,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Lead()))->first(),
]);
if($viewSetting->value === 'board') {
return view('laravel-crm::leads.board', [
'leads' => $leads,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null
]);
} else {
return view('laravel-crm::leads.index', [
'leads' => $leads,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Lead()))->first(),
]);
}
}

/**
Expand Down
11 changes: 9 additions & 2 deletions src/Http/Controllers/OrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -344,8 +344,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand Down
11 changes: 9 additions & 2 deletions src/Http/Controllers/PurchaseOrderController.php
Original file line number Diff line number Diff line change
Expand Up @@ -316,8 +316,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand Down
40 changes: 23 additions & 17 deletions src/Http/Controllers/QuoteController.php
Original file line number Diff line number Diff line change
Expand Up @@ -305,15 +305,6 @@ public function search(Request $request)
{
$viewSetting = auth()->user()->crmSettings()->where('name', 'view_quotes')->first();

if(! $viewSetting) {
auth()->user()->crmSettings()->create([
'name' => 'view_quotes',
'value' => 'list',
]);
} elseif($viewSetting->value == 'board') {
return redirect(route('laravel-crm.quotes.board'));
}

$searchValue = Quote::searchValue($request);

if (! $searchValue || trim($searchValue) == '') {
Expand All @@ -339,8 +330,15 @@ public function search(Request $request)
foreach ($record->getSearchable() as $field) {
if (Str::contains($field, '.')) {
$field = explode('.', $field);
if ($record->{$field[1]} && $descryptedField = decrypt($record->{$field[1]})) {
if (Str::contains(strtolower($descryptedField), strtolower($searchValue))) {

if(config('laravel-crm.encrypt_db_fields')) {
$relatedField = decrypt($record->{$field[1]});
} else {
$relatedField = $record->{$field[1]};
}

if ($record->{$field[1]} && $relatedField) {
if (Str::contains(strtolower($relatedField), strtolower($searchValue))) {
return $record;
}
}
Expand All @@ -352,12 +350,20 @@ public function search(Request $request)
}
});

return view('laravel-crm::quotes.index', [
'quotes' => $quotes,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Quote()))->first(),
]);
if($viewSetting->value === 'board') {
return view('laravel-crm::quotes.board', [
'quotes' => $quotes,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null
]);
} else {
return view('laravel-crm::quotes.index', [
'quotes' => $quotes,
'searchValue' => $searchValue ?? null,
'viewSetting' => $viewSetting->value ?? null,
'pipeline' => Pipeline::where('model', get_class(new Quote()))->first(),
]);
}
}

/**
Expand Down
25 changes: 13 additions & 12 deletions src/Http/Livewire/LiveDealBoard.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ class LiveDealBoard extends KanbanBoard
{
public $model = 'deal';

public $deals;

public function stages(): Collection
{
if($pipeline = Pipeline::where('model', get_class(new Deal()))->first()) {
Expand All @@ -30,17 +32,16 @@ public function onStageChanged($recordId, $stageId, $fromOrderedIds, $toOrderedI

public function records(): Collection
{
return Deal::get()
->map(function (Deal $deal) {
return [
'id' => $deal->id,
'title' => $deal->title,
'labels' => $deal->labels,
'stage' => $deal->pipelineStage->id ?? $this->firstStageId(),
'number' => $deal->deal_id,
'amount' => $deal->amount,
'currency' => $deal->currency,
];
});
return $this->deals->map(function (Deal $deal) {
return [
'id' => $deal->id,
'title' => $deal->title,
'labels' => $deal->labels,
'stage' => $deal->pipelineStage->id ?? $this->firstStageId(),
'number' => $deal->deal_id,
'amount' => $deal->amount,
'currency' => $deal->currency,
];
});
}
}
Loading

0 comments on commit 6ce76cd

Please sign in to comment.