SearchResultProcessor   A
last analyzed

Complexity

Total Complexity 7

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 0
Metric Value
dl 0
loc 54
c 0
b 0
f 0
wmc 7
lcom 0
cbo 0
rs 10

3 Methods

Rating   Name   Duplication   Size   Complexity  
A addFiltersToCollection() 0 13 3
A addSortOrdersToCollection() 0 9 3
A addPagingToCollection() 0 7 1
1
<?php
2
3
declare(strict_types = 1);
4
5
/**
6
 * File: SearchResultProcessor.php
7
 *
8
 * @author Bartosz Kubicki [email protected]>
9
 * @copyright Copyright (C) 2018 Lizard Media (http://lizardmedia.pl)
10
 */
11
12
namespace LizardMedia\ProductAttachment\Model\AttachmentRepository;
13
14
use \Magento\Framework\Api\SearchCriteriaInterface;
15
use \Magento\Framework\Api\SortOrder;
16
use \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
17
18
/**
19
 * Class SearchResultProcessor
20
 * @package LizardMedia\ProductAttachments\Model\AttachmentRepository
21
 */
22
class SearchResultProcessor
23
{
24
    /**
25
     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
26
     * @param \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
27
     *
28
     * @return void
29
     */
30
    public function addFiltersToCollection(
31
        SearchCriteriaInterface $searchCriteria,
32
        AbstractCollection $collection
33
    ) : void {
34
        foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
35
            $fields = $conditions = [];
36
            foreach ($filterGroup->getFilters() as $filter) {
37
                $fields[] = $filter->getField();
38
                $conditions[] = [$filter->getConditionType() => $filter->getValue()];
39
            }
40
            $collection->addFieldToFilter($fields, $conditions);
41
        }
42
    }
43
44
45
    /**
46
     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
47
     * @param \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
48
     *
49
     * @return void
50
     */
51
    public function addSortOrdersToCollection(
52
        SearchCriteriaInterface $searchCriteria,
53
        AbstractCollection $collection
54
    ) : void {
55
        foreach ((array) $searchCriteria->getSortOrders() as $sortOrder) {
56
            $direction = $sortOrder->getDirection() == SortOrder::SORT_ASC ? SortOrder::SORT_ASC : SortOrder::SORT_DESC;
57
            $collection->addOrder($sortOrder->getField(), $direction);
58
        }
59
    }
60
61
62
    /**
63
     * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
64
     * @param \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
65
     *
66
     * @return void
67
     */
68
    public function addPagingToCollection(
69
        SearchCriteriaInterface $searchCriteria,
70
        AbstractCollection $collection
71
    ) : void {
72
        $collection->setPageSize($searchCriteria->getPageSize());
73
        $collection->setCurPage($searchCriteria->getCurrentPage());
74
    }
75
}
76