From 29d23ba6478dae2535aa383baf3b3109fe3da44f Mon Sep 17 00:00:00 2001 From: Ritikesh yadav Date: Fri, 5 Apr 2024 19:30:15 +0530 Subject: [PATCH] fix changes --- .../Admin/ManageFreeUInvestmentController.php | 26 +- .../LongOnlyEquityFundController.php | 108 +++ .../PrivateCreditFundController.php | 95 +++ .../Controllers/Frontend/HomeController.php | 13 + .../GlobalPrivateCreditController.php | 5 +- .../LongOnlyEquityFundController.php | 84 ++ .../AlternativeInvestmentFundImport.php | 4 +- app/Models/Category.php | 2 +- app/Models/Product.php | 5 + .../GlobalPrivateCreditFundProduct.php | 31 + app/helper.php | 8 +- ...nternationalPrivateEquityFundTemplate.xlsx | Bin 10049 -> 0 bytes .../excel-template/LongOnlyFundsTemplate.xlsx | Bin 0 -> 10504 bytes .../excel-template/PrivateCreditTemplate.xlsx | Bin 0 -> 9193 bytes .../manage_freeu_investment.blade.php | 9 +- .../dummy/global-private-credit.blade.php | 2 + .../views/Frontend/Pages/index.blade.php | 795 ++++++++++-------- ...obal-private-credit-fund-product.blade.php | 60 ++ .../private-credit-fund-product.blade.php | 2 +- routes/web.php | 26 +- 20 files changed, 893 insertions(+), 382 deletions(-) create mode 100644 app/Http/Controllers/Admin/ManageFreeUInvestments/LongOnlyEquityFundController.php create mode 100644 app/Http/Controllers/Admin/ManageFreeUInvestments/PrivateCreditFundController.php create mode 100644 app/Http/Controllers/LongOnlyEquityFundController.php create mode 100644 app/View/Components/GlobalPrivateCreditFundProduct.php delete mode 100644 public/excel-template/InternationalPrivateEquityFundTemplate.xlsx create mode 100644 public/excel-template/LongOnlyFundsTemplate.xlsx create mode 100644 public/excel-template/PrivateCreditTemplate.xlsx create mode 100644 resources/views/components/global-private-credit-fund-product.blade.php diff --git a/app/Http/Controllers/Admin/ManageFreeUInvestmentController.php b/app/Http/Controllers/Admin/ManageFreeUInvestmentController.php index 58e6378..2082f99 100644 --- a/app/Http/Controllers/Admin/ManageFreeUInvestmentController.php +++ b/app/Http/Controllers/Admin/ManageFreeUInvestmentController.php @@ -384,6 +384,7 @@ class ManageFreeUInvestmentController extends Controller 3 => ['id' => Category::GlobalPrivateEquityFundId, 'file' => 'InternationalPrivateEquityFundTemplate'], 4 => ['id' => Category::GlobalVentureDebtId, 'file' => 'RealEstateInvestmentTrustsTemplate'], 5 => ['id' => Category::GlobalHedgeFundId, 'file' => 'InternationalHedgeFundTemplate'], + 6 => ['id' => Category::GlobalPrivateCreditFundId, 'file' => 'PrivateCreditTemplate'], ]; if (!array_key_exists($id, $exchangeData)) { @@ -410,7 +411,7 @@ class ManageFreeUInvestmentController extends Controller public function viewFund($id) { - $fund = Product::with('category', 'funds.returns','product_images')->funds()->find($id); + $fund = Product::with('category', 'funds.returns', 'product_images')->funds()->find($id); // dd($fund); return view('Admin.Pages.manage_freeu_investment.view-product.funds', compact('fund')); } @@ -419,7 +420,7 @@ class ManageFreeUInvestmentController extends Controller { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); - $fund = Product::with('category', 'funds.returns','product_images')->funds()->find($id); + $fund = Product::with('category', 'funds.returns', 'product_images')->funds()->find($id); // dd($fund); return view('Admin.Pages.manage_freeu_investment.edit-product.funds', compact('fund')); } @@ -505,9 +506,9 @@ class ManageFreeUInvestmentController extends Controller } if ($request->hasFile('images')) { - // dd($request->hasFile('images')); + // dd($request->hasFile('images')); // $edit_program_images = ProgramImage::where('programs_xid', $program_id)->delete(); - + foreach ($request->file('images') as $key => $file) { $filename = date('YmdHi') . '_' . $file->getClientOriginalName(); $file->move(public_path('assets/uploads/fund_images'), $filename); @@ -545,14 +546,15 @@ class ManageFreeUInvestmentController extends Controller return response()->json(['status' => 200, 'message' => 'Fund Updated Successfully']); } - public function delete_fund_image(Request $request){ + public function delete_fund_image(Request $request) + { $image = ProductImage::find($request->image_id); $previous_image = public_path($image->images); File::delete($previous_image); $image->id = $request->image_id; $image->delete(); return response()->json(['success' => true, 'status' => 200]); -// dd("requ",$request->all()); + // dd("requ",$request->all()); } @@ -744,7 +746,7 @@ class ManageFreeUInvestmentController extends Controller public function viewRealEstate($id) { // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); - $products = Product::with('category', 'realEstates','product_images')->realestates()->find($id); + $products = Product::with('category', 'realEstates', 'product_images')->realestates()->find($id); // dd($products); return view('Admin.Pages.manage_freeu_investment.view-product.real-estate', compact('products')); } @@ -752,7 +754,7 @@ class ManageFreeUInvestmentController extends Controller public function editRealEstateProduct($id) { $categories = Category::all(); - $products = Product::with('category', 'realEstates','product_images')->realestates()->find($id); + $products = Product::with('category', 'realEstates', 'product_images')->realestates()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.real-estate', compact('products', 'categories')); } @@ -877,7 +879,7 @@ class ManageFreeUInvestmentController extends Controller if ($request->hasFile('images')) { // dd($request->hasFile('images')); - // $edit_program_images = ProgramImage::where('programs_xid', $program_id)->delete(); + // $edit_program_images = ProgramImage::where('programs_xid', $program_id)->delete(); foreach ($request->file('images') as $key => $file) { $filename = date('YmdHi') . '_' . $file->getClientOriginalName(); @@ -889,8 +891,6 @@ class ManageFreeUInvestmentController extends Controller $realEstate->save(); } - - } return response()->json(['status' => 200, 'message' => 'Real Estate Updated Successfully']); @@ -1194,11 +1194,11 @@ class ManageFreeUInvestmentController extends Controller { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); - $fractionalRealEstate = Product::with('category', 'fractional_real_estate','product_images')->fractionalrealestate()->find($id); + $fractionalRealEstate = Product::with('category', 'fractional_real_estate', 'product_images')->fractionalrealestate()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.fractional-real-estate', compact('fractionalRealEstate')); } - public function updateFractionalRealEstateProduct(Request $request,$id) + public function updateFractionalRealEstateProduct(Request $request, $id) { $request->validate([ 'property_name_and_location' => 'required' diff --git a/app/Http/Controllers/Admin/ManageFreeUInvestments/LongOnlyEquityFundController.php b/app/Http/Controllers/Admin/ManageFreeUInvestments/LongOnlyEquityFundController.php new file mode 100644 index 0000000..cffb3ab --- /dev/null +++ b/app/Http/Controllers/Admin/ManageFreeUInvestments/LongOnlyEquityFundController.php @@ -0,0 +1,108 @@ +category_name; + $category_id = $category->id; + $excelFileName = 'LongOnlyFundsTemplate.xlsx'; + return view('Admin.Pages.manage_freeu_investment.upload-product.alternative-investment-fund', compact('text', 'category_id', 'excelFileName')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + request()->validate([ + 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' + ]); + $category_type = $request->category_id; + $category = Category::find($request->category_id); + Excel::import(new AlternativeInvestmentFundImport($category_type), $request->file('productFile')); + // return back()->with('success', "$category->category_name Imported Successfully."); + return back()->with('success', "$category->category_name Imported Successfully."); + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + $alternativeInvestmentFund = Product::with('category', 'alternativeInvestmentFund','product_images')->alternativeInvestmentFund()->find($id); + // dd(Product::find($id)); + // dd($alternativeInvestmentFund); + return view('Admin.Pages.manage_freeu_investment.view-product.alternative-investment-fund', compact('alternativeInvestmentFund')); + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Http/Controllers/Admin/ManageFreeUInvestments/PrivateCreditFundController.php b/app/Http/Controllers/Admin/ManageFreeUInvestments/PrivateCreditFundController.php new file mode 100644 index 0000000..1c85281 --- /dev/null +++ b/app/Http/Controllers/Admin/ManageFreeUInvestments/PrivateCreditFundController.php @@ -0,0 +1,95 @@ +category_name; + $category_id = $category->id; + $excelFileName = 'PrivateCreditTemplate.xlsx'; + return view('Admin.Pages.manage_freeu_investment.upload-product.alternative-investment-fund', compact('text', 'category_id','excelFileName')); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function show($id) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function edit($id) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $id + * @return \Illuminate\Http\Response + */ + public function update(Request $request, $id) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + // + } +} diff --git a/app/Http/Controllers/Frontend/HomeController.php b/app/Http/Controllers/Frontend/HomeController.php index d650627..2cfd916 100644 --- a/app/Http/Controllers/Frontend/HomeController.php +++ b/app/Http/Controllers/Frontend/HomeController.php @@ -22,6 +22,7 @@ use App\Models\VentureDebt; use App\Http\Controllers\Controller; use App\Notifications\UserAdmin; use Illuminate\Support\Facades\Validator; +use Session; class HomeController extends Controller { @@ -33,6 +34,18 @@ class HomeController extends Controller ]); } + public function checkRiskDisclosure(Request $request) + { + // dd($request->all()); + session()->forget('risk_disclosure'); + $checkRiskDisclosure = $request->checked_risk_disclosure == 'true' ? Session::put('risk_disclosure', 'true') : Session::put('risk_disclosure', 'false'); + // dd(Session::get('risk_disclosure')); + if(Session::get('risk_disclosure') == 'true') + { + return response()->json(['status'=>200]); + } + } + public function getAllTopPickProducts() { $data['data'] = Product::getAllDetails()->where('top_pick', true)->get(); diff --git a/app/Http/Controllers/GlobalPrivateCreditController.php b/app/Http/Controllers/GlobalPrivateCreditController.php index e8a884e..eb06846 100644 --- a/app/Http/Controllers/GlobalPrivateCreditController.php +++ b/app/Http/Controllers/GlobalPrivateCreditController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Http\Controllers\Admin\ManageFreeUInvestments\FractionalRealEstateController as FractionalRealEstateFrontendController; +use App\Models\Product; class GlobalPrivateCreditController extends Controller { @@ -12,8 +13,8 @@ class GlobalPrivateCreditController extends Controller $learnMore = (new FractionalRealEstateFrontendController)->globalPCFQuestionAndAnswer()->getData(); return view('Frontend.Pages.dummy.global-private-credit',[ 'learnMore'=>$learnMore, - // 'openGPCF'=>$learnMore, - // 'resaleGPCF'=>$learnMore, + 'openGPCF'=> Product::has('alternativeInvestmentFund')->with('alternativeInvestmentFund.companies','categorys')->globalPrivateCreditFund()->open()->active()->latest()->get(), + 'resaleGPCF'=> Product::has('alternativeInvestmentFund')->with('alternativeInvestmentFund.companies','categorys')->globalPrivateCreditFund()->resale()->active()->latest()->get(), ]); } } diff --git a/app/Http/Controllers/LongOnlyEquityFundController.php b/app/Http/Controllers/LongOnlyEquityFundController.php new file mode 100644 index 0000000..b047cdd --- /dev/null +++ b/app/Http/Controllers/LongOnlyEquityFundController.php @@ -0,0 +1,84 @@ +toArray(), $this->rules(), $this->customValidationMessages($rows))->validate(); - + // dd($rows); foreach ($rows as $row) { $product = Product::create([ 'tables_id' => Table::AlternativeInvestmentFundTable, @@ -62,7 +62,7 @@ class AlternativeInvestmentFundImport implements ToCollection, WithHeadingRow 'created_by' => auth()->user()->id ]); - + AlternativeInvestmentFund::create([ 'products_id' => $product->id, 'slug' => Str::slug($row['name_of_the_fund']), diff --git a/app/Models/Category.php b/app/Models/Category.php index be0f289..ce5a9c5 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -92,7 +92,7 @@ class Category extends Model const PrivateCreditFundId = 41; - // const LongOnlyFundId= 40; // id of row + const GlobalPrivateCreditFundId= 43; public function scopeActive($query) { diff --git a/app/Models/Product.php b/app/Models/Product.php index 3513a36..6251085 100644 --- a/app/Models/Product.php +++ b/app/Models/Product.php @@ -185,6 +185,11 @@ class Product extends Model return $query->where(['tables_id' => 12, 'categories_id' => 40]); } + public function scopeGlobalPrivateCreditFund($query) + { + return $query->where('categories_id', 43); + } + public function scopeInfrastructureFund($query) { return $query->where(['tables_id' => 12, 'categories_id' => 29]); diff --git a/app/View/Components/GlobalPrivateCreditFundProduct.php b/app/View/Components/GlobalPrivateCreditFundProduct.php new file mode 100644 index 0000000..1a6d944 --- /dev/null +++ b/app/View/Components/GlobalPrivateCreditFundProduct.php @@ -0,0 +1,31 @@ +gpcfAllData = $gpcfData; + $this->type = $type; + } + + /** + * Get the view / contents that represent the component. + * + * @return \Illuminate\Contracts\View\View|\Closure|string + */ + public function render() + { + return view('components.global-private-credit-fund-product'); + } +} diff --git a/app/helper.php b/app/helper.php index f7fc4b0..f5f952c 100644 --- a/app/helper.php +++ b/app/helper.php @@ -107,8 +107,10 @@ function routeForHandpickedInvestment($categoryId) Category::PrivateEquityFundId => 'alternative-investment-fund.private-equity-fund-product', Category::GlobalPrivateEquityFundId => 'alternative-investment-fund.private-equity-fund-product', Category::PrivateCreditFundId => 'alternative-investment-fund.private-credit-fund-product', + Category::GlobalPrivateCreditFundId => 'alternative-investment-fund.private-credit-fund-product', Category::PrivateRealEstateFundId => 'alternative-investment-fund.private-real-estate-fund-product', Category::HedgeFundId => 'alternative-investment-fund.hedge-fund-product', + Category::LongOnlyFundId => 'alternative-investment-fund.hedge-fund-product', Category::PrivateInvestmentInPublicEquityFundId => 'alternative-investment-fund.private-investment-public-equity-product', Category::SovereignGovernmentBondId => 'bonds.product', Category::GlobalMutualFundId => 'mutual-funds.product', @@ -335,14 +337,14 @@ function getCategoryIcons($categoryId) "public/assets/media/FrontendImages/private.svg" => Category::PrivateRealEstateFundId, "public/assets/media/FrontendImages/bay-arrow.svg" => Category::LongOnlyFundId, "public/assets/media/FrontendImages/Infr-funds.svg" => Category::InfrastructureFundId, - // "public/assets/media/FrontendImages/cradit-funds.svg" => Category::PrivateCreditFundId, - "public/assets/media/FrontendImages/cradit-funds.svg" => 40, + "public/assets/media/FrontendImages/cradit-funds.svg" => Category::PrivateCreditFundId, + // "public/assets/media/FrontendImages/cradit-funds.svg" => 40, "public/assets/media/FrontendImages/equity-funds.svg" => Category::PrivateEquityFundId, "public/assets/media/FrontendImages/angel-funds.svg" => Category::AngelFundId, "public/assets/media/FrontendImages/stra-fund.svg" => Category::HedgeFundId, "public/assets/media/FrontendImages/pipe-funds.svg" => Category::PrivateInvestmentInPublicEquityFundId, "public/assets/media/FrontendImages/stra-fund.svg" => Category::GlobalHedgeFundId, //global product icons start from here - // "public/assets/media/FrontendImages/cradit-funds.svg" => Category::GlobalPrivateCreditFundId, + "public/assets/media/FrontendImages/cradit-funds.svg" => Category::GlobalPrivateCreditFundId, "public/assets/media/FrontendImages/equity-funds.svg" => Category::GlobalPrivateEquityFundId, "public/assets/media/FrontendImages/capital-funds.svg" => Category::GlobalVentureCapitalFundId, "public/assets/media/FrontendImages/login-img/alternative.svg" => Category::IndianIndustrialRealEstateID, // indain real estate start from here diff --git a/public/excel-template/InternationalPrivateEquityFundTemplate.xlsx b/public/excel-template/InternationalPrivateEquityFundTemplate.xlsx deleted file mode 100644 index 275def00719f4302a1de5ee00d500ff50dafe693..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10049 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 DWId-d diff --git a/public/excel-template/LongOnlyFundsTemplate.xlsx b/public/excel-template/LongOnlyFundsTemplate.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..26bfd4bcfc363c4a71cef7f69df8ed2df769e5aa GIT binary patch literal 10504 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
  • Private Equity Fund
  • -
  • Debt Fund
  • +
  • Private Credit Fund
  • Fund for Distressed Asset
  • Private Investment in Public Equity Fund(PIPE)
  • +
  • Long Only Equity Fund
  • @@ -130,6 +132,9 @@
  • Venture Capital Funds
  • +
  • Private Credit + Funds
  • Private Equity Funds
  • diff --git a/resources/views/Frontend/Pages/dummy/global-private-credit.blade.php b/resources/views/Frontend/Pages/dummy/global-private-credit.blade.php index cf5eac0..b92f78a 100644 --- a/resources/views/Frontend/Pages/dummy/global-private-credit.blade.php +++ b/resources/views/Frontend/Pages/dummy/global-private-credit.blade.php @@ -161,6 +161,8 @@
    + + diff --git a/resources/views/Frontend/Pages/index.blade.php b/resources/views/Frontend/Pages/index.blade.php index a755e05..e4018f0 100644 --- a/resources/views/Frontend/Pages/index.blade.php +++ b/resources/views/Frontend/Pages/index.blade.php @@ -1094,397 +1094,492 @@ --}} + + {{-- modal warning popup modal start --}} + + + + {{-- modal warning popup modal end --}} + + + -@endsection() -@section('scripts') - -@endsection + + @endsection diff --git a/resources/views/components/global-private-credit-fund-product.blade.php b/resources/views/components/global-private-credit-fund-product.blade.php new file mode 100644 index 0000000..a059c8f --- /dev/null +++ b/resources/views/components/global-private-credit-fund-product.blade.php @@ -0,0 +1,60 @@ + diff --git a/resources/views/components/private-credit-fund-product.blade.php b/resources/views/components/private-credit-fund-product.blade.php index 3af8fba..1e3ac3d 100644 --- a/resources/views/components/private-credit-fund-product.blade.php +++ b/resources/views/components/private-credit-fund-product.blade.php @@ -20,7 +20,7 @@ @else @endif - +

    {{ $data->alternative_investment_fund->fund_name }}

    Category: {{ $data->categorys->category_name }}

    diff --git a/routes/web.php b/routes/web.php index f2ee8b9..abd1945 100644 --- a/routes/web.php +++ b/routes/web.php @@ -83,6 +83,8 @@ use App\Http\Controllers\Admin\ManageFreeUInvestments\DebtFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\HedgeFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\InfrastructureFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\PrivateEquityFundController; +use App\Http\Controllers\Admin\ManageFreeUInvestments\PrivateCreditFundController; +use App\Http\Controllers\Admin\ManageFreeUInvestments\LongOnlyEquityFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\PrivateInvestmentInPublicEquityFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\PrivateRealEstateFundController; use App\Http\Controllers\Admin\ManageFreeUInvestments\VentureCapitalFundController; @@ -115,6 +117,7 @@ use App\Http\Controllers\Frontend\GlobalRealAssetController; //admin update profile controller use App\Http\Controllers\Admin\AdminProfileController; use App\Http\Controllers\GlobalPrivateCreditController; +use App\View\Components\LongOnlyEquityFunds; use Illuminate\Support\Facades\Request; /* @@ -127,6 +130,7 @@ use Illuminate\Support\Facades\Request; | contains the "web" middleware group. Now create something great! | */ + Route::delete('delete_fractional_image', [FractionalRealEstateController::class, 'delete_fractional_image'])->name('delete_fractional_image'); Route::delete('delete_image_capital_fund', [VentureCapitalFundController::class, 'delete_image_capital_fund'])->name('delete_image_capital_fund'); @@ -616,11 +620,11 @@ Route::middleware([BackendAccess::class])->group(function () { Route::post('update-status-alternative', 'updateStatusAlternative')->name('update-status-alternative'); Route::post("monthly-updates-change-holding-status", 'monthlyUpdateChangeHoldingStatus')->name('monthly-updates-change-holding-status'); Route::post("monthly-updates-change-status", 'monthlyUpdateChangeStatus')->name('monthly-updates-change-status'); - Route::post("redeem-with-sold-amount",'redeemWithSoldAmount')->name('redeem-with-sold-amount'); + Route::post("redeem-with-sold-amount", 'redeemWithSoldAmount')->name('redeem-with-sold-amount'); }); - + //Manage FreeU Investments - + Route::prefix('manage-investments')->group(function () { Route::controller(ManageFreeUInvestmentController::class)->as('manage.')->group(function () { @@ -630,7 +634,7 @@ Route::middleware([BackendAccess::class])->group(function () { Route::get("/fractional-real-estate/upload", 'addProduct')->name('addproduct'); Route::post("/product/post", 'uploadFile')->name('postproduct'); Route::delete("/product/delete", 'productDelete')->name('product-delete'); - + //Bonds Route::prefix('bonds/upload/')->group(function () { @@ -647,6 +651,7 @@ Route::middleware([BackendAccess::class])->group(function () { Route::get("3", 'uploadFunds')->name('uploadPrivateEquityFunds'); Route::get("4", 'uploadFunds')->name('uploadVentureDebtFunds'); Route::get("5", 'uploadFunds')->name('uploadHedgeFunds'); + Route::get("6", 'uploadFunds')->name('uploadPrivateCreditFunds'); }); Route::post("/funds/post", 'uploadFundFile')->name('postfunds'); @@ -676,7 +681,7 @@ Route::middleware([BackendAccess::class])->group(function () { // Route::get("/real-estate/upload/6", 'uploadRealEstate')->name('uploadGlobalIndustrialRealEstate'); Route::post("/real-estate/post", 'uploadRealEstateFile')->name('postrealestate'); - + Route::prefix('/alternative-investment-fund')->group(function () { Route::resource('venture-capital-fund', VentureCapitalFundController::class); @@ -685,10 +690,12 @@ Route::middleware([BackendAccess::class])->group(function () { Route::resource('infrastructure-fund', InfrastructureFundController::class); Route::resource('fund-for-distressed-asset', FundForDistressedAssetController::class); Route::resource('private-equity-fund', PrivateEquityFundController::class); + Route::resource('private-credit-fund', PrivateCreditFundController::class); Route::resource('debt-fund', DebtFundController::class); Route::resource('private-real-estate-fund', PrivateRealEstateFundController::class); Route::resource('hedge-fund', HedgeFundController::class); Route::resource('pipe-fund', PrivateInvestmentInPublicEquityFundController::class); + Route::resource('long-only-equity-fund', LongOnlyEquityFundController::class); Route::resources([ 'fractional-real-estate' => FractionalRealEstateImportController::class, 'peer-to-peer-lending' => PeerToPeerLendingImportController::class, @@ -843,7 +850,7 @@ Route::middleware([BackendAccess::class])->group(function () { Route::get("manage-sub-admin", 'listSubAdmin')->name('manage_sub_admin'); Route::view('add/sub-admin', 'Admin.add-sub-admin')->name('add.sub-admin'); Route::post('store/sub-admin', 'addSubAdmin')->name('store.sub-admin'); - Route::get('view/sub-admin','viewSubAdmin')->name('view.sub-admin'); + Route::get('view/sub-admin', 'viewSubAdmin')->name('view.sub-admin'); Route::get("role_list", 'addPage')->name('role_list')->name('role_list'); Route::post("view_role", 'store')->name('view_role')->name('view_role'); Route::post("status", 'status')->name('status'); @@ -936,6 +943,10 @@ Route::any('/prinicipal-groups-delete/{id}', [UserGroupController::class, 'delet //Frontend Route::get('/', [HomeController::class, 'index'])->name('index'); +Route::get('/forget-session',function(){ + Session::forget('risk_disclosure'); +}); +Route::post('/check-risk-disclosure', [HomeController::class, 'checkRiskDisclosure'])->name('check-risk-disclosure'); Route::get('/invest-now', [HomeController::class, 'investNow'])->name('investNow'); Route::post('/mark-all-notifications-as-read', [HomeController::class, 'updateAllNotification'])->name('mark-all-notifications'); @@ -974,7 +985,6 @@ Route::controller(AlternativeInvestmentFundController::class)->prefix('alternati Route::get('/category-two/private-credit-funds/{slug}', 'privateCreditFundProduct')->name('private-credit-fund-product'); Route::get('/category-three/long-only-equity-funds', 'longOnlyEquityFund')->name('long-only-equity-funds'); Route::get("/category-three/long-only-equity-funds/{slug}", 'longOnlyEquityFundProduct')->name('long-only-equity-fund-product'); - }); Route::controller(FractionalRealEstateController::class)->prefix('fractional-real-estate')->name('fractional-real-estate.')->group(function () { @@ -1158,7 +1168,7 @@ Route::view('global', 'Frontend.Pages.dummy.global')->name('global'); Route::view('global-angel-investing', 'Frontend.Pages.dummy.global-angel-investing')->name('global-angel-investing'); Route::view('global-growth-capital', 'Frontend.Pages.dummy.global-growth-capital')->name('global-growth-capital'); Route::view('global-mezzanine-financing', 'Frontend.Pages.dummy.global-mezzanine-financing')->name('global-mezzanine-financing'); -Route::get('global-private-credit',[GlobalPrivateCreditController::class,'getGlobalPrivateCreditFundPage'])->name('global-private-credit'); +Route::get('global-private-credit', [GlobalPrivateCreditController::class, 'getGlobalPrivateCreditFundPage'])->name('global-private-credit'); Route::view('global-private-equity', 'Frontend.Pages.dummy.global-private-equity')->name('global-private-equity'); // indian links Route::view('indian-angel-investing', 'Frontend.Pages.dummy.indian-angel-investing')->name('indian-angel-investing');