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(); }
/** * 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; }