• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

klinge / sl-webapp / 18124637236

30 Sep 2025 09:04AM UTC coverage: 55.3% (+4.1%) from 51.199%
18124637236

push

github

web-flow
Merge pull request #101 from klinge/dependabot/composer/league/container-tw-5.1

Update league/container requirement from ^4.2 to ^5.1

1132 of 2047 relevant lines covered (55.3%)

2.12 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

72.97
/App/Models/MedlemRepository.php
1
<?php
2

3
declare(strict_types=1);
4

5
namespace App\Models;
6

7
use PDO;
8
use Exception;
9
use Psr\Log\LoggerInterface;
10

11
class MedlemRepository extends BaseModel
12
{
13
    public $medlemmar;
14

15
    public function __construct(PDO $db, LoggerInterface $logger)
16
    {
17
        parent::__construct($db, $logger);
31✔
18
    }
19

20

21
    /**
22
     * Retrieves all members from the database.
23
     *
24
     * Fetches member and creates Medlem objects for each,
25
     * and returns them in an array sorted by last name.
26
     *
27
     * @return array Medlem[] An array of Medlem objects
28
     */
29
    public function getAll(): array
30
    {
31
        $medlemmar = [];
1✔
32

33
        $query = "SELECT id FROM Medlem ORDER BY efternamn ASC";
1✔
34
        $stmt = $this->conn->prepare($query);
1✔
35
        $stmt->execute();
1✔
36
        $members =  $stmt->fetchAll(PDO::FETCH_ASSOC);
1✔
37

38
        foreach ($members as $member) {
1✔
39
            try {
40
                $medlem = $this->createMedlem($member['id']);
1✔
41
                $medlemmar[] = $medlem;
1✔
42
            } catch (Exception $e) {
×
43
                //Do nothing right now..
44
            }
45
        }
46
        return $medlemmar;
1✔
47
    }
48

49
    // Find all Medlemmar in a role by querying Medlem, Roll, and Medlem_Roll tables
50
    // to find members with a specified roll_namn
51
    public function getMembersByRollName(string $rollName): array
52
    {
53
        $query = "SELECT m.id,m.fornamn, m.efternamn, r.roll_namn
1✔
54
            FROM  Medlem m
55
            INNER JOIN Medlem_Roll mr ON mr.medlem_id = m.id
56
            INNER JOIN Roll r ON r.id = mr.roll_id
57
            WHERE r.roll_namn = :rollnamn
58
            ORDER BY m.efternamn ASC;";
1✔
59
        $stmt = $this->conn->prepare($query);
1✔
60
        $stmt->bindParam(':rollnamn', $rollName);
1✔
61
        $stmt->execute();
1✔
62
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
1✔
63
    }
64

65
    // Query Medlem, Roll, and Medlem_Roll tables
66
    // to find members with a specified roll_namn
67
    public function getMembersByRollId(int $rollId): array
68
    {
69
        $query = "SELECT m.id,m.fornamn, m.efternamn, r.id AS roll_id, r.roll_namn
1✔
70
            FROM  Medlem m
71
            INNER JOIN Medlem_Roll mr ON mr.medlem_id = m.id
72
            INNER JOIN Roll r ON r.id = mr.roll_id
73
            WHERE r.id = :id
74
            ORDER BY m.fornamn ASC;";
1✔
75
        $stmt = $this->conn->prepare($query);
1✔
76
        $stmt->bindParam(':id', $rollId);
1✔
77
        $stmt->execute();
1✔
78
        return $stmt->fetchAll(PDO::FETCH_ASSOC);
1✔
79
    }
80

81
    /**
82
     * Retrieves member data by email.
83
     *
84
     * @param string $email The email address of the member
85
     * @return array|bool Member data array or false if not found
86
     */
87
    public function getMemberByEmail(string $email): array|bool
88
    {
89
        $stmt = $this->conn->prepare("SELECT * FROM medlem WHERE email = :email");
10✔
90
        $stmt->bindParam(':email', $email);
10✔
91
        $stmt->execute();
10✔
92

93
        $result = $stmt->fetch(PDO::FETCH_ASSOC);
10✔
94
        return $result ?: false;
10✔
95
    }
96

97
    /**
98
     * Retrieves member email addresses.
99
     *
100
     * @return array An array of member email addresses
101
     */
102
    public function getEmailForActiveMembers(): array
103
    {
104
        $query = "SELECT email FROM medlem WHERE pref_kommunikation = 1";
×
105
        $stmt = $this->conn->prepare($query);
×
106
        $stmt->execute();
×
107
        $result = $stmt->fetchAll(PDO::FETCH_ASSOC);
×
108
        //Remove rows with empty emails
109
        return array_filter($result, fn($item) => !empty($item['email']));
×
110
    }
111

112
    /**
113
     * Retrieves a member by ID.
114
     *
115
     * @param int $id The member ID
116
     * @return Medlem|null The Medlem object or null if not found
117
     */
118
    public function getById(int $id): ?Medlem
119
    {
120
        try {
121
            return $this->createMedlem($id);
×
122
        } catch (Exception $e) {
×
123
            return null;
×
124
        }
125
    }
126

127
    protected function createMedlem(int $id): Medlem
128
    {
129
        return new Medlem($this->conn, $this->logger, $id);
×
130
    }
131
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc