Skip to content

Instantly share code, notes, and snippets.

@ayatmaulana
Created March 5, 2018 06:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ayatmaulana/be7d08b8fd560b7e46301d4692d59d2a to your computer and use it in GitHub Desktop.
Save ayatmaulana/be7d08b8fd560b7e46301d4692d59d2a to your computer and use it in GitHub Desktop.
<?php
namespace App\Http\Controllers\Api;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\__GlobalHelper;
use App\Http\Controllers\FileController;
use App\Transformers\BenefitCategoryTransformer;
use App\Transformers\BenefitTransformer;
use App\Transformers\BenefitLevelTransformer;
use App\Models\Benefit;
use App\Models\BenefitLevel;
use App\Models\BenefitBrand;
use App\Models\BenefitCategory;
class BenefitController extends Controller
{
public function __construct()
{
$this->middleware('apikey', ['except' => []]);
$this->_gh = new __GlobalHelper;
$this->url = url("uploaded_files/");
$this->path = storage_path('medias');
}
public function index(Request $request)
{
$perpage = $request->has('perpage') ? $request->perpage : 4;
// $benefitCategory = BenefitCategory::limit( $perpage )
// ->with('benefit')
// ->get()
// ->map( function($item){
// $item->image_url = FileController::generateFileUrl( $item->image_url );
// $item->benefit->each( function($item2){
// $item2->image = FileController::generateFileUrl( $item2->image );
// unset( $item2->pivot );
// return $item2;
// } );
// return $item;
// } );
$benefit = Benefit::limit($perpage)->get()->each(function ($item) {
$item->image = FileController::generateFileUrl($item->image);
return $item;
});
$data['data'] = $benefit;
return $this->_gh->successResponse($data);
}
public function show($id)
{
$benefitCategory = BenefitLevel::find($id);
if (count($benefitCategory) == 0)
return $this->_gs->notFoundResponse();
$benefit = $benefitCategory->benefit;
$benefit = $this->_gh->transform($benefit, new BenefitTransformer);
return $this->_gh->successResponse($benefit);
}
public function showByLevel(Request $request, $id)
{
$benefitLevel = BenefitLevel::find($id);
$benefitLevel->image = FileController::generateFileUrl($benefitLevel->image);
if (count($benefitLevel) == 0)
return $this->_gs->notFoundResponse();
$benefit = $benefitLevel->benefit()->get()->map(function ($item) {
return $item->benefitCategory()->first();
})
->each(function ($item) {
$item->image_url = FileController::generateFileUrl($item->image_url);
return $item;
})
->unique('id')
->values()->all();
$benefit = collect($benefit)
->each(function ($item) {
$item->benefit = $item->benefit()->get()->map(function ($item2) {
$item2->image = FileController::generateFileUrl($item2->image);
$item2->benefit_brand = $item2->benefitBrand()->get()->each(function ($item3) {
$item3->img_logo = FileController::generateFileUrl($item3->img_logo);
$item3->img_display = FileController::generateFileUrl($item3->img_display);
$item3->img_header = FileController::generateFileUrl($item3->img_header);
$item3->img_content_1 = FileController::generateFileUrl($item3->img_content_1);
$item3->img_content_2 = FileController::generateFileUrl($item3->img_content_2);
$item3->img_content_3 = FileController::generateFileUrl($item3->img_content_3);
return $item3;
});
// collect($item2->benefit_brand)->map( function($item3){
// $item3->helo =1;
// return $item3;
// } );
unset($item2->pivot);
return $item2;
});
unset($item->pivot);
return $item;
});
$benefitLevel->benefit_categories = $benefit;
$data['data'] = $benefitLevel;
return $this->_gh->successResponse($data);
}
public function showByBrand(Request $request, $id)
{
$benefitLevel = BenefitLevel::find($id);
$benefitLevel->image = FileController::generateFileUrl($benefitLevel->image);
if (count($benefitLevel) == 0)
return $this->_gs->notFoundResponse();
$benefitBrand = $benefitLevel->benefit()->get()
->each(function ($item) {
$item->benefit_brand = $item->benefitBrand()->first();
return $item;
})
->map(function ($item) {
$item->benefit_brand->img_logo = FileController::generateFileUrl($item->benefit_brand->img_logo);
$item->benefit_brand->img_display = FileController::generateFileUrl($item->benefit_brand->img_display);
unset($item->benefit_brand->pivot);
return $item->benefit_brand;
})
->unique();
$benefitLevel->benefit_brands = $benefitBrand;
$data['data'] = $benefitLevel;
return $this->_gh->successResponse($data);
}
public function showByBrandId(Request $request, $id, $brandId)
{
$benefitLevel = BenefitLevel::find($id);
$benefitLevel->image = FileController::generateFileUrl($benefitLevel->image);
if ((count($benefitLevel) == 0))
return $this->_gs->notFoundResponse();
$benefitBrand = \DB::select("
SELECT DISTINCT `is_ismaya_cafe`.* FROM is_ismaya_benefit_level_pivot
JOIN is_ismaya_benefit ON is_ismaya_benefit.id = is_ismaya_benefit_level_pivot.benefit_id
JOIN is_ismaya_benefit_cafe_pivot ON is_ismaya_benefit_cafe_pivot.benefit_id = is_ismaya_benefit.id
JOIN is_ismaya_cafe ON is_ismaya_benefit_cafe_pivot.cafe_id = is_ismaya_cafe.id
WHERE is_ismaya_benefit_level_pivot.level_id = {$id}
AND is_ismaya_cafe.id = {$brandId}
");
$benefit = collect($benefitBrand)
->map(function ($item) use ($brandId) {
$item->img_logo = FileController::generateFileUrl($item->img_logo);
$item->img_display = FileController::generateFileUrl($item->img_display);
$item->benefit_categories = Benefit::whereHas('benefitBrand', function ($query) use ($brandId) {
$query->where('is_ismaya_cafe.id', '=', $brandId);
})
->get()
->map(function ($item) {
$item->benefit_categories = $item->benefitCategory()->distinct()->first();
$item->benefit_categories->image_url = FileController::generateFileUrl($item->benefit_categories->image_url);
return $item;
})
->map(function ($item) {
return $item->benefit_categories;
})
->map(function ($item) {
$item->benefits = $item->benefit()->get()->map(function ($item2) {
$item2->image = FileController::generateFileUrl($item2->image);
unset($item2->pivot);
return $item2;
});
unset($item->pivot);
return $item;
});
return $item;
});
$benefitLevel->benefit_brand = $benefit;
$data['data'] = $benefitLevel;
return $this->_gh->successResponse($data);
}
public function showByBrandId2(Request $request, $id, $brandId)
{
$categories = \DB::select("
SELECT is_ismaya_category_benefits.* FROM is_ismaya_benefit_categories
JOIN is_ismaya_benefit_level_pivot ON is_ismaya_benefit_level_pivot.level_id = is_ismaya_benefit_categories.id
JOIN is_ismaya_benefit ON is_ismaya_benefit.id = is_ismaya_benefit_level_pivot.benefit_id
JOIN is_ismaya_benefit_cafe_pivot ON is_ismaya_benefit_cafe_pivot.benefit_id = is_ismaya_benefit.id
JOIN is_ismaya_benefit_categories_pivot ON is_ismaya_benefit_categories_pivot.benefit_id = is_ismaya_benefit.id
JOIN is_ismaya_category_benefits ON is_ismaya_category_benefits.id = is_ismaya_benefit_categories_pivot.category_id
WHERE is_ismaya_benefit_categories.id = {$id}
AND is_ismaya_benefit_cafe_pivot.cafe_id = {$brandId}
");
// return $categories;
return collect( $categories )->map( function($item) use($id) {
$benefit = \DB::table("is_ismaya_benefit")
->join("is_ismaya_benefit_categories_pivot", "is_ismaya_benefit.id", "=", "is_ismaya_benefit_categories_pivot.benefit_id")
->join('is_ismaya_benefit_level_pivot', 'is_ismaya_benefit.id', '=', 'is_ismaya_benefit_level_pivot.benefit_id')
->where("is_ismaya_benefit_categories_pivot.category_id", $item->id)
->where('is_ismaya_benefit_level_pivot.level_id', $id)
->get();
$item->benefit = collect( $benefit )->map( function($item2){
$item2->image = FileController::generateFileUrl( $item2->image );
$item2->benefit = \DB::table('is_ismaya_cafe')
->join('is_ismaya_benefit_cafe_pivot', 'is_ismaya_cafe.id' ,'=', 'is_ismaya_benefit_cafe_pivot.cafe_id')
->where('is_ismaya_benefit_cafe_pivot.benefit_id', $item2->id)
->get();
return $item2;
});
return $item;
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment