Proyectos de Subversion LeadersLinked - Services

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
164 efrain 1
<?php
2
 
3
declare(strict_types=1);
4
 
5
namespace LeadersLinked\Mapper;
6
 
7
use LeadersLinked\Model\HighPerformanceTeamMember;
8
use LeadersLinked\Model\HighPerformanceTeam;
9
use LeadersLinked\Model\User;
10
use LeadersLinked\Mapper\Common\MapperCommon;
11
use Laminas\Db\Adapter\AdapterInterface;
12
use LeadersLinked\Hydrator\ObjectPropertyHydrator;
13
use Laminas\Db\ResultSet\HydratingResultSet;
14
use Laminas\Paginator\Adapter\DbSelect;
15
use Laminas\Paginator\Paginator;
16
 
17
 
18
class HighPerformanceTeamMemberMapper extends MapperCommon
19
{
20
    const _TABLE = 'tbl_high_performance_team_group_members';
21
 
22
    /**
23
     *
24
     * @var HighPerformanceTeamMemberMapper
25
     */
26
    private static $_instance;
27
 
28
    /**
29
     *
30
     * @param AdapterInterface $adapter
31
     */
32
    private function __construct($adapter)
33
    {
34
        parent::__construct($adapter);
35
    }
36
 
37
    /**
38
     *
39
     * @param AdapterInterface $adapter
40
     * @return \LeadersLinked\Mapper\HighPerformanceTeamMemberMapper
41
     */
42
    public static function getInstance($adapter)
43
    {
44
        if(self::$_instance == null) {
45
            self::$_instance = new HighPerformanceTeamMemberMapper($adapter);
46
        }
47
        return self::$_instance;
48
    }
49
 
50
    /**
51
     *
52
     * @param \LeadersLinked\Model\HighPerformanceTeamMember $record
53
     * @return boolean
54
     */
55
    public function insert($record)
56
    {
57
        $hydrator = new ObjectPropertyHydrator();
58
        $values = $hydrator->extract($record);
59
        $values = $this->removeEmpty($values);
60
        $insert = $this->sql->insert(self::_TABLE);
61
        $insert->values($values);
62
 
63
 
64
        $result = $this->executeInsert($insert);
65
        if($result) {
66
            $record->id = $this->lastInsertId;
67
        }
68
 
69
        return $result;
70
 
71
    }
72
 
73
    /**
74
     *
75
     * @param \LeadersLinked\Model\HighPerformanceTeamMember $record
76
     * @return boolean
77
     */
78
    public function update($record)
79
    {
80
        $hydrator = new ObjectPropertyHydrator();
81
        $values = $hydrator->extract($record);
82
        $values = $this->removeEmpty($values);
83
 
84
        $update = $this->sql->update(self::_TABLE);
85
        $update->set($values);
86
        $update->where->equalTo('id', $record->id);
87
        return $this->executeUpdate($update);
88
    }
89
 
90
    /**
91
     *
92
     * @param int $id
93
     * @return boolean
94
     */
95
    public function delete($id)
96
    {
97
        $delete = $this->sql->delete(self::_TABLE);
98
        $delete->where->equalTo('id', $id);
99
 
100
        return $this->executeDelete($delete);
101
    }
102
 
103
    /**
104
     *
105
     * @param int $group_id
106
     * @param int $user_id
107
     * @return \LeadersLinked\Model\HighPerformanceTeamMember
108
     */
109
    public function fetchOneByGroupIdAndUserId($group_id, $user_id)
110
    {
111
        $prototype = new HighPerformanceTeamMember();
112
 
113
        $select = $this->sql->select(self::_TABLE);
114
        $select->where->equalTo('group_id', $group_id)->and->equalTo('user_id', $user_id);
115
 
116
        return $this->executeFetchOneObject($select, $prototype);
117
    }
118
 
119
    /**
120
     *
121
     * @param int $user_id
122
     * @return \LeadersLinked\Model\HighPerformanceTeamMember[]
123
     */
124
    public function fetchAllByUserId($user_id)
125
    {
126
        $prototype = new HighPerformanceTeamMember();
127
 
128
        $select = $this->sql->select(self::_TABLE);
129
        $select->where->equalTo('user_id', $user_id);
130
 
131
        return $this->executeFetchOneObject($select, $prototype);
132
    }
133
 
134
    /**
135
     *
136
     * @param int $user_id
137
     * @return \LeadersLinked\Model\HighPerformanceTeamMember[]
138
     */
139
    public function fetchAllMyGroupsByUserId($user_id)
140
    {
141
        $prototype = new HighPerformanceTeamMember();
142
 
143
        $select = $this->sql->select(self::_TABLE);
144
        $select->where->equalTo('user_id', $user_id);
145
        $select->where->equalTo('type', HighPerformanceTeamMember::TYPE_CREATOR);
146
 
147
 
148
        return $this->executeFetchOneObject($select, $prototype);
149
    }
150
 
151
}