Последняя версия с сервера прошлого разработчика
This commit is contained in:
376
app/Http/Controllers/SettingController.php
Executable file
376
app/Http/Controllers/SettingController.php
Executable file
@@ -0,0 +1,376 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use App\Models\User;
|
||||
use Inertia\Inertia;
|
||||
use Illuminate\Http\Request as HttpRequest;
|
||||
use App\Domain\Subscriptions\Models\Package;
|
||||
use App\Domain\Feeds\Queries\FeedQueryBuilder;
|
||||
use App\Domain\Subscriptions\Service\SubscriptionService;
|
||||
|
||||
class SettingController extends Controller
|
||||
{
|
||||
|
||||
const NOTIFICATION_THRESHOLD = 20;
|
||||
|
||||
public function index()
|
||||
{
|
||||
$user = auth()->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', [
|
||||
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user