Add association mapping between user and cgroupinfo

pull/2715/head
Angel Fernando Quiroz Campos 7 years ago
parent 83c82ef896
commit e4db591024
  1. 2
      main/inc/lib/groupmanager.lib.php
  2. 12
      src/CoreBundle/Migrations/Schema/V200/Version20170904145500.php
  3. 31
      src/CourseBundle/Entity/CGroupInfo.php
  4. 43
      src/CourseBundle/Entity/CGroupRelTutor.php
  5. 43
      src/CourseBundle/Entity/CGroupRelUser.php
  6. 33
      src/UserBundle/Entity/User.php
  7. 2
      src/UserBundle/Repository/UserRepository.php

@ -1339,7 +1339,7 @@ class GroupManager
/** @var CGroupRelUser $subscription */
foreach ($subscriptions as $subscription) {
$users[] = api_get_user_info($subscription->getUserId());
$users[] = api_get_user_info($subscription->getUser()->getId());
}
return $users;

@ -19,6 +19,18 @@ class Version20170904145500 extends AbstractMigrationChamilo
public function up(Schema $schema)
{
$this->addSql('DELETE FROM c_group_rel_user WHERE user_id NOT IN (SELECT id FROM user)');
$this->addSql('DELETE FROM c_group_rel_user WHERE group_id NOT IN (SELECT iid FROM c_group_info)');
$this->addSql('ALTER TABLE c_group_rel_user ADD CONSTRAINT FK_C5D3D49FA76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE c_group_rel_user ADD CONSTRAINT FK_C5D3D49FFE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid)');
$this->addSql('CREATE INDEX IDX_C5D3D49FA76ED395 ON c_group_rel_user (user_id)');
$this->addSql('CREATE INDEX IDX_C5D3D49FFE54D947 ON c_group_rel_user (group_id)');
$this->addSql('DELETE FROM c_group_rel_tutor WHERE user_id NOT IN (SELECT id FROM user)');
$this->addSql('DELETE FROM c_group_rel_tutor WHERE group_id NOT IN (SELECT iid FROM c_group_info)');
$this->addSql('ALTER TABLE c_group_rel_tutor ADD CONSTRAINT FK_F6FF71ABA76ED395 FOREIGN KEY (user_id) REFERENCES user (id)');
$this->addSql('ALTER TABLE c_group_rel_tutor ADD CONSTRAINT FK_F6FF71ABFE54D947 FOREIGN KEY (group_id) REFERENCES c_group_info (iid)');
$this->addSql('CREATE INDEX IDX_F6FF71ABA76ED395 ON c_group_rel_tutor (user_id)');
$this->addSql('CREATE INDEX IDX_F6FF71ABFE54D947 ON c_group_rel_tutor (group_id)');
}
/**

@ -5,6 +5,7 @@ namespace Chamilo\CourseBundle\Entity;
use Chamilo\CoreBundle\Entity\Course;
use Chamilo\CoreBundle\Traits\CourseTrait;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
/**
@ -173,6 +174,20 @@ class CGroupInfo
*/
protected $course;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CGroupRelUser", mappedBy="group")
*/
protected $userMemberships;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CGroupRelTutor", mappedBy="group")
*/
protected $tutorMemberships;
/**
* Set name.
*
@ -600,4 +615,20 @@ class CGroupInfo
return $this;
}
/**
* @return ArrayCollection
*/
public function getUserMemberships(): ArrayCollection
{
return $this->userMemberships;
}
/**
* @return ArrayCollection
*/
public function getTutorMemberships(): ArrayCollection
{
return $this->tutorMemberships;
}
}

@ -3,6 +3,7 @@
namespace Chamilo\CourseBundle\Entity;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
/**
@ -42,29 +43,31 @@ class CGroupRelTutor
protected $id;
/**
* @var int
* @var User
*
* @ORM\Column(name="user_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User", inversedBy="tutoredCourseGroups")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
protected $userId;
protected $user;
/**
* @var int
* @var CGroupInfo
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\CourseBundle\Entity\CGroupInfo", inversedBy="tutorMemberships")
* @ORM\JoinColumn(name="group_id", referencedColumnName="iid", nullable=false)
*/
protected $groupId;
protected $group;
/**
* Set userId.
*
* @param int $userId
* @param User $user
*
* @return CGroupRelTutor
*/
public function setUserId($userId)
public function setUser(User $user)
{
$this->userId = $userId;
$this->user = $user;
return $this;
}
@ -72,35 +75,35 @@ class CGroupRelTutor
/**
* Get userId.
*
* @return int
* @return User
*/
public function getUserId()
public function getUser()
{
return $this->userId;
return $this->user;
}
/**
* Set groupId.
* Set group.
*
* @param int $groupId
* @param CGroupInfo $group
*
* @return CGroupRelTutor
*/
public function setGroupId($groupId)
public function setGroup(CGroupInfo $group)
{
$this->groupId = $groupId;
$this->group = $group;
return $this;
}
/**
* Get groupId.
* Get group.
*
* @return int
* @return CGroupInfo
*/
public function getGroupId()
public function getGroup()
{
return $this->groupId;
return $this->group;
}
/**

@ -3,6 +3,7 @@
namespace Chamilo\CourseBundle\Entity;
use Chamilo\UserBundle\Entity\User;
use Doctrine\ORM\Mapping as ORM;
/**
@ -42,18 +43,20 @@ class CGroupRelUser
protected $id;
/**
* @var int
* @var User
*
* @ORM\Column(name="user_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\UserBundle\Entity\User", inversedBy="courseGroupMemberships")
* @ORM\JoinColumn(name="user_id", referencedColumnName="id", nullable=false)
*/
protected $userId;
protected $user;
/**
* @var int
* @var CGroupInfo
*
* @ORM\Column(name="group_id", type="integer", nullable=false)
* @ORM\ManyToOne(targetEntity="Chamilo\CourseBundle\Entity\CGroupInfo", inversedBy="userMemberships")
* @ORM\JoinColumn(name="group_id", referencedColumnName="iid", nullable=false)
*/
protected $groupId;
protected $group;
/**
* @var int
@ -72,13 +75,13 @@ class CGroupRelUser
/**
* Set userId.
*
* @param int $userId
* @param int $user
*
* @return CGroupRelUser
*/
public function setUserId($userId)
public function setUser($user)
{
$this->userId = $userId;
$this->user = $user;
return $this;
}
@ -86,35 +89,35 @@ class CGroupRelUser
/**
* Get userId.
*
* @return int
* @return User
*/
public function getUserId()
public function getUser()
{
return $this->userId;
return $this->user;
}
/**
* Set groupId.
* Set group.
*
* @param int $groupId
* @param CGroupInfo $group
*
* @return CGroupRelUser
*/
public function setGroupId($groupId)
public function setGroup(CGroupInfo $group)
{
$this->groupId = $groupId;
$this->group = $group;
return $this;
}
/**
* Get groupId.
* Get group.
*
* @return int
* @return CGroupInfo
*/
public function getGroupId()
public function getGroup()
{
return $this->groupId;
return $this->group;
}
/**

@ -467,6 +467,20 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
*/
private $receivedMessages;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CGroupRelUser", mappedBy="user")
*/
private $courseGroupMemberships;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Chamilo\CourseBundle\Entity\CGroupRelTutor", mappedBy="user")
*/
private $tutoredCourseGroups;
/**
* Constructor.
*/
@ -495,6 +509,9 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
$this->expired = false;
$this->roles = [];
$this->credentialsExpired = false;
$this->courseGroupMemberships = new ArrayCollection();
$this->tutoredCourseGroups = new ArrayCollection();
}
/**
@ -1931,4 +1948,20 @@ class User extends BaseUser implements ThemeUser, EquatableInterface //implement
{
return $this->receivedMessages;
}
/**
* @return ArrayCollection
*/
public function getCourseGroupMemberships(): ArrayCollection
{
return $this->courseGroupMemberships;
}
/**
* @return ArrayCollection
*/
public function getTutoredCourseGroups(): ArrayCollection
{
return $this->tutoredCourseGroups;
}
}

@ -877,7 +877,7 @@ class UserRepository extends EntityRepository
foreach ($result as $item) {
$list = [
'Course # '.$item->getCId(),
'Group #'.$item->getGroupId(),
'Group #'.$item->getGroup()->getId(),
'Role: '.$item->getStatus(),
];
$cGroupRelUser[] = implode(', ', $list);

Loading…
Cancel
Save