123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- <?php
- namespace App\Http\Controllers\Groups;
- use App\Http\Controllers\Controller;
- use Illuminate\Http\Request;
- use App\Services\GroupService;
- use App\Models\Group;
- use App\Models\GroupCategory;
- use App\Models\GroupMember;
- use App\Services\Groups\GroupAccountService;
- class GroupsApiController extends Controller
- {
- public function __construct()
- {
- $this->middleware('auth');
- }
- protected function toJson($group, $pid = false)
- {
- return GroupService::get($group->id, $pid);
- }
- public function getConfig(Request $request)
- {
- return GroupService::config();
- }
- public function getGroupAccount(Request $request, $gid, $pid)
- {
- $res = GroupAccountService::get($gid, $pid);
- return response()->json($res);
- }
- public function getGroupCategories(Request $request)
- {
- $res = GroupService::categories();
- return response()->json($res, 200, [], JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
- }
- public function getGroupsByCategory(Request $request)
- {
- $name = $request->input('name');
- $category = GroupCategory::whereName($name)->firstOrFail();
- $groups = Group::whereCategoryId($category->id)
- ->simplePaginate(6)
- ->map(function($group) {
- return GroupService::get($group->id);
- })
- ->filter(function($group) {
- return $group;
- })
- ->values();
- return $groups;
- }
- public function getRecommendedGroups(Request $request)
- {
- return [];
- }
- public function getSelfGroups(Request $request)
- {
- $selfOnly = $request->input('self') == true;
- $memberOnly = $request->input('member') == true;
- $pid = $request->user()->profile_id;
- $res = GroupMember::whereProfileId($request->user()->profile_id)
- ->when($selfOnly, function($q, $selfOnly) {
- return $q->whereRole('founder');
- })
- ->when($memberOnly, function($q, $memberOnly) {
- return $q->whereRole('member');
- })
- ->simplePaginate(4)
- ->map(function($member) use($pid) {
- $group = $member->group;
- return $this->toJson($group, $pid);
- });
- return response()->json($res);
- }
- }
|