Ngiler SH3LL 360
Home
Information
Create File
Create Folder
:
/
home
/
tbf
/
tbfguestbe.tbf.ro
/
app
/
Http
/
Controllers
/
Api
/
Information Server
MySQL :
OFF
Perl :
OFF
CURL :
ON
WGET :
OFF
PKEXEC :
OFF
Directive
Local Value
IP Address
89.40.16.97
System
Linux server.atelieruldeit.ro 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64
User
tbf
PHP Version
7.3.33
Software
Apache
Doc root
Writable
close
Edit File :
ProductController.php
| Size :
6.81
KB
Copy
<?php namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Http\Requests\ProductAddAttributeRequest; use App\Http\Requests\ProductAddAudienceRequest; use App\Http\Requests\ProductAddOfferRequest; use App\Http\Requests\ProductAddUpsellRequest; use App\Http\Requests\ProductFormRequest; use App\Http\Resources\ProductCollection; use App\Http\Resources\ProductOfferResource; use App\Http\Resources\ProductResource; use App\Models\Instance; use App\Models\Product; use App\Models\ProductAttribute; use App\Models\ProductAudience; use App\Models\ProductOffer; use Illuminate\Http\JsonResponse; use Illuminate\Http\Request; class ProductController extends Controller { /** * Display a listing of the resource. * * @param Instance $instance * * @return ProductResource */ public function index(Instance $instance): ProductResource { $user = auth()->user(); $product = $instance->product; return new ProductResource($product); } /** * Display the specified resource. * * @param Instance $instance * @param Product $product * * @return PositionResource */ public function show(Instance $instance, Product $product): ProductResource { return new ProductResource($product); } /** * Display the specified resource. * * @param Instance $instance * @param Product $product * * @return PositionEditResource */ public function edit(Instance $instance, Product $product): ProductResource { return new ProductResource($product); } /** * Store a newly created resource in storage. * * @param ProductFormRequest $request * * @return JsonResponse */ public function store(ProductFormRequest $request, Instance $instance): JsonResponse { $data = $request->validated(); $product = Product::create($data); return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ]); } /** * Update the specified resource in storage. * * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function destroy(Instance $instance, Product $product): JsonResponse { $product->delete(); return response()->json([ 'status' => 'success', ]); } /** * Update the specified resource in storage. * * @param ProductFormRequest $request * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function update(ProductFormRequest $request, Instance $instance, Product $product): JsonResponse { $data = $request->validated(); $product->update($data); return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ], 200); } /** * Add attribute to product * * @param ProductAddAttributeRequest $request * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function addAttribute(ProductAddAttributeRequest $request, Instance $instance, Product $product): JsonResponse { $data = $request->validated(); $firstKey = head(array_keys($data)); $data[$firstKey]['attribute_type'] = $firstKey; $product->attributes()->create($data[$firstKey]); return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ], 200); } /** * Remove the specified resource from storage. * * @param Instance $instance * @param Product $product * @param ProductAttribute $productAttribute * * @return JsonResponse */ public function removeAttribute(Instance $instance, Product $product, ProductAttribute $productAttribute): JsonResponse { $productAttribute->delete(); return response()->json([ 'status' => 'success', ]); } /** * Add offers to product * * @param ProductAddOfferRequest $request * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function addOffer(ProductAddOfferRequest $request, Instance $instance, Product $product): JsonResponse { $data = $request->validated(); $offer = $product->offers()->where('type', $data['type'])->first(); if ($offer) { $offer->update($data); } else { $offer = $product->offers()->create($data); } return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ], 200); } /** * Remove offer from resource in storage. * * @param Instance $instance * @param Product $product * @param ProductOffer $productAttribute * * @return JsonResponse */ public function removeOffer(Instance $instance, Product $product, ProductOffer $productOffer): JsonResponse { $productOffer->delete(); return response()->json([ 'status' => 'success', ]); } /** * Add audience to product * * @param ProductAddAudienceRequest $request * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function addAudience(ProductAddAudienceRequest $request, Instance $instance, Product $product): JsonResponse { $data = $request->validated(); $audience = $product->audience()->first(); if ($audience) { $audience->update($data); } else { $audience = $product->audience()->create($data); } if (isset($data['options'])) { $audience->options()->sync($data['options']); } return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ], 200); } /** * Add offers to product * * @param ProductAddUpsellRequest $request * @param Instance $instance * @param Product $product * * @return JsonResponse */ public function addUpsell(ProductAddUpsellRequest $request, Instance $instance, Product $product): JsonResponse { $data = $request->validated(); $upsell = $product->upsell()->first(); if ($upsell) { $upsell->update($data); } else { $upsell = $product->upsell()->create($data); } return response()->json([ 'status' => 'success', 'data' => new ProductResource($product), ], 200); } }
Back