user(); return Inertia::render('Settings/SettingsProfile', [ 'user' => [ 'id' => $user->id, 'name' => $user->name, 'username' => $user->username, 'first_name' => $user->first_name, 'last_name' => $user->last_name, 'email' => $user->email, 'user_char' => $user->user_char, 'color' => $user->color, 'sex' => $user->sex, 'type' => $user->type, 'phone' => $user->phone, 'date_of_birth' => $user->date_of_birth, 'photo_path' => $user->photo_path, 'banner_path' => $user->banner_path, 'about' => $user->about, 'private' => $user->private, 'inn' => $user->inn, 'checking_account' => $user->checking_account, 'bik' => $user->bik, // 'allow_adult_content' => $user->allow_adult_content, ], ]); } public function notify() { auth()->user()->unreadNotifications()->update(['read_at' => Carbon::now()]); $notifications = auth()->user() ->notifications() ->latest() ->take(self::NOTIFICATION_THRESHOLD) ->get(); $notifications_transform = []; foreach ($notifications as $notification) { $d = []; $data = $notification->data; if($notification->notifiable_type === User::class){ if($notification->type === 'App\Notifications\LikeAdded'){ $d['type'] = 'like'; } if($notification->type === 'App\Notifications\CommentAdded'){ $d['type'] = 'comment'; } if($notification->type === 'App\Notifications\Subscribed'){ $d['type'] = 'subs'; } if($notification->type === 'App\Notifications\LeaderChoice'){ $d['type'] = 'leader'; } if($notification->type === 'App\Notifications\UserCustomPaidSubscription'){ $d['type'] = 'custom-paid-subs'; } if($notification->type === 'App\Notifications\PurchaseAdded'){ $d['type'] = 'purchase'; } if($notification->type === 'App\Notifications\RemoveFeed'){ $d['type'] = 'remove-feed'; } if($notification->type === 'App\Notifications\BannedMessageFeed'){ $d['type'] = 'banned-message-feed'; } $user_who = User::find($data['user_id']); if(empty($user_who)){ $notification->delete(); continue; } $d['user'] = [ 'id' => $user_who->id, 'name' => $user_who->name, 'username' => $user_who->username, 'photo_path' => $user_who->photo_path, 'color' => $user_who->color, 'user_char' => $user_who->user_char, ]; if(@$data['node_id']){ $feed = new FeedQueryBuilder; $d['feed'] = $feed->selectByIds($data['node_id'])->disableActiveFeed()->withTrashed()->transformGet()->first(); }else{ $d['feed'] = ''; } $d['data'] = $data; $d['id'] = $notification->id; $d['created_at'] = $notification->created_at->diffForHumans(); } $notifications_transform[] = $d; } return Inertia::render('Settings/SettingsNotify', [ 'notifications' => $notifications_transform, ]); } public function money() { $user = auth()->user(); $points = $user ->points() ->orderBy('id', 'desc') ->cursorPaginate(User::PAGINATE); $nextCursor = get_cursor_hash($points); $points->each(function($line){ $dt = explode(' ', $line->created_at); $line->date = $dt[0]; $line->time = $dt[1]; return $line; }); if(request()->wantsJson()){ return ['collections' => $points->items(), 'next' => $nextCursor]; } return Inertia::render('Settings/SettingsMoney', [ 'points' => $points->items(), 'nextCursor' => $nextCursor, ]); } public function tarif() { $user = auth()->user(); $is_active = SubscriptionService::activeSubscription(); $user_id = $user->id; $user_autosubscription = $user->autosubscription_site; $plans = Package::all(); $lastSubscription = $user->subscription->first(); if ($lastSubscription) { $lastSubscription->setRelation('package', $plans->where('id', $lastSubscription->package_id)->first()); $lastSubscription->endDateTime = $lastSubscription->ends_at->format('Y-m-d'); } return Inertia::render('Settings/SettingsTarif', [ 'plans' => $plans, 'is_active_sub' => $is_active, 'user_autosubscription' => $user_autosubscription, 'user_id' => $user_id, 'lastSubscription' => $lastSubscription, ]); } public function likes() { $feeds = (new FeedQueryBuilder(auth()->user()->likes()))->order()->build(); $nextCursor = $feeds->nextCursor; $feeds = $feeds->transformData(); if(request()->wantsJson()){ return ['collections' => $feeds, 'next' => $nextCursor]; } return Inertia::render('Settings/SettingsLikes', [ 'feeds' => $feeds, 'nextCursor' => $nextCursor, ]); } public function payouts() { $user = auth()->user(); // $requisites = []; // $bankRequisites = $user->bank_requisites->first(); // if($bankRequisites){ // $requisites['id'] = $bankRequisites->id; // $requisites['number'] = $bankRequisites->number; // } $withdrawals = $user->withdrawals() ->orderBy('id', 'desc') ->cursorPaginate(User::PAGINATE); $nextCursor = get_cursor_hash($withdrawals); $statusCode = [ 'pending' => 'Запрос отправлен', 'success' => 'Запрос выполнен', 'cancel' => 'Отмена выплаты', ]; $withdrawals->each(function($line) use($statusCode) { $dt = explode(' ', $line->created_at); $line->datePart = $dt[0]; $line->timePart = $dt[1]; $line->meta = 'Статус: ' . $statusCode[$line->status]; $line->history_payment_details = nl2br($line->history_payment_details); return $line; }); if(request()->wantsJson()){ return ['collections' => $withdrawals->items(), 'next' => $nextCursor]; } return Inertia::render('Settings/SettingsPayouts', [ // 'requisites' => $requisites, 'isVerified' => $user->isVerified(), 'withdrawals' => $withdrawals->items() ]); } public function packet() { $user = auth()->user(); $userPackage = $user->customPackage; $purchased_subscriptions_by_users = \DB::table('users_package_customers') ->where('user_id', auth()->user()->id)->orderBy('customer_id')->orderBy('time_end', 'desc')->get(); $purchased_subscriptions_by_users = $purchased_subscriptions_by_users->groupBy('customer_id'); $subscriptions_by_users = \DB::table('users_package_customers') ->join('users_subscribers', 'users_package_customers.customer_id', '=', 'users_subscribers.user_id') ->select('users_package_customers.*', 'users_subscribers.autosubscription', 'users_subscribers.user_id as usId', 'users_subscribers.subscriber_id as subsId') ->where('users_package_customers.customer_id', auth()->user()->id) ->orderBy('users_package_customers.user_id') ->orderBy('users_package_customers.time_end', 'desc') ->get(); $subscriptions_by_users = $subscriptions_by_users->filter(function ($item) { return $item->user_id === $item->subsId && $item->customer_id === $item->usId; }); // $subscriptions_by_users = \DB::table('users_package_customers') // ->where('customer_id', auth()->user()->id) // ->orderBy('user_id') // ->orderBy('time_end', 'desc') // ->get(); $subscriptions_by_users = $subscriptions_by_users->groupBy('user_id'); $buyers = $this->getPacketUsers($purchased_subscriptions_by_users); $subscriptions = $this->getPacketUsers($subscriptions_by_users); return Inertia::render('Settings/SettingsPacket', [ 'user' => $user, 'packet' => $userPackage, 'buyers' => $buyers->values()->toArray(), 'subscriptions' => $subscriptions->values()->toArray(), ]); } protected function getPacketUsers($subscriptions) { $ids_customer = $subscriptions->keys(); $users_customer = User::whereIn('id', $ids_customer)->get(); return $subscriptions->map(function ($items, $id) use($users_customer) { $new = []; $new['active'] = false; $new['autosubscription'] = false; $new['user'] = $users_customer->where('id', $id)->first() ->only([ 'id', 'first_name', 'last_name', 'color', 'user_char', 'username', 'photo_path' ]); foreach($items as $item){ // dd($items); $carbon = \Carbon\Carbon::parse($item->time_end); $active = now() < $carbon; if($active){ $new['active'] = $active; } $new['autosubscription'] = $item->autosubscription ?? false; $new['lists'][] = ['time_end' => $carbon->format('d.m.Y'), 'price' => $item->price, 'active' => $active]; } return $new; }); // dd($test); // return $subscriptions->map(function ($item) use($users_customer,$type) { // $carbon = \Carbon\Carbon::parse($item->time_end); // return [ // 'id' => $item->id, // 'price' => $item->price, // 'time_end' => $carbon->format('d.m.Y'), // 'active' => now() < $carbon, // 'user' => $users_customer->first(function ($value) use($item,$type) { // return $value->id == $item->{$type}; // })->toArray() // ]; // }); } public function verification(HttpRequest $request) { $document = $request->user()->getMedia('documents'); $first_document = $document->first(); $doc_uuid = null; if($first_document){ $doc_uuid = $first_document->uuid; } $user = auth()->user(); $isPhoneVerify = $user->phone_verified; $isPassportVerified = $user->passport_verified; if (!empty($user->phone_verify_token) && $user->phone_verify_token_expire && $user->phone_verify_token_expire->gt(now())) { $isToken = true; }else{ $isToken = false; } return Inertia::render('Settings/SettingsVerification', [ 'docUuid' => $doc_uuid, 'isToken' => $isToken, 'isPhoneVerify' => $isPhoneVerify, 'isPassportVerified' => $isPassportVerified, 'phone' => $request->user()->phone, ]); } public function writeToUs(HttpRequest $request) { return Inertia::render('Settings/SettingsWriteToUs', [ ]); } public function documentsInfo() { return Inertia::render('Settings/SettingsDocuments', [ ]); } }