Files
freeu-project/app/Http/Controllers/Admin/OverviewController.php
2024-04-04 19:47:22 +05:30

271 lines
12 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
use Mail;
use App\Models\User;
use App\Models\Company;
use App\Mail\SentBuyerMail;
use Illuminate\Http\Request;
use App\Notifications\UserAdmin;
use App\Models\Admin\BuyerSentMail;
use App\Models\MarketplaceBuyerForm;
use App\Http\Controllers\Controller;
use App\Models\MarketplaceSellerForm;
use Illuminate\Support\Facades\Validator;
use App\Models\MarketplaceOtherProductsSeller;
use App\Models\MarketplaceFractionalRealEstateSeller;
use App\Models\MarketplaceAlternativeInvestmentFundSeller;
class OverviewController extends Controller
{
public function index()
{
$totalSellerProfile = MarketplaceSellerForm::count();
$completedTransactions = MarketplaceBuyerForm::where('status', 'Sold')->count();
$totalInvestmentListed = MarketplaceAlternativeInvestmentFundSeller::count() + MarketplaceFractionalRealEstateSeller::count() + MarketplaceOtherProductsSeller::count();
$aifMarketPlace = MarketplaceAlternativeInvestmentFundSeller::where('status', 'Approved')->latest()->get();
$freMarketPlace = MarketplaceFractionalRealEstateSeller::where('status', 'Approved')->latest()->get();
$opMarketPlace = MarketplaceOtherProductsSeller::where('status', 'Approved')->latest()->get();
return view('Admin.Pages.pre_owned_investment.pre_owned_investment', compact('aifMarketPlace', 'freMarketPlace', 'opMarketPlace', 'totalSellerProfile', 'completedTransactions', 'totalInvestmentListed'));
}
public function interestedBuyers($id, $table)
{
$interestedBuyers = MarketplaceBuyerForm::where(['associated_id' => $id, 'table' => $table])->get();
if ($table == 'marketplace_fre_sellers') {
$data = MarketplaceFractionalRealEstateSeller::with('seller')->where('id', $id)->firstOrFail();
} elseif ($table == 'marketplace_aif_sellers') {
$data = MarketplaceAlternativeInvestmentFundSeller::with('seller')->where('id', $id)->firstOrFail();
} elseif ($table == 'marketplace_op_sellers') {
$data = MarketplaceOtherProductsSeller::with('seller')->where('id', $id)->firstOrFail();
} else {
abort(404);
}
$backId = $id;
$backTable = $table;
return view('Admin.Pages.pre_owned_investment.interested-buyers', compact('interestedBuyers', 'data', 'backId', 'backTable'));
}
public function listingFeaturedStatus(Request $request)
{
$listingStatus = $request->listing_status;
$id = $request->id;
$table = $request->table;
if (!($table == 'marketplace_aif_sellers' || $table == 'marketplace_fre_sellers' || $table == 'marketplace_op_sellers')) {
abort(404);
}
if ($listingStatus == 'Spotlight') {
$checkSpotlightExists = MarketplaceFractionalRealEstateSeller::where('listing_status', 'Spotlight')->exists() || MarketplaceAlternativeInvestmentFundSeller::where('listing_status', 'Spotlight')->exists() || MarketplaceOtherProductsSeller::where('listing_status', 'Spotlight')->exists();
if ($checkSpotlightExists) {
return response()->json(['status' => 400, 'message' => 'An Investment Already Listed With Spotlight!']);
}
}
$data = \DB::table($table)->join('marketplace_seller_forms', $table . '.seller_forms_id', 'marketplace_seller_forms.id')->where($table . '.id', $id)->first();
$changeListingStatus = \DB::table($table)->where('id', $id)->update([
'listing_status' => $listingStatus
]);
if ($changeListingStatus && $listingStatus != 'Hide') {
$user = User::find($data->users_id);
$productName = $data->security_name ?? $data->property_name ?? $data->name_of_the_aif_fund;
$notify['message'] = "Congratulations, Your investment($productName) has been assigned to $listingStatus section!";
$user->notify(new UserAdmin($notify));
return response()->json(['status' => 200, 'message' => 'Listing Status Changed!']);
}
return response()->json(['status' => 400, 'message' => 'Error Changing Listing Status!']);
}
public function changeStatusBuyer(Request $request)
{
$status = $request->status;
$buyerId = $request->buyer_id;
// if ($status == 'Sold') {
// $alreadySold = MarketplaceBuyerForm::where('status', 'Sold')->exists();
// if ($alreadySold) {
// return response()->json(['status' => 400, 'message' => 'This product has already been Sold']);
// }
// }
$alreadySold = MarketplaceBuyerForm::where('id', $buyerId)->update([
'status' => $status
]);
return response()->json(['status' => 200, 'message' => 'Status Changed!']);
}
public function listingTransfer()
{
// $freMarketPlace = MarketplaceFractionalRealEstateSeller::with('seller')->orderBy('created_at', 'desc')->get();
// $aifMarketPlace = MarketplaceAlternativeInvestmentFundSeller::with('seller')->orderBy('created_at', 'desc')->get();
// $opMarketPlace = MarketplaceOtherProductsSeller::with('seller')->orderBy('created_at', 'desc')->get();
// dd($aifMarketPlace[29]);
//new by hritik
$freMarketPlace = MarketplaceFractionalRealEstateSeller::with('seller')->orderBy('created_at', 'desc')->get();
$aifMarketPlace = MarketplaceAlternativeInvestmentFundSeller::with('seller')->orderBy('created_at', 'desc')->get();
$opMarketPlace = MarketplaceOtherProductsSeller::with('seller')->orderBy('created_at', 'desc')->get();
$combinedData = collect();
foreach ($freMarketPlace as $freData) {
$freData->table = 'marketplace_fre_sellers';
$combinedData->push($freData);
}
foreach ($aifMarketPlace as $aifData) {
$aifData->table = 'marketplace_aif_sellers';
$combinedData->push($aifData);
}
foreach ($opMarketPlace as $opData) {
$opData->table = 'marketplace_op_sellers';
$combinedData->push($opData);
}
$combinedData = $combinedData->sortByDesc('created_at');
//new end
// dd($combinedData);
return view('Admin.Pages.pre_owned_investment.pre_owned_investmentV2',
compact('freMarketPlace', 'aifMarketPlace', 'opMarketPlace','combinedData'));
}
public function listingDetails($id, $table)
{
$table = [
'marketplace_fre_sellers' => 1,
'marketplace_aif_sellers' => 2,
'marketplace_op_sellers' => 3,
][$table];
if ($table == 1) {
$data = MarketplaceFractionalRealEstateSeller::with('seller', 'company')->where('id', $id)->firstOrFail();
} elseif ($table == 2) {
$data = MarketplaceAlternativeInvestmentFundSeller::with('seller')->where('id', $id)->firstOrFail();
} elseif ($table == 3) {
$data = MarketplaceOtherProductsSeller::with('seller')->where('id', $id)->firstOrFail();
}
return view('Admin.Pages.pre_owned_investment.pending_investment_view', compact('data', 'table'));
}
public function listingStatus(Request $request)
{
$table = [
'marketplace_fre_sellers' => 1,
'marketplace_aif_sellers' => 2,
'marketplace_op_sellers' => 3,
][$request->table];
if ($table == 1) {
MarketplaceFractionalRealEstateSeller::where('id', $request->id)->update(['status' => $request->status]);
$userId = MarketplaceFractionalRealEstateSeller::with('seller')->where('id', $request->id)->firstOrFail();;
} elseif ($table == 2) {
MarketplaceAlternativeInvestmentFundSeller::where('id', $request->id)->update(['status' => $request->status]);
$userId = MarketplaceAlternativeInvestmentFundSeller::with('seller')->where('id', $request->id)->firstOrFail();;
} elseif ($table == 3) {
MarketplaceOtherProductsSeller::where('id', $request->id)->update(['status' => $request->status]);
$userId = MarketplaceOtherProductsSeller::with('seller')->where('id', $request->id)->firstOrFail();;
}
if (!$table) {
return response()->json(['status' => 400, 'message' => 'Error Changing status']);
}
if ($request->status != 'Pending') {
$user = User::find($userId->seller->users_id);
$productName = $userId->property_name ?? $userId->name_of_the_aif_fund ?? $userId->security_name;
$notify['message'] = "Your Investment($productName) has been $request->status for marketplace listing!";
$user->notify(new UserAdmin($notify));
}
return response()->json(['status' => 200, 'message' => 'Status Changed']);
}
public function total_investment_on_sale()
{
return view('Admin.Pages.pre_owned_investment.total_investment_on_sale');
}
public function transactions()
{
$aifBuyerForm = MarketplaceAlternativeInvestmentFundSeller::with('seller', 'company')->join('marketplace_buyer_forms', 'marketplace_aif_sellers.id', 'marketplace_buyer_forms.associated_id')
->latest('marketplace_aif_sellers.created_at')->get();
$freBuyerForm = MarketplaceFractionalRealEstateSeller::with('seller', 'company')->join('marketplace_buyer_forms', 'marketplace_fre_sellers.id', 'marketplace_buyer_forms.associated_id')->latest('marketplace_fre_sellers.created_at')->get();
$opBuyerForm = MarketplaceOtherProductsSeller::with('seller', 'company')->join('marketplace_buyer_forms', 'marketplace_op_sellers.id', 'marketplace_buyer_forms.associated_id')->latest('marketplace_op_sellers.created_at')->get();
$companies = Company::active()->pluck('company_name', 'id');
return view('Admin.Pages.pre_owned_investment.transactions', compact('aifBuyerForm', 'freBuyerForm', 'opBuyerForm', 'companies'));
}
// public function manage_seller_profile()
// {
// return view('Admin.Pages.pre_owned_investment.manage_seller_profile');
// }
public function approved_investment_view($id)
{
$id = $id;
return view('Admin.Pages.pre_owned_investment.approved_investment_view', compact('id'));
}
public function replyMail(Request $request)
{
$validator = Validator::make($request->all(), [
'subject' => 'required',
'reply' => 'required',
], [
'required' => "This :attribute field is required",
]);
$validate = validationErrorMessage($validator);
if ($validate) {
return response()->json(['status' => 400, 'message' => $validate]);
}
$data['subject'] = $request->subject;
$data['message'] = $request->reply;
$email = $request->email_send;
Mail::to($email)->send(new SentBuyerMail($data));
$sendData = BuyerSentMail::create([
'subject' => $request->subject,
'content' => $request->reply,
'sent_by' => auth()->user()->id,
'marketplace_buyer_forms_id' => $request->marketplace_buyer_form_id,
]);
if ($sendData) {
return response()->json(['status' => 200, 'message' => "Mail send Successfully"]);
} else {
return response()->json(['status' => 201, 'message' => "Mail not send"]);
}
}
public function viewReplyMail($id, $return, $table)
{
$replies = BuyerSentMail::with('users')->where('marketplace_buyer_forms_id', '=', $id)->get();
$backRoute = $backRoute = route('interest-buyers', ['id' => $return, 'table' => $table]);
return view('Admin.Pages.pre_owned_investment.partial.mails-reply', compact('replies', 'backRoute'));
}
public function updateCompleteTransaction(Request $request)
{
$completedTransactionUpdated = MarketplaceBuyerForm::where('id', $request->buyer_id)->update([
'complete_units_sold' => $request->final_units_sold,
'complete_sale_value' => $request->final_sale_value,
'commission_earned' => $request->commission_earned,
'date_of_sale' => $request->date_of_sale,
'platform' => $request->platform,
'final_purchase_value' => $request->final_purchase_value,
]);
if ($completedTransactionUpdated) {
return response()->json(['status' => 200, 'message' => 'Transaction Updated!'], 200);
} else {
return response()->json(["status" => 400, 'message' => 'Transaction Cannot Be Updated!'], 400);
}
}
}