htmlBuilder = $htmlBuilder;
$this->htmlBuilder->parameters([
'paging' => true,
'searching' => true,
'info' => false,
'searchDelay' => 350,
'language' => [
'url' => Module::asset('core:datatable.json')
],
]);
Parent::__construct();
}
public function index(Request $request)
{
if ($request->ajax()) {
return DataTables::of(Shop::
select(['shops.id',DB::raw('concat(users.fname ," ",users.lname) as users_fullname ')
,'shops.title','type','price','shops.mobile','business_licence','owner','status','shops.created_at', 'shops.updated_at'])
->join('users', 'shops.user_id', '=', 'users.id')
)
->editColumn('type', function($shop) {
if($shop->type=='silver'){
return "نقره ای";
}
elseif($shop->type=='gold'){
return "طلایی";
}
else{
return "عادی";
}
})
->editColumn('status', function($shop) {
if($shop->status==1){
return " فعال";
}elseif($shop->status==0){
return "غیرفعال";
}
})
->editColumn('owner', function($shop) {
if($shop->owner==1){
return "شخصی";
}elseif($shop->owner==0){
return "استیجاری";
}elseif($shop->owner==2){
return "مجازی";
}
})
->addColumn('operation', function($shop){
return parent::redirectAction('list/delete?id='.$shop->id,'حذف','danger mr-1')
.parent::redirectAction('list/edit/'.$shop->id,'ویرایش','warning mr-1')
.parent::redirectAction('list/attachments/'.$shop->id,'پیوست ها','success mr-1');
})
->rawColumns(['operation','status','type','owner'])
->make(true);
}
$object = 'فروشگاه';
$html = $this->htmlBuilder
->addColumn(['data' =>'id', 'name' => 'id', 'title' => 'شناسه'])
->addColumn(['data' => 'users_fullname', 'name' => 'users.fname', 'title' => 'نام کاربر'])
->addColumn(['data' => 'users_fullname', 'name' => 'users.lname', 'title' => 'نام کاربر','class'=>'d-none'])
->addColumn(['data' => 'title', 'name' => 'title', 'title' => 'عنوان'])
->addColumn(['data' => 'type', 'name' => 'type', 'title' => 'نوع'])
->addColumn(['data' => 'mobile', 'name' => 'mobile', 'title' => 'تلفن همراه'])
->addColumn(['data' => 'status', 'name' => 'status', 'title' => 'وضغیت'])
->addColumn(['data' => 'created_at', 'name' => 'created_at', 'title' => 'ثبت'])
->addColumn(['data' => 'updated_at', 'name' => 'updated_at', 'title' => 'ویرایش'])
->addColumn(['data' => 'operation', 'name' => 'operation', 'title' => 'عملیات']);
return view('core::shared.datatable', compact(['html','object']));
}
/**
* Remove the specified resource from storage.
* @param DeleteBlog $request
* @return Response
*/
public function destroy(DeleteBlog $request)
{
Shop::find($request->id)->delete();
return redirect('admin/shop/list');
}
public function add()
{
$data['model'] = new Shop();
$data['route_action'] = 'shop.list.store';
return view('core::shared.add',$data);
}
/**
* Store a newly created resource in storage.
* @param Request $request
* @return Response
*/
public function store(Request $request)
{
$shop=Shop::create($request->all());
$category = collect($request->category_id);
Shop::find($shop->id)->category()->sync($category ,['created_at' => Carbon::now()]);
Parent::multi_attachments_process($request,$shop);
return redirect()->route('admin.shop.list');
}
/**
* Show the form for editing the specified resource.
* @param Request $request
* @return Response
*/
public function edit(Request $request)
{
$data['route_action'] = 'shop.list.update';
$data['data']=Shop::find($request->id);
$param=Shop::find($request->id)->category()->select('categories.id', 'categories.title')->groupBy('id')->pluck('title', 'id');
return view('core::shared.edit',$data, [ 'data'=>$data,'param'=>$param]);
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
$shop=Shop::find(($request->id))->update($request->all());
$category = collect($request->category_id);
Shop::find($request->id)->category()->sync($category ,['created_at' => Carbon::now()]);
return redirect()->route('admin.shop.list');
}
static public function status(){
return ['1'=>'فعال','0' => 'غیر فعال'];
}
static public function owner(){
return ['1'=>'شخصی','0' => 'استیجاری','2' => 'مجازی'];
}
static public function type(){
return ['silver'=>'نقره ای','gold' => 'طلایی','normal' => 'عادی'];
}
static public function users()
{
$category = User::select('id', DB::raw('CONCAT(`fname`," " ,`lname`) as full_name'))->groupBy('id')->pluck('full_name', 'id');
return $category;
}
public function create(Request $request)
{
$request['user_id']=Auth::user()->id;
$check=Shop::where('user_id',Auth::user()->id)->first();
if($check==null){
$data=Shop::create($request->all());
$category = collect($request->category_id);
Shop::find($data->id)->category()->sync($category ,['created_at' => Carbon::now()]);
Parent::multi_attachments_process($request,$data);
return response()->json([
'data' => Shop::with('attachments','user','city')->where('id',$data->id)->get(),
'message'=>'ok',
'status' => 200
]);
}else{
return response()->json([
'data' => false,
'message'=>'rejected',
'status' => 409
]);
}
}
// public function showAll()
// {
// $data=Shop::with('attachments','user','city')->paginate(9);
// return response()->json([
// 'data' => $data,
// 'message'=>'ok',
// 'status' => 200
// ]);
// }
public function show(Request $request)
{
$data=Shop::with('attachments','user','city','advertisement')->where('id',$request->id)->first();
return response()->json([
'data' => $data,
'message'=>'ok',
'status' => 200
]);
}
public function showAdv(Request $request)
{
$data=Shop::find($request->id)->advertisement()->paginate(9);
return response()->json([
'data' => $data,
'message'=>'ok',
'status' => 200
]);
}
public function updateShop(Request $request)
{
$shop=Shop::where('id',$request->id)->first();
Shop::find(($shop->id))->update($request->all());
$category = collect($request->category_id);
Shop::find($shop->id)->category()->sync($category ,['created_at' => Carbon::now()]);
$data=Shop::where('id',$request->id)->with('attachments','User','city')->first();
Parent::multi_attachments_process($request,$data);
return response()->json([
'data' => $data,
'message'=>'ok',
'status' => 200
]);
}
public function delete(Request $request)
{
Shop::find($request->id)->delete();
return response()->json([
'data' => true,
'message'=>'ok',
'status' => 200
]);
}
function like(Request $request){
$like = Shop::find($request->id)->like()->firstOrCreate([
'user_id'=>Auth::user()->id
]);
return response()->json([
'data' => true,
'message'=>'ok',
'status' => 200
]);
}
static public function assignGold($json){
$request=json_decode($json);
$data=$request->data;
$shop_id=$data->shop_id;
$invoice_id=$request->invoice_id;
Shop::where('id',$shop_id)->first()->update(['type'=>'gold']);
Attachment::where('attachmentable_id',$invoice_id)->where('attachmentable_type','Modules\Financial\Entities\Invoice')->update([
'attachmentable_type' => 'Modules\Shop\Entities\Shop',
'attachmentable_id' => $shop_id
]);
}
static public function assignSilver($json){
$request=json_decode($json);
$data=$request->data;
$shop_id=$data->shop_id;
$invoice_id=$request->invoice_id;
Shop::where('id',$shop_id)->first()->update(['type'=>'silver']);
Attachment::where('attachmentable_id',$invoice_id)->where('attachmentable_type','Modules\Financial\Entities\Invoice')->update([
'attachmentable_type' => 'Modules\Shop\Entities\Shop',
'attachmentable_id' => $shop_id
]);
}
public function shopDeleteAttachment(Request $request)
{
$Attachment=Attachment::where('uid',$request->uid)->first();
if($Attachment->attachmentable_type=='Modules\Advertisement\Entities\Shop'){
$Attachment->attachmentable_id;
$user_id=Shop::where('id',$Attachment->attachmentable_id)->first()->user_id;
if($user_id==Auth::user()->id){
$Attachment->delete();
return response()->json([
'data' => true,
'message'=>'ok',
'status' => 200
]);
}else{
return response()->json([
'data' => false,
'message'=>'unAuthorize',
'status' => 200
]);
}
}
}
static public function categories()
{
$category = Category::where('parent_id','!=',null)->pluck('title', 'id');
return $category;
}
public function showAll(Request $request)
{
$input = $request->q;
$c=new Shop();
$c=$c->where('title','like',"%$input%");
if(isset($request->filter)){
$filter=json_decode($request->filter);
foreach ($filter as $key=>$value){
$c=$c->where('data->'.$key,$value);
}
}
if(isset($request->type)){
$c=$c->where('type',$request->type);
}
if(isset($request->city_id)){
$c=$c->where('city_id',$request->city_id);
}
if(isset($request->state_id)){
$cities=City::where('state_id',$request->state_id)->pluck('id');
$c=$c->whereIn('city_id',$cities);
}
if(isset($request->orderby)){
if($request->orderby=='priceDesc'){
$c=$c->orderBy('price','DESC');
}elseif ($request->orderby=='priceAsc'){
$c=$c->orderBy('price','ASC');
}elseif ($request->orderby=='idAsc'){
$c=$c->orderBy('id','ASC');
}
elseif ($request->orderby=='idDesc'){
$c=$c->orderBy('id','DESC');
}
}
if(isset($request->category_id)){
$shop_ids=CategoryShop::where('category_id',$request->category_id)->pluck('shop_id');
$c=$c->whereIn('id',$shop_ids);
}
if(isset($request->cat_parent)){
$cats=Category::where('parent_id',$request->cat_parent)->pluck('id');
$shop_ids=CategoryShop::whereIn('category_id',$cats)->pluck('shop_id');
$c=$c->whereIn('id',$shop_ids);
}
$data=$c->with('category','attachments','user','city')->where('status',1)->paginate(9);
return response()->json([
'data' => $data,
'message'=>'ok',
'status' => 200
]);
}
}