Passed
Branch development (62ef01)
by Theodoros
06:18
created

IndexController   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 55
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 55
rs 10
c 0
b 0
f 0
wmc 5

4 Methods

Rating   Name   Duplication   Size   Complexity  
A categoryAction() 0 3 1
A productAction() 0 3 1
A getResponse() 0 10 1
A getLocale() 0 6 2
1
<?php
2
3
/**
4
 * MIT License
5
 * Use of this software requires acceptance of the Evaluation License Agreement. See LICENSE file.
6
 */
7
8
namespace SprykerEco\Zed\Econda\Communication\Controller;
9
10
use Spryker\Zed\Kernel\Communication\Controller\AbstractController;
11
use Symfony\Component\HttpFoundation\Request;
12
13
/**
14
 * @method \SprykerEco\Zed\Econda\Business\EcondaFacadeInterface getFacade()
15
 */
16
class IndexController extends AbstractController
17
{
18
    const CATEGORIES = 'categories';
19
    const PRODUCTS = 'products';
20
21
    /**
22
     * @param \Symfony\Component\HttpFoundation\Request $request
23
     *
24
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
25
     */
26
    public function categoryAction(Request $request)
27
    {
28
        return $this->getResponse($request, self::CATEGORIES);
29
    }
30
31
    /**
32
     * @param \Symfony\Component\HttpFoundation\Request $request
33
     *
34
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
35
     */
36
    public function productAction(Request $request)
37
    {
38
        return $this->getResponse($request, self::PRODUCTS);
39
    }
40
41
    /**
42
     * @param \Symfony\Component\HttpFoundation\Request $request
43
     * @param string $type
44
     *
45
     * @return \Symfony\Component\HttpFoundation\StreamedResponse
46
     */
47
    private function getResponse(Request $request, $type)
48
    {
49
        $fileContent = $this->getFacade()->getFileContent($type, $this->getLocale($request));
50
51
        return $this->streamedResponse(
52
            function () use ($fileContent) {
53
                echo $fileContent;
54
            },
55
            200,
56
            ["Content-type" => "text/csv", 'Content-Disposition' => "attachment; filename='{$type}.csv'"]
57
        );
58
    }
59
60
    /**
61
     * @param \Symfony\Component\HttpFoundation\Request $request
62
     *
63
     * @return string
64
     */
65
    protected function getLocale(Request $request)
66
    {
67
        if ($request->query->get('locale') !== null) {
68
            return $request->query->get('locale');
69
        }
70
        return $this->getApplication()['locale'];
71
    }
72
}
73