File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Http/Controllers/Api/POSApiController.php
<?php
namespace App\Http\Controllers\Api;
use DB;
use App\User;
use App\Brand;
use App\Order;
use App\Parameter;
use App\ProductImage;
use App\UserInformation;
use App\ProductAttribute;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Http\Controllers\ProductTagController;
use Illuminate\Support\Facades\Auth;
class POSApiController extends Controller
{
public function allProducts()
{
try {
$parameter = Parameter::select('sucursal_products')->first();
$listProducts = DB::table('subcategory_products')
->join('products', 'subcategory_products.product_id', '=', 'products.id', 'left')
->where('products.active', true)
->orderBy('products.order', 'asc');
if ($parameter->sucursal_products) {
$user_id = Auth::user()->id;
$sucursal = UserInformation::where('user_id', $user_id)->select('current_sucursal_id')->first();
$listProducts = $listProducts->where('products.sucursal_id', $sucursal->current_sucursal_id)->get();
} else {
$listProducts = $listProducts->get();
}
if ($listProducts) {
$controller = new ProductTagController();
foreach ($listProducts as $product) {
$brand = null;
if ($product->brand_id) {
$brand = Brand::where('id', $product->brand_id)->first();
}
$product->brand = $brand;
$productAttributes = ProductAttribute::where('product_id', $product->id)->with('attribute')->get();
$product->product_attributes = $productAttributes->groupBy('attribute_id')->toArray();
$product->productAttributes = $productAttributes;
$product->special_price = $controller->getSpecialPriceTag($product->id);
$product->special_tag = $controller->getSpecialTagName($product->id);
$product->product_images = ProductImage::where('product_id', $product->id)->get();
}
}
$data = array('status' => 'success', 'data' => $listProducts);
return response()->json($data, 200);
} catch (\Throwable $th) {
$data = array('status' => 'error', 'data' => null, 'message' => $th->getMessage());
return response()->json($data, 400);
}
}
public function allUsers(Request $request)
{
try {
$users = User::where([['rol_id', 4], ['active', true]])->with('addresses')->get();
$data = array('status' => 'success', 'data' => $users);
return response()->json($data, 200);
} catch (\Throwable $th) {
$data = array('status' => 'error', 'data' => null, 'message' => $th->getMessage());
return response()->json($data, 400);
}
}
public function allOrders(Request $request)
{
try {
$orders = Order::where('order_type_id', 5)
->with(['orderState', 'address', 'deliveryMan', 'orderProducts', 'orderType', 'client'])
->offset($request["offset"])
->take($request["take"])
->orderBy('creation_date', 'desc')
->get();
$data = array('status' => 'success', 'data' => $orders);
return response()->json($data, 200);
} catch (\Throwable $th) {
$data = array('status' => 'error', 'data' => null, 'message' => $th->getMessage());
return response()->json($data, 400);
}
}
}