Beispiel #1
0
 public function load(ObjectManager $manager)
 {
     $skills = array(array('name' => 'C#'), array('name' => 'C'), array('name' => 'C++'), array('name' => 'Objective-C'), array('name' => 'PHP'), array('name' => 'Python'), array('name' => 'Ruby'), array('name' => 'JavaScript'), array('name' => 'SQL'), array('name' => 'Assembly Language'), array('name' => 'Swift'), array('name' => 'Prototyping'), array('name' => 'Angular JS'), array('name' => 'Bootstrap'), array('name' => 'MATLAB'), array('name' => 'XML'), array('name' => 'Perl'), array('name' => 'AWS'), array('name' => 'WPF'), array('name' => 'Entity Framework'), array('name' => 'Java'), array('name' => 'Go'), array('name' => 'Dart'));
     foreach ($skills as $skill) {
         $entity = new Skill();
         $entity->setName($skill['name']);
         $manager->persist($entity);
     }
     $manager->flush();
 }
Beispiel #2
0
 /**
  * Edits an existing User entity.
  *
  * @Route("/{id}/update", name="user_update", options={"expose"=true})
  * @Method("POST")
  * @Template("AppBundle:User:edit.html.twig")
  */
 public function updateAction(Request $request, $id)
 {
     $em = $this->getDoctrine()->getManager();
     $user = $em->getRepository('AppBundle:User')->find($id);
     $skillsRequest = $request->get('skills');
     $accounts = $request->get('account');
     $dateAdmission = $request->get('admissionDate');
     $password = $request->get('password');
     $image = $request->files->get('image');
     $position = $em->getRepository('AppBundle:Position')->find($request->get('position'));
     /**************** INICIO PROCESOS CON SKILLS ************************************/
     $userSkillArray = $user->getSkills();
     //Arreglo de skills actuales del usuario seleccionado
     $skillsArray = [];
     foreach ($userSkillArray as $us) {
         $userSkillName = $us->getSkill()->getName();
         //El arreglo funciona sólo con nombres de skill
         array_push($skillsArray, $userSkillName);
     }
     if (!empty($skillsRequest)) {
         //Si existe una lista de skills en el Request
         $skillsRequestId = [];
         //Arreglo de skills en el Request
         foreach ($skillsRequest as $skill) {
             $name = $skill['name'];
             //El arreglo funciona sólo con nombres de skills
             array_push($skillsRequestId, $name);
         }
         $addSkill = array_diff($skillsRequestId, $skillsArray);
         //Lista de nombres de skills para agregar
         $removeSkills = array_diff($skillsArray, $skillsRequestId);
         //Lista de nombres de skills para eliminar
         foreach ($skillsRequestId as $skill) {
             //Por cada skill del Request verifica si una skill previamente agregada se quiere insertar nuevamente
             $skillEntityToManage = $em->getRepository('AppBundle:Skill')->findOneByName($skill);
             if (!is_null($skillEntityToManage)) {
                 $skillId = $skillEntityToManage->getSkillId();
                 $foundHiddenSkill = $em->getRepository('AppBundle:UserSkill')->findIdToManage($id, $skillId);
                 if (!empty($foundHiddenSkill)) {
                     $userSkill = $foundHiddenSkill[0];
                     if ($userSkill->getIsActive() == 0) {
                         $userSkill->setIsActive(1);
                         $em->persist($userSkill);
                         $em->flush();
                     }
                 }
             }
         }
         if (!empty($addSkill)) {
             //Si hay skills para agregar se establece una nueva relación de usuarios con skills
             foreach ($addSkill as $add) {
                 $skillEntityByName = $em->getRepository('AppBundle:Skill')->findOneByName($add);
                 if (is_null($skillEntityByName)) {
                     //Si la skill es nueva se agrega a la base de datos y posteriormente se crea la relación
                     $s = new Skill();
                     $s->setName($add);
                     $em->persist($s);
                     $em->flush();
                     $s->getSkillId();
                     $userSkill = new UserSkill();
                     $userSkill->setSkill($s);
                     $userSkill->setUser($user);
                     $userSkill->setIsActive(1);
                     $em->persist($userSkill);
                     $em->flush();
                 } else {
                     //Si la skill existe, sólo se establece la nueva relación
                     $userSkill = new UserSkill();
                     $userSkill->setSkill($skillEntityByName);
                     $userSkill->setUser($user);
                     $userSkill->setIsActive(1);
                     $em->persist($userSkill);
                     $em->flush();
                 }
             }
         }
         if (!empty($removeSkills)) {
             //Si existen skills para eliminar se actualiza la relación
             foreach ($removeSkills as $remove) {
                 $skillEntityToRemove = $em->getRepository('AppBundle:Skill')->findOneByName($remove)->getSkillId();
                 $foundUserSkill = $em->getRepository('AppBundle:UserSkill')->findIdToManage($id, $skillEntityToRemove);
                 $userSkill = $foundUserSkill[0];
                 $userSkill->setIsActive(0);
                 //Realmente no se elimina la skill, sólo se oculta
                 $em->persist($userSkill);
                 $em->flush();
             }
         }
     } else {
         //Si no existe una lista de skills en el Request se ocultan todas las relaciones
         foreach ($skillsArray as $skill) {
             $skillEntityToRemove = $em->getRepository('AppBundle:Skill')->findOneByName($skill)->getSkillId();
             $foundUserSkill = $em->getRepository('AppBundle:UserSkill')->findIdToManage($id, $skillEntityToRemove);
             $userSkill = $foundUserSkill[0];
             $userSkill->setIsActive(0);
             $em->persist($userSkill);
             $em->flush();
         }
     }
     /****************FIN PROCESOS CON SKILLS ************************************/
     /*************** INICIO PROCESOS DE CUENTAS ******************************/
     if (!empty($accounts)) {
         $userAccounts = $user->getAccounts();
         foreach ($userAccounts as $userAccount) {
             $user->removeAccount($userAccount);
             $em->persist($user);
             $em->flush();
         }
         foreach ($accounts as $requestAccount) {
             $account_AccountId = $em->getRepository('AppBundle:Account')->find($requestAccount);
             $user->addAccount($account_AccountId);
         }
     } else {
         $userAccounts = $user->getAccounts();
         foreach ($userAccounts as $userAccount) {
             $user->removeAccount($userAccount);
             $em->persist($user);
             $em->flush();
         }
     }
     /*************** FIN PROCESOS CON CUENTAS ********************************/
     if ($this->get('security.authorization_checker')->isGranted('ROLE_ADMIN')) {
         $user->setRoles($request->get('role'));
     }
     $user->setName($request->get('name'));
     $user->setLastName($request->get('lastname'));
     $user->setSurName($request->get('surname'));
     $user->setUserName($request->get('email'));
     if ($image != "") {
         $user->setFile($request->files->get('image'));
     }
     if ($password != "") {
         $user->setPassword($password);
     }
     if (!empty($dateAdmission)) {
         $dateAdmission = date_create_from_format('Y-m-d', $dateAdmission);
         $user->setAdmissionDate($dateAdmission);
     }
     if ($position != "") {
         $user->setPosition($position);
     }
     $em->persist($user);
     $em->flush();
     return $this->redirect($this->generateUrl('user_edit', array('id' => $id)));
 }
 /**
  * Creates a new Skill entity.
  *
  * @Route("/create", name="skill_create_ajax", options={"expose"=true})
  * @Method("POST")
  */
 public function createAction(Request $request)
 {
     $em = $this->getDoctrine()->getManager();
     $skill = new Skill();
     $skill->setName($request->get('name'));
     $em->persist($skill);
     $em->flush();
     $result = "";
     $response = new Response();
     $response->setContent(json_encode(array('result' => $result)));
     return $response;
 }
 /**
  * @param Skill $skill
  * @return Activity
  */
 public function addSkill(Skill $skill)
 {
     $key = $skill->getMachineName();
     if ($this->skills->containsKey($key)) {
         throw new \InvalidArgumentException('This Category already has a skill of that name');
     }
     $this->skills->set($key, $skill);
     return $this;
 }