Esempio n. 1
0
 public function createAction(Request $request)
 {
     $wistia_manager = $this->container->get('wistia_manager');
     $em = $this->getDoctrine()->getEntityManager();
     $tags_repo = $em->getRepository("BeusoftTagsBundle:Tag");
     $category_repo = $em->getRepository("BeusoftCategoriesBundle:Category");
     $file_repo = $em->getRepository("BeusoftMediaBundle:Media");
     $course_repo = $em->getRepository("BeusoftCoursesBundle:Course");
     $user = $this->getUser();
     $title = $request->get("title");
     $short_description = $request->get("short_description");
     $price = $request->get("price");
     $skill_level = $request->get("skill_level");
     $categories = $request->get("categories");
     $tags = $request->get("tags");
     $wistia_data = $wistia_manager->createProject($title);
     $hashed_id = $wistia_data->hashedId;
     $course_ref_file_id = $request->get("ref_file");
     $course_img_id = $request->get("img_file");
     $course_id = $request->get("course_id");
     $edit = 0;
     if ($course_id != 0) {
         $edit = 1;
         $new_course = $course_repo->find($course_id);
     } else {
         $new_course = new Course();
         $new_course->setCreator($user);
         $new_course->setCreatedAt(new \DateTime());
     }
     if ($course_ref_file_id != 0) {
         $file = $file_repo->find($course_ref_file_id);
         $new_course->setReferenceFilesMedia($file);
     }
     if ($course_img_id != 0) {
         $img = $file_repo->find($course_img_id);
         $new_course->setCoverMedia($img);
     }
     $new_course->setUser($user);
     $new_course->setSkillId($skill_level);
     $new_course->setTitle($title);
     $new_course->setHashedId($hashed_id);
     $new_course->setDescription($short_description);
     $new_course->setPrice($price);
     $new_course->setStatus(2);
     if ($price > 0) {
         $new_course->setIsFree(0);
     } else {
         $new_course->setIsFree(1);
     }
     $new_course->setUpdatedAt(new \DateTime());
     $em->persist($new_course);
     $em->flush();
     if ($course_id != 0) {
         //            $course_tag_repo = $em->getRepository("BeusoftCoursesBundle:CourseTag");
         //            $course_tags = $course_tag_repo->findBy(array("course" => $course_id));
         //            foreach ($course_tags as $ct) {
         //                $em->remove($ct);
         //                $em->flush();
         //            }
         //
         //            $course_cat_repo = $em->getRepository("BeusoftCoursesBundle:CourseCategory");
         //            $course_cats = $course_cat_repo->findBy(array("course" => $course_id));
         //            foreach ($course_cats as $ct) {
         //                $em->remove($ct);
         //                $em->flush();
         //            }
         //
     }
     $tags_array = explode(",", $tags);
     foreach ($tags_array as $tag) {
         $tag = $tags_repo->getTagObject(strtolower(trim($tag)), $user);
         if ($tag) {
             $course_tag = new CourseTag();
             $course_tag->setCourse($new_course);
             $course_tag->setTag($tag);
             $em->persist($course_tag);
             $em->flush();
             $new_course->addTag($course_tag);
         }
     }
     foreach ($categories as $category) {
         $cat_obj = $category_repo->find($category);
         if ($cat_obj) {
             $course_cat = new CourseCategory();
             $course_cat->setCourse($new_course);
             $course_cat->setCategory($cat_obj);
             $em->persist($course_cat);
             $em->flush();
             $new_course->addCategory($course_cat);
         }
     }
     $em->flush($new_course);
     return new Response(json_encode(array('edit' => $edit, 'status' => "Done", "id" => $new_course->getId(), "title" => $new_course->getTitle())), 200);
 }