Files
faveo/app/Http/Controllers/Agent/kb/ArticleController.php
2015-12-22 14:09:23 +05:30

274 lines
8.7 KiB
PHP

<?php namespace App\Http\Controllers\Agent\kb;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Agent\kb\SettingsController;
use App\Http\Controllers\Client\kb\UserController;
use App\Http\Controllers\Agent\helpdesk\TicketController;
use App\Http\Requests\kb\ArticleRequest;
use App\Http\Requests\kb\ArticleUpdate;
use App\Model\kb\Article;
use App\Model\kb\Category;
use App\Model\kb\Relationship;
use App\Model\kb\Settings;
use Auth;
use Chumper\Datatable\Table;
use Datatable;
use DB;
use Illuminate\Http\Request;
use App\Model\kb\Comment;
/* include the article model to access the article table */
use Redirect;
use Exception;
/**
* ArticleController
*
* @package Controllers
* @subpackage Controller
* @author Ladybird <info@ladybirdweb.com>
*/
class ArticleController extends Controller {
/**
* Display a listing of the resource.
*
* @return Response
*/
public function __construct() {
$this->middleware('auth');
$this->middleware('roles');
SettingsController::language();
}
public function test() {
//$table = $this->setDatatable();
return view('themes.default1.agent.kb.article.test');
}
public function getData() {
//return 'kfjhje';
return Datatable::collection(Article::All())
->searchColumns('name')
->orderColumns('name', 'description')
->addColumn('name', function ($model) {
return $model->name;
})
->addColumn('Created', function ($model) {
$t = $model->created_at;
return TicketController::usertimezone($t);
})
->addColumn('Actions', function ($model) {
//return '<a href=article/delete/ ' . $model->id . ' class="btn btn-danger btn-flat" onclick="myFunction()">Delete</a>&nbsp;<a href=article/' . $model->id . '/edit class="btn btn-warning btn-flat">Edit</a>&nbsp;<a href=show/' . $model->id . ' class="btn btn-warning btn-flat">View</a>';
//return '<form action="article/delete/ ' . $model->id . '" method="post" onclick="alert()"><button type="sumbit" value="Delete"></button></form><a href=article/' . $model->id . '/edit class="btn btn-warning btn-flat">Edit</a>&nbsp;<a href=show/' . $model->id . ' class="btn btn-warning btn-flat">View</a>';
return '<span data-toggle="modal" data-target="#deletearticle'.$model->id .'"><a href="#" ><button class="btn btn-danger btn-xs"></a> ' . \Lang::get('lang.delete') . ' </button></span>&nbsp;<a href=article/' . $model->id . '/edit class="btn btn-warning btn-xs">' . \Lang::get('lang.edit') . '</a>&nbsp;<a href=show/'.$model->slug .' class="btn btn-primary btn-xs">' . \Lang::get('lang.view') . '</a>
<div class="modal fade" id="deletearticle'.$model->id .'">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Are You Sure ?</h4>
</div>
<div class="modal-body">
'.$model->name.'
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal" id="dismis2">Close</button>
<a href="article/delete/'.$model->slug.'"><button class="btn btn-danger">delete</button></a>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div>';
})
->make();
}
/**
* Index for Articles
* @param type Article $article
* @return type Response
*/
public function index() {
/* show the index page with article list */
return view('themes.default1.agent.kb.article.index');
}
/**
* Creating a Article
* @param type Category $category
* @return type Response
*/
public function create(Category $category) {
//$cat = $category->whereId(33)->first();
//$tm = $cat->created_at;
//$this->usertimezone($tm);
// // /* get the attributes of the category */
$category = $category->lists('id', 'name');
/* get the create page */
return view('themes.default1.agent.kb.article.create', compact('category'));
}
/**
* Insert the values to the article table
* @param type Article $article
* @param type ArticleRequest $request
* @return type
*/
public function store(Article $article, ArticleRequest $request) {
$sl = $request->input('slug');
$slug = str_slug($sl, "-");
$article->slug = $slug;
$article->fill($request->except('created_at','slug'))->save();
$requests = $request->input('category_id');
$id = $article->id;
foreach ($requests as $req) {
DB::insert('insert into article_relationship (category_id, article_id) values (?,?)', [$req, $id]);
}
/* insert the values to the article table */
if ($article->fill($request->except('slug'))->save()) //true: redirect to index page with success message
{
return redirect('article')->with('success', 'Article Inserted Successfully');
} else //redirect to index page with fail message
{
return redirect('article')->with('fails', 'Article Not Inserted');
}
}
/**
* Display the specified resource.
*
* @param int $id
* @return Response
*/
public function show($id) {
//
}
/**
* Edit an Article by id
* @param type Integer $id
* @param type Article $article
* @param type Relationship $relation
* @param type Category $category
* @return Response
*/
public function edit($slug, Article $article, Relationship $relation, Category $category) {
$aid = $article->where('id', $slug)->first();
$id = $aid->id;
/* define the selected fields */
$assign = $relation->where('article_id', $id)->lists('category_id');
/* get the attributes of the category */
$category = $category->lists('id', 'name');
/* get the selected article and display it at edit page */
/* Get the selected article with id */
$article = $article->whereId($id)->first();
/* send to the edit page */
return view('themes.default1.agent.kb.article.edit', compact('assign', 'article', 'category'));
}
/**
* Update an Artile by id
* @param type Integer $id
* @param type Article $article
* @param type Relationship $relation
* @param type ArticleRequest $request
* @return Response
*/
public function update($slug, Article $article, Relationship $relation, ArticleUpdate $request) {
$aid = $article->where('id', $slug)->first();
$id = $aid->id;
$sl = $request->input('slug');
$slug = str_slug($sl, "-");
// dd($slug);
$article->slug = $slug;
/* get the attribute of relation table where id==$id */
$relation = $relation->where('article_id', $id);
$relation->delete();
/* get the request of the current articles */
$article = $article->whereId($id)->first();
$requests = $request->input('category_id');
$id = $article->id;
foreach ($requests as $req) {
DB::insert('insert into article_relationship (category_id, article_id) values (?,?)', [$req, $id]);
}
/* update the value to the table */
if ($article->fill($request->all())->save()) //true: redirect to index page with success message
{
$article->slug = $slug;
$article->save();
return redirect('article')->with('success', 'Article Updated Successfully');
} else // redirect to index page with fails message
{
return redirect('article')->with('fails', 'Article Not Updated');
}
}
/**
* Delete an Agent by id
* @param type $id
* @param type Article $article
* @return Response
*/
public function destroy($slug, Article $article, Relationship $relation, Comment $comment) {
/* delete the selected article from the table */
$article = $article->where('slug',$slug)->first(); //get the selected article via id
//dd($article);
$id = $article->id;
$comments = $comment->where('article_id',$id)->get();
if($comments)
{
foreach($comments as $comment)
$comment->delete();
}
$relation = $relation->where('article_id', $id)->first();
if($relation)
{
$relation->delete();
}
if($article)
{
if ($article->delete()) //true:redirect to index page with success message
{
return Redirect::back()->with('success', 'Article Deleted Successfully');
} else //redirect to index page with fails message
{
return Redirect::back()->with('fails', 'Article Not Deleted');
}
}
else
{
return Redirect::back()->with('fails', 'Article can Not Deleted');
}
}
static function usertimezone($utc) {
$user = Auth::user();
$tz = $user->timezone;
$set = Settings::whereId('1')->first();
$format = $set->dateformat;
//$utc = date('M d Y h:i:s A');
//echo 'UTC : ' . $utc;
date_default_timezone_set($tz);
$offset = date('Z', strtotime($utc));
//print "offset: $offset \n";
$date = date($format, strtotime($utc) + $offset);
echo $date;
//return substr($date, 0, -6);
}
}