Exemplo n.º 1
0
 /**
  * 	Post route for creating / updating documents.
  */
 public function postDocs()
 {
     $user = Auth::user();
     if (!$user->can('admin_manage_documents')) {
         // If there's a group
         if (Input::get('group_id')) {
             $groupUser = User::with('groups')->whereHas('groups', function ($query) {
                 $query->where('status', 'active');
                 $query->where('group_id', Input::get('group_id'));
             })->find($user->id);
             if (!isset($groupUser->id)) {
                 return Response::json($this->growlMessage("You do not have permission", 'error'));
             }
         } elseif (!$user->getSponsorStatus()) {
             return Response::json($this->growlMessage("You do not have permission", 'error'));
         }
     }
     //Creating new document
     $title = Input::get('title');
     $slug = Input::get('slug', str_replace(array(' ', '.'), array('-', ''), strtolower($title)));
     // If the slug is taken
     if (Doc::where('slug', $slug)->count()) {
         $counter = 0;
         $tooMany = 10;
         do {
             if ($counter > $tooMany) {
                 return Response::json($this->growlMessage('Can\'t create document with that name, please try another.', 'error'));
             }
             $counter++;
             $new_slug = $slug . '-' . str_random(8);
         } while (Doc::where('slug', $new_slug)->count());
         $slug = $new_slug;
     }
     $doc_details = Input::all();
     $rules = array('title' => 'required');
     $validation = Validator::make($doc_details, $rules);
     if ($validation->fails()) {
         return Response::json($this->growlMessage('A valid title is required.', 'error'));
     }
     try {
         $doc = new Doc();
         $doc->title = $title;
         $doc->slug = $slug;
         $doc->save();
         if (Input::get('group_id')) {
             $doc->groupSponsors()->sync(array(Input::get('group_id')));
         } else {
             $doc->userSponsors()->sync(array($user->id));
         }
         $starter = new DocContent();
         $starter->doc_id = $doc->id;
         $starter->content = "New Doc Content";
         $starter->save();
         $doc->init_section = $starter->id;
         $doc->save();
         $response = $this->growlMessage('Document created successfully', 'success');
         $response['doc'] = $doc->toArray();
         return Response::json($response, 200);
     } catch (Exception $e) {
         return Response::json($this->growlMessage($e->getMessage(), 'error'));
     }
 }