Root Zanli
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
o5t6x7pgljbm
/
public_html
/
app
/
Http
/
Controllers
/
Api
/
Filename :
CommonController.php
back
Copy
<?php namespace App\Http\Controllers\Api; use Illuminate\Http\Request; use App\Http\Controllers\Controller; use App\Models\CoinsForCollegeRole; use App\Models\Goal; use App\Models\Product; use App\Models\Store; use App\Models\Group; use App\Models\Task; use App\Models\TaskAssigned; use App\Models\Country; use App\Models\Course; use App\Models\ProductClaimed; use Helpers; use DB; use Config; class CommonController extends Controller { public function get_coins_for_college_roles(Request $request) { $data['data'] = CoinsForCollegeRole::select('coins_for_college_role_id', 'role_name')->get(); return Helpers::successResponse($data, 200, 'Role fetched successfully.'); } /** * returns Active store from selected group */ public static function getActiveStore(Request $request){ $user = $request->user(); $store = Store::where('group_id', $user->active_group_id)->first(); return $store; } public static function is_group_owner(Request $request){ // $user = $request->user(); // $isOwner = Group::where('owner_user_id', $user->user_id)->count(); // return $isOwner > 0 ? 1 : 0; // Added by Gautam $user = $request->user(); $isOwner = Group::where(['group_id' => $user->active_group_id, 'owner_user_id' => $user->user_id ])->exists(); return $isOwner ? 1 : 0; // Added by Gautam } public function get_is_group_owner(Request $request) { $data['data']['is_group_owner'] = $this->is_group_owner($request); return Helpers::successResponse($data, 200, 'Is group owner.'); } public function get_countries(Request $request) { $data['data'] = Country::get(); return Helpers::successResponse($data, 200, 'Country fetched successfully.'); } public function get_courses(Request $request) { $data['data'] = Course::get(); return Helpers::successResponse($data, 200, 'Courses fetched successfully.'); } public function get_search_result(Request $request) { $validated = $request->validate([ 'search' => 'required', ]); $user = $request->user(); $isGroupOwner = CommonController::is_group_owner($request); $query = TaskAssigned::select('tasks.task_id', 'goals.goal_name', 'tasks.task_title', "tasks.description", 'tasks.task_sp', 'tasks.due_by', 'tasks.due_by as due_by_date', 'task_type', 'products.product_name', 'products.product_sp', 'products.product_id') ->leftJoin('tasks', 'tasks.task_id', 'task_assigned.task_id') ->leftJoin('goals', 'goals.goal_id', 'tasks.goal_id') ->leftJoin('products', 'products.product_id', 'tasks.product_id') ->where('tasks.group_id', $user->active_group_id) ->where(function ($query) use ($request){ $query->where('tasks.task_title', 'like', '%'.$request->search.'%') ->orWhere('tasks.description', 'like', '%'.$request->search.'%'); }); if(!$isGroupOwner){ $query->where('task_assigned.user_id', $user->user_id); } $query->orderBy('tasks.created_at'); $query->groupBy('tasks.task_id'); $tasks = $query->limit(10)->get(); foreach ($tasks as $key => $item) { if($isGroupOwner){ $item->due_by = Helpers::dateDiffForHumans($item->due_by); $tasks[$key]['assign_to'] = TaskAssigned::select('users.user_id','users.full_name', DB::raw('CONCAT("'.Config::get('constants.app.api-profile-pic-thumb-url').'",profile_pic) as profile_pic')) ->leftJoin('users', 'users.user_id', 'task_assigned.user_id') ->where('task_id', $item->task_id) ->limit(4) ->get(); } else { $item->due_by = date("dS M, y", strtotime($item->due_by)); $tasks[$key]['task_assigned'] = TaskAssigned::select('task_assigned_id','status') ->where('task_id', $item->task_id) ->where('user_id', $user->user_id) ->first(); } } $data['tasks'] = $tasks; $query = ProductClaimed::select('store_product.store_product_id', "products.product_name", "product_claimed.store_product_id","product_claimed.product_claimed_id", "product_claimed.status", 'products.product_sp', 'tasks.task_title', DB::raw('CONCAT("'.Config::get('constants.app.api-product-image-url').'",product_image) as product_image')) ->leftJoin('store_product', 'store_product.store_product_id', 'product_claimed.store_product_id') ->leftJoin('store', 'store.store_id', 'store_product.store_id') ->leftJoin('products', 'products.product_id', 'store_product.product_id') ->leftJoin('tasks', 'products.product_id', 'tasks.product_id') ->where('store.group_id', $user->active_group_id) ->where(function ($query) use ($request){ $query->where('products.product_name', 'like', '%'.$request->search.'%') ->orWhere('tasks.task_title', 'like', '%'.$request->search.'%'); }); if(!$isGroupOwner){ $query->where('product_claimed.user_id', $user->user_id); } $query->groupBy('product_claimed.store_product_id') ->limit(10); $rewards = $query->get(); foreach($rewards as $key => $claim){ if($isGroupOwner){ $rewards[$key]['claimed_by'] = ProductClaimed::select(DB::raw('CONCAT("'.Config::get('constants.app.api-profile-pic-thumb-url').'",profile_pic) as profile_pic')) ->leftJoin('users', 'users.user_id', 'product_claimed.user_id') ->leftJoin('store_product', 'store_product.store_product_id', 'product_claimed.store_product_id') ->where('product_claimed.store_product_id', $claim->store_product_id) ->limit(4) ->get(); } } $data['rewards'] = $rewards; $resData['data'] = $data; return Helpers::successResponse($resData, 200, 'Search successfully.'); } public function test_push(Request $request){ $title = $request->title; $msg = $request->message; $type = 'product_claimed'; if($request->device_type == 'android'){ Helpers::sendPushAndroid(array($request->device_token), $title, $msg, $type, 1); } else if($request->device_type == 'ios'){ Helpers::sendPushIOS(array($request->device_token), $title, $msg, $type, 1); } return Helpers::responseMessage(200, 'Push notification sent successfully.'); } }