/** * {@inheritDoc} */ public function load(ObjectManager $manager) { $admin = new User(); $admin->setFullName('Admin ADMIN'); $admin->setLogin('admin'); $admin->setMail('*****@*****.**'); $admin->setIsAdmin(true); $admin->setAvatar('admin.png'); $admin->setBirthday(new \DateTime()); $admin->setLastVisitHome(new \DateTime()); $admin->setReadOnlyExpirationDate(new \DateTime()); $user = new User(); $user->setFullName('User USER'); $user->setLogin('user'); $user->setMail('*****@*****.**'); $user->setIsAdmin(false); $user->setAvatar('user.png'); $user->setBirthday(new \DateTime()); $user->setLastVisitHome(new \DateTime()); $user->setReadOnlyExpirationDate(new \DateTime()); $orga = new Organization(); $orga->setName('Orga ORGA'); $orga->setLogin('orga'); $orga->setContactMail('*****@*****.**'); $manager->persist($admin); $manager->persist($user); $manager->persist($orga); $membership = new Member(); $membership->setOrganization($orga); $membership->setUser($user); $membership->addPermission('daymail'); $manager->persist($membership); $manager->flush(); $this->addReference('user_admin', $admin); $this->addReference('user_user', $user); $this->addReference('user_orga', $orga); $this->addReference('user_membership', $orga); }
/** * @Route("/orga/members/{page}", defaults={"page" = 1}, requirements={"page" = "\d+"}, name="orga_admin_members") * @Template() */ public function membersAction($page) { if (!$this->getUserLayer()->isOrga()) { return $this->createAccessDeniedResponse(); } /** @var $em EntityManager */ $em = $this->getDoctrine()->getManager(); $members = $em->createQueryBuilder()->select('m, u')->from('EtuUserBundle:Member', 'm')->leftJoin('m.user', 'u')->where('m.organization = :orga')->setParameter('orga', $this->getUser()->getId())->orderBy('m.role', 'DESC')->addOrderBy('u.lastName')->getQuery(); $members = $this->get('knp_paginator')->paginate($members, $page, 20); $member = new Member(); $member->setOrganization($this->getUser()); $roles = Member::getAvailableRoles(); foreach ($roles as $key => $role) { $roles[$key] = 'user.orga.role.' . $role; } $form = $this->createFormBuilder($member)->add('user', 'user')->add('role', 'choice', array('choices' => $roles))->getForm(); $request = $this->getRequest(); if ($request->getMethod() == 'POST' && $form->submit($request)->isValid()) { /** @var $user User */ $user = $em->createQueryBuilder()->select('u')->from('EtuUserBundle:User', 'u')->where('u.login = :login')->orWhere('u.fullName = :fullName')->setParameter('login', $member->getUser())->setParameter('fullName', $member->getUser())->setMaxResults(1)->getQuery()->getOneOrNullResult(); if (!$user) { $this->get('session')->getFlashBag()->set('message', array('type' => 'error', 'message' => 'user.orga.members.error_user_not_fount')); } else { $member->setUser($user); // Keep the membership as unique $membership = $em->getRepository('EtuUserBundle:Member')->findOneBy(array('user' => $member->getUser(), 'organization' => $member->getOrganization())); if (!$membership) { if ($member->getRole() == Member::ROLE_PRESIDENT) { $this->getUser()->setPresident($member->getUser()); } $this->getUser()->addCountMembers(); $em->persist($this->getUser()); $this->getSubscriptionsManager()->subscribe($member->getUser(), 'orga', $this->getUser()->getId()); $em->persist($member); $em->flush(); $this->get('session')->getFlashBag()->set('message', array('type' => 'success', 'message' => 'user.orga.members.confirm_add')); } else { $this->get('session')->getFlashBag()->set('message', array('type' => 'error', 'message' => 'user.orga.members.error_exists')); } } return $this->redirect($this->generateUrl('orga_admin_members', array('page' => $page))); } return array('pagination' => $members, 'form' => $form->createView()); }