You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							146 lines
						
					
					
						
							4.7 KiB
						
					
					
				
			
		
		
	
	
							146 lines
						
					
					
						
							4.7 KiB
						
					
					
				<?php
 | 
						|
 | 
						|
namespace App\Http\Controllers\Admin;
 | 
						|
 | 
						|
use App\Http\Controllers\Controller;
 | 
						|
use App\Models\Attribute;
 | 
						|
use App\CentralLogics\Helpers;
 | 
						|
use Brian2694\Toastr\Facades\Toastr;
 | 
						|
use Illuminate\Http\Request;
 | 
						|
use Rap2hpoutre\FastExcel\FastExcel;
 | 
						|
use Illuminate\Support\Facades\DB;
 | 
						|
 | 
						|
class AttributeController extends Controller
 | 
						|
{
 | 
						|
    function index()
 | 
						|
    {
 | 
						|
        $attributes = Attribute::orderBy('name')->paginate(config('default_pagination'));
 | 
						|
        return view('admin-views.attribute.index', compact('attributes'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function store(Request $request)
 | 
						|
    {
 | 
						|
        $request->validate([
 | 
						|
            'name' => 'required|unique:attributes|max:100',
 | 
						|
        ], [
 | 
						|
            'name.required' => translate('messages.Name is required!'),
 | 
						|
        ]);
 | 
						|
 | 
						|
        $attribute = new Attribute;
 | 
						|
        $attribute->name = $request->name;
 | 
						|
        $attribute->save();
 | 
						|
 | 
						|
        Toastr::success(translate('messages.attribute_added_successfully'));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
 | 
						|
    public function edit($id)
 | 
						|
    {
 | 
						|
        $attribute = Attribute::findOrFail($id);
 | 
						|
        return view('admin-views.attribute.edit', compact('attribute'));
 | 
						|
    }
 | 
						|
 | 
						|
    public function update(Request $request, $id)
 | 
						|
    {
 | 
						|
        $request->validate([
 | 
						|
            'name' => 'required|max:100|unique:attributes,name,'.$id,
 | 
						|
        ], [
 | 
						|
            'name.required' => translate('messages.Name is required!'),
 | 
						|
        ]);
 | 
						|
 | 
						|
        $attribute = Attribute::findOrFail($id);
 | 
						|
        $attribute->name = $request->name;
 | 
						|
        $attribute->save();
 | 
						|
        Toastr::success(translate('messages.attribute_updated_successfully'));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
 | 
						|
    public function delete(Request $request)
 | 
						|
    {
 | 
						|
        $attribute = Attribute::findOrFail($request->id);
 | 
						|
        $attribute->delete();
 | 
						|
        Toastr::success(translate('messages.attribute_deleted_successfully'));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
 | 
						|
    public function search(Request $request){
 | 
						|
        $key = explode(' ', $request['search']);
 | 
						|
        $attributes=Attribute::where(function ($q) use ($key) {
 | 
						|
            foreach ($key as $value) {
 | 
						|
                $q->orWhere('name', 'like', "%{$value}%");
 | 
						|
            }
 | 
						|
        })->limit(50)->get();
 | 
						|
        return response()->json([
 | 
						|
            'view'=>view('admin-views.attribute.partials._table',compact('attributes'))->render(),
 | 
						|
            'count'=>$attributes->count(),
 | 
						|
        ]);
 | 
						|
    }
 | 
						|
 | 
						|
    public function bulk_import_index()
 | 
						|
    {
 | 
						|
        return view('admin-views.attribute.bulk-import');
 | 
						|
    }
 | 
						|
 | 
						|
    public function bulk_import_data(Request $request)
 | 
						|
    {
 | 
						|
        try {
 | 
						|
            $collections = (new FastExcel)->import($request->file('products_file'));
 | 
						|
        } catch (\Exception $exception) {
 | 
						|
            Toastr::error(translate('messages.you_have_uploaded_a_wrong_format_file'));
 | 
						|
            return back();
 | 
						|
        }
 | 
						|
 | 
						|
        $data = [];
 | 
						|
        $skip = ['youtube_video_url'];
 | 
						|
        foreach ($collections as $collection) {
 | 
						|
                if ($collection['name'] === "" ) {
 | 
						|
                    Toastr::error(translate('messages.please_fill_all_required_fields'));
 | 
						|
                    return back();
 | 
						|
                }
 | 
						|
 | 
						|
 | 
						|
            array_push($data, [
 | 
						|
                'name' => $collection['name'],
 | 
						|
                'created_at'=>now(),
 | 
						|
                'updated_at'=>now()
 | 
						|
            ]);
 | 
						|
        }
 | 
						|
        DB::table('attributes')->insert($data);
 | 
						|
        Toastr::success(translate('messages.attribute_imported_successfully',['count'=>count($data)]));
 | 
						|
        return back();
 | 
						|
    }
 | 
						|
 | 
						|
    public function bulk_export_index()
 | 
						|
    {
 | 
						|
        return view('admin-views.attribute.bulk-export');
 | 
						|
    }
 | 
						|
 | 
						|
    public function bulk_export_data(Request $request)
 | 
						|
    {
 | 
						|
        $request->validate([
 | 
						|
            'type'=>'required',
 | 
						|
            'start_id'=>'required_if:type,id_wise',
 | 
						|
            'end_id'=>'required_if:type,id_wise',
 | 
						|
            'from_date'=>'required_if:type,date_wise',
 | 
						|
            'to_date'=>'required_if:type,date_wise'
 | 
						|
        ]);
 | 
						|
        $attributes = Attribute::when($request['type']=='date_wise', function($query)use($request){
 | 
						|
            $query->whereBetween('created_at', [$request['from_date'].' 00:00:00', $request['to_date'].' 23:59:59']);
 | 
						|
        })
 | 
						|
        ->when($request['type']=='id_wise', function($query)use($request){
 | 
						|
            $query->whereBetween('id', [$request['start_id'], $request['end_id']]);
 | 
						|
        })
 | 
						|
        ->get();
 | 
						|
        return (new FastExcel($attributes))->download('Attributes.xlsx');
 | 
						|
    }
 | 
						|
 | 
						|
    public function export_attributes($type){
 | 
						|
        $collection = Attribute::all();
 | 
						|
 | 
						|
        if($type == 'excel'){
 | 
						|
            return (new FastExcel(Helpers::export_attributes($collection)))->download('Attributes.xlsx');
 | 
						|
        }elseif($type == 'csv'){
 | 
						|
            return (new FastExcel(Helpers::export_attributes($collection)))->download('Attributes.csv');
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
 |