Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
TaskView
0.00% covered (danger)
0.00%
0 / 20
0.00% covered (danger)
0.00%
0 / 3
110
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 2
0.00% covered (danger)
0.00%
0 / 1
2
 getAccountImage
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
12
 getStatus
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
42
1<?php
2/**
3 * Jingga
4 *
5 * PHP Version 8.1
6 *
7 * @package   Modules\Tasks
8 * @copyright Dennis Eichhorn
9 * @license   OMS License 2.0
10 * @version   1.0.0
11 * @link      https://jingga.app
12 */
13declare(strict_types=1);
14
15namespace Modules\Tasks\Views;
16
17use Modules\Media\Models\Media;
18use Modules\Media\Models\NullMedia;
19use Modules\Profile\Models\ProfileMapper;
20use Modules\Tasks\Models\TaskStatus;
21use phpOMS\Localization\L11nManager;
22use phpOMS\Message\RequestAbstract;
23use phpOMS\Message\ResponseAbstract;
24use phpOMS\Uri\UriFactory;
25use phpOMS\Views\View;
26
27/**
28 * Task view class.
29 *
30 * @package Modules\Tasks
31 * @license OMS License 2.0
32 * @link    https://jingga.app
33 * @since   1.0.0
34 */
35class TaskView extends View
36{
37    /**
38     * User profile image.
39     *
40     * @var Media
41     * @since 1.0.0
42     */
43    public Media $defaultProfileImage;
44
45    /**
46     * Constructor
47     *
48     * @since 1.0.0
49     */
50    public function __construct(L11nManager $l11n = null, RequestAbstract $request = null, ResponseAbstract $response = null)
51    {
52        $this->defaultProfileImage = new NullMedia();
53        parent::__construct($l11n, $request, $response);
54    }
55
56    /**
57     * Get the profile image
58     *
59     * If the profile doesn't have an image a random default image is used
60     *
61     * @param int $account Account
62     *
63     * @return string
64     *
65     * @since 1.0.0
66     */
67    public function getAccountImage(int $account) : string
68    {
69        /** @var \Modules\Profile\Models\Profile $profile */
70        $profile = ProfileMapper::get()
71            ->with('image')
72            ->where('account', $account)
73            ->execute();
74
75        if ($profile->id === 0 || $profile->image->getPath() === '') {
76            return UriFactory::build($this->defaultProfileImage->getPath());
77        }
78
79        return UriFactory::build($profile->image->getPath());
80    }
81
82    /**
83     * Get task status color.
84     *
85     * @param int $status Status
86     *
87     * @return string
88     *
89     * @since 1.0.0
90     */
91    public function getStatus(int $status) : string
92    {
93        if ($status === TaskStatus::OPEN) {
94            return 'darkblue';
95        } elseif ($status === TaskStatus::DONE) {
96            return 'green';
97        } elseif ($status === TaskStatus::WORKING) {
98            return 'purple';
99        } elseif ($status === TaskStatus::CANCELED) {
100            return 'red';
101        } elseif ($status === TaskStatus::SUSPENDED) {
102            return 'yellow';
103        }
104
105        return 'black';
106    }
107}