select(DB::raw('products.id, coalesce(sdi.product_name,re.property_name,funds.fund_name , p2p.scheme, fre.property_name_and_location,id.company_name,aif.fund_name,caga.project_name,hyf.security_name,lbf.company,sdi.product_name,vd.company_name) as product_name'), DB::raw('DATE_FORMAT(products.created_at, "%d-%b-%Y") as date'), 'categories.category_name', DB::raw('coalesce(sdi.minimum_investment, p2p.minimum_investment, fre.minimum_investment,id.minimum_investment,aif.minimum_investment,caga.minimum_investment,hyf.minimum_investment,lbf.minimum_investment,sdi.minimum_investment,vd.minimum_investment,re.total_price,funds.minimum_investment) as minimum_investment'), 'products.commission_type', 'products.rate', 'products.commission', 'products.description', 'products.top_pick', 'products.tables_id', 'products.status') ->leftJoin('securitized_debt_instruments as sdi', 'products.id', 'sdi.products_id') ->leftJoin('fractional_real_estates as fre', 'products.id', 'fre.products_id') ->leftJoin('peer_to_peer_lendings as p2p', 'products.id', 'p2p.products_id') ->leftJoin('invoice_discountings as id', 'products.id', 'id.products_id') ->leftJoin('alternative_investment_funds as aif', 'products.id', 'aif.products_id') ->leftJoin('clean_and_green_assets as caga', 'products.id', 'caga.products_id') ->leftJoin('high_yield_finances as hyf', 'products.id', 'hyf.products_id') ->leftJoin('lease_based_financings as lbf', 'products.id', 'lbf.products_id') ->leftJoin('venture_debts as vd', 'products.id', 'vd.products_id') ->leftJoin('real_estates as re', 'products.id', 're.products_id') ->leftJoin('funds', 'products.id', 'funds.products_id') ->join('categories', 'products.categories_id', 'categories.id') ->latest('products.created_at') ->get(); return view('Admin.Pages.manage_freeu_investment.manage_freeu_investment', compact('products')); } // public function add_new_investment_product() public function addNewInvestmentProduct() { return view('Admin.Pages.manage_freeu_investment.add_new_investment_product'); } public function productDelete(Request $request) { // dd($request->all()); $exists = MonthlyUpdateMaster::where('products_id',$request->id)->where('holding_status','Holding')->exists(); if($exists) { return response(['status' => 400, 'message' => 'You can not delete this product because some investor has holding this product']); } // dd('hello'); $product = Product::where('id', $request->id)->delete(); // $FREProduct = FractionalRealEstate::where('products_id',$request->id)->first(); if (FractionalRealEstate::where('products_id', $request->id)->exists()) { FractionalRealEstate::where('products_id', $request->id)->delete(); } elseif (AlternativeInvestmentFund::where('products_id', $request->id)->exists()) { AlternativeInvestmentFund::where('products_id', $request->id)->delete(); } elseif (RealEstate::where('products_id', $request->id)->exists()) { RealEstate::where('products_id', $request->id)->delete(); } elseif (Fund::where('products_id', $request->id)->exists()) { Fund::where('products_id', $request->id)->delete(); } elseif (IndianFinancialAssets::where('products_id', $request->id)->exists()) { IndianFinancialAssets::where('products_id', $request->id)->delete(); } elseif (StockFundsRealEstateExchange::where('products_id', $request->id)->exists()) { StockFundsRealEstateExchange::where('products_id', $request->id)->delete(); } elseif (VentureDebt::where('products_id', $request->id)->exists()) { VentureDebt::where('products_id', $request->id)->delete(); } elseif (VentureDebt::where('products_id', $request->id)->exists()) { VentureDebt::where('products_id', $request->id)->delete(); } elseif (InvoiceDiscounting::where('products_id', $request->id)->exists()) { InvoiceDiscounting::where('products_id', $request->id)->delete(); } if ($product) { return response(['status' => 200, 'message' => 'Product deleted successfully']); } else { return response(['status' => 204, 'message' => 'Something went wrong! Try again']); } } // public function viewFractionalRealEstateProduct($id) // { // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); // // dd($products); // return view('Admin.Pages.manage_freeu_investment.view_investment_product', compact('products')); // } // public function editFractionalRealEstateProduct($id) // { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); // return view('Admin.Pages.manage_freeu_investment.edit_investment_product', compact('products', 'categories')); // } public function productStatus(Request $request) { $id = $request->id; $status = $request->status == 1 ? 0 : 1; $updateStatus = Product::where('id', $id)->update([ 'status' => $status ]); if (!$updateStatus) { return response()->json(['status' => 400, 'message' => 'Error Changing Category Status!']); } return response()->json(['status' => 200, 'message' => 'Status Changed!']); } public function topPick(Request $request) { $id = $request->id; $top_pick = $request->top_pick == 1 ? 0 : 1; $updateStatus = Product::where('id', $id)->update([ 'top_pick' => $top_pick ]); if (!$updateStatus) { return response()->json(['status' => 400, 'message' => 'Error Changing Top Pick Status!']); } return response()->json(['status' => 200, 'message' => 'Top Pick Status Changed!']); } public function getAllTopPickProducts() { $data['data'] = Product::getAllDetails()->where('top_pick', true)->get(); return $data; } // public function updateFractionalRealEstateProduct(Request $request) // { // $request->validate([ // 'property_name' => 'required' // ]); // $fractionalRealEstate = FractionalRealEstate::where('id', $request->fractional_real_estate)->update([ // 'property_name' => $request->property_name, // 'companies_id' => $request->companies_id, // 'price_per_sq_ft' => $request->price_per_sq_ft, // 'property_location' => $request->property_location, // 'project_type' => $request->project_type, // 'current_status' => $request->current_status, // 'booking_amount' => $request->booking_amount, // 'price_range' => $request->price_range, // 'total_price' => $request->total_price, // 'transaction_type' => $request->transaction_type, // 'project_code_or_rera_id' => $request->project_code_or_rera_id, // 'built_up_area' => $request->built_up_area, // 'carpet_area' => $request->carpet_area, // 'area_in_sq_ft' => $request->area_in_sq_ft, // 'construction_status' => $request->construction_status, // 'launch_date' => $request->launch_date, // 'completed_in' => $request->completed_in, // 'total_units' => $request->total_units, // 'unit_type' => $request->unit_type, // 'no_of_bedrooms' => $request->no_of_bedrooms, // 'no_of_restrooms' => $request->no_of_restrooms, // 'no_of_floors' => $request->no_of_floors, // 'furnished_status' => $request->furnished_status, // 'commencement_certificate' => $request->commencement_certificate, // 'occupancy_certificate' => $request->occupancy_certificate, // 'total_towers' => $request->total_towers, // 'builder_details' => $request->builder_details, // 'landmarks' => $request->landmarks, // 'amenities' => $request->amenities, // 'elevators' => $request->elevators, // 'car_parking' => $request->car_parking, // 'electricity_status' => $request->electricity_status, // 'fire_safety_measures' => $request->fire_safety_measures, // 'water_facility' => $request->water_facility, // 'price_negotiable' => $request->price_negotiable, // 'maintenance_fees' => $request->maintenance_fees, // 'nearest_railway_metro_station' => $request->nearest_railway_metro_station, // 'pre_leased' => $request->pre_leased, // 'tenant_details' => $request->tenant_details, // 'facilities_features' => $request->facilities_features, // 'construction_age' => $request->construction_age, // 'country' => $request->country, // 'remarks' => $request->remarks, // // 'min_investment' => $request->min_investment, // // 'min_investment_int' => $request->min_investment_int, // // 'total_price' => $request->total_price, // // 'total_price_int' => $request->total_price_int, // // 'gross_average_field' => $request->gross_average_field, // // 'funded_amount' => $request->funded_amount, // // 'city' => $request->city, // // 'tenure' => $request->tenure, // // 'asset_type' => $request->asset_type, // // 'address' => $request->address, // // 'return_rate' => $request->return_rate, // // 'target_irr' => $request->target_irr, // // 'description' => $request->description, // // 'overview' => $request->overview, // ]); // return response()->json(['status' => 200, 'message' => 'Fractional Real Estate Updated Successfully']); // } public function manage_manufactures_company() { return view('Admin.Pages.manage_freeu_investment.manage_manufactures_company'); } public function manageProducts() { } public function manageCompanies() { return view('Admin.manage-freeu-investments.companies'); } public function manageCategories() { } public function addProduct() { return view('Admin.Pages.manage_freeu_investment.add_product'); } public function uploadFile(Request $request) { request()->validate([ 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' ]); Excel::import(new FractionalRealEstateImport, $request->file('productFile')); return back()->with('success', 'Product Imported Successfully.'); } public function fractionalRealEstate() { $fractionalRealEstate = FractionalRealEstate::all(); return response()->json(['status' => 200, 'message' => 'Data Found', 'data' => $fractionalRealEstate], 200); } public function uploadBonds() { $id = basename(request()->path()); $bondData = [ 1 => ['id' => Category::SovereignGovernmentBondId, 'file' => 'SovereignGovernmentBondTemplate'], 2 => ['id' => Category::CorporateBondInvestmentGradeId, 'file' => 'CorporateBondInvestmentGradeTemplate'], 3 => ['id' => Category::CorporateBondHighYieldId, 'file' => 'CorporateBondHighYieldTemplate'], ]; if (!array_key_exists($id, $bondData)) { abort(404); } $category = Category::find($bondData[$id]['id']); $category_id = $category->id; $text = $category->category_name; $excelName = $bondData[$id]['file']; return view('Admin.Pages.manage_freeu_investment.upload-product.bonds', compact('text', 'category_id', 'excelName')); } public function uploadBondFile(Request $request) { request()->validate([ 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' ]); $category_type = $request->category_id; Excel::import(new BondImport($category_type), $request->file('productFile')); return redirect()->route('manage.products')->with('success', 'Bonds Imported Successfully.'); } public function viewBond($id) { // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); // dd($products); $bond = Product::with('category', 'bonds')->bonds()->find($id); // dd($bond); return view('Admin.Pages.manage_freeu_investment.view-product.bonds', compact('bond')); } public function editBondProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $bond = Product::with('category', 'bonds')->bonds()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.bonds', compact('bond')); } public function updateBondProduct(Request $request) { // $request->validate([ // 'issuer' => 'required' // ]); $validate = Validator::make($request->all(), [ 'issuer' => 'required', 'presentation' => "mimes:pdf,zip,jpeg,jpg,png", 'fact_sheet' => "mimes:pdf,zip,jpeg,jpg,png", 'type' => 'required', 'geographic_focus' => 'required', ], [ 'required' => "This :attribute field is required", 'mimes' => "This :attribute field extension must be pdf,zip,jpeg,jpg,png", ]); $validationMessage = validationErrorMessage($validate); if ($validationMessage) { return response()->json( [ 'status' => 400, 'message' => $validationMessage ] ); } $bond = Bonds::where('id', $request->bond_id)->update([ 'issuer' => $request->issuer, 'geographic_focus' => $request->geographic_focus, 'bond_type' => $request->bond_type, 'about_issuer' => $request->about_issuer, 'industry' => $request->industry, 'country_of_risk' => $request->country_of_risk, 'country_of_incorporation' => $request->country_of_incorporation, 'isin' => $request->isin, 'bond_type_or_maturity_date' => $request->bond_type_or_maturity_date, 'call_date' => $request->call_date, 'coupon' => $request->coupon, 'indicative_yield_pa_mid' => $request->indicative_yield_pa_mid, 'indicative_price_us_mid' => $request->indicative_price_us_mid, 'minimum_investment' => $request->minimum_investment, 'construction_status' => $request->construction_status, 'yield_to_worst_pa_ask' => $request->yield_to_worst_pa_ask, 'yield_to_worst_pa_bid' => $request->yield_to_worst_pa_bid, 'price_ask' => $request->price_ask, 'price_bid' => $request->price_bid, 'accrued_interest' => $request->accrued_interest, 'yield_to_call' => $request->yield_to_call, 'duration' => $request->duration, 'amount_outstanding' => $request->amount_outstanding, 'collateral_type' => $request->collateral_type, 'credit_rating' => $request->credit_rating, ]); $product = Product::where('id', $request->product_bond_id)->first(); // dd($product); if ($request->has('presentation')) { if (\File::exists(public_path('/uploads/product/presentation/' . $product->presentation))) { \File::delete(public_path('/uploads/product/presentation/' . $product->presentation)); } $productpresentation = time() . '_presentation' . '.' . $request->presentation->extension(); $request->presentation->move(public_path('/uploads/product/presentation'), $productpresentation); $updatepresentation = Product::where('id', $request->product_bond_id)->update([ 'presentation' => $productpresentation, ]); } if ($request->has('fact_sheet')) { if (\File::exists(public_path('/uploads/product/fact_sheet/' . $product->fact_sheet))) { \File::delete(public_path('/uploads/product/fact_sheet' . $product->fact_sheet)); } $productfactsheet = time() . '_factsheet' . '.' . $request->fact_sheet->extension(); $request->fact_sheet->move(public_path('uploads/product/fact_sheet'), $productfactsheet); $updatefactsheet = Product::where('id', $request->product_bond_id)->update([ 'fact_sheet' => $productfactsheet, ]); } $updateType = Product::where('id', $request->product_bond_id)->update(['type' => $request->type]); return response()->json(['status' => 200, 'message' => 'Bond Updated Successfully']); } public function uploadFunds() { $id = basename(request()->path()); $exchangeData = [ 1 => ['id' => Category::GlobalMutualFundId, 'file' => 'InternationalMutualFundsTemplate'], 2 => ['id' => Category::GlobalVentureCapitalFundId, 'file' => 'InternationalVentureCapitalFundTemplate'], 3 => ['id' => Category::GlobalPrivateEquityFundId, 'file' => 'InternationalPrivateEquityFundTemplate'], 4 => ['id' => Category::GlobalVentureDebtId, 'file' => 'RealEstateInvestmentTrustsTemplate'], 5 => ['id' => Category::GlobalHedgeFundId, 'file' => 'InternationalHedgeFundTemplate'], 6 => ['id' => Category::GlobalPrivateCreditFundId, 'file' => 'InternationalPrivateCreditFundTemplate'], ]; if (!array_key_exists($id, $exchangeData)) { abort(404); } $category = Category::find($exchangeData[$id]['id']); $category_id = $category->id; $text = $category->category_name; $excelName = $exchangeData[$id]['file']; return view('Admin.Pages.manage_freeu_investment.upload-product.funds', compact('text', 'category_id', 'excelName')); } public function uploadFundFile(Request $request) { request()->validate([ 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' ]); $category_type = $request->category_id; Excel::import(new FundImport($category_type), $request->file('productFile')); return redirect()->route('manage.products')->with('success', 'Funds Imported Successfully.'); } public function viewFund($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')); } public function editFundProduct($id) { $companies = Company::active()->pluck('company_name', 'id'); // $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); // dd($fund); return view('Admin.Pages.manage_freeu_investment.edit-product.funds', compact('fund','companies')); } public function updateFundProduct(Request $request) { // dd($request->all()); // $request->validate([ // 'issuer' => 'required' // ]); $validate = Validator::make($request->all(), [ 'issuer' => 'required', 'presentation' => "mimes:pdf,zip,jpeg,jpg,png", 'fact_sheet' => "mimes:pdf,zip,jpeg,jpg,png", 'type' => 'required', 'geographic_focus' => 'required', ], [ 'required' => "This :attribute field is required", 'mimes' => "This :attribute field extension must be pdf,zip,jpeg,jpg,png" ]); $validationMessage = validationErrorMessage($validate); if ($validationMessage) { return response()->json( [ 'status' => 400, 'message' => $validationMessage ] ); } $count = Fund::where('issuer', $request->issuer)->count(); $fund = Fund::where('id', $request->fund_id)->update([ 'issuer' => $request->issuer, 'slug' => $count < 2 ? Str::slug($request->issuer) : Str::slug($request->issuer).'-'.$count+1, 'fund_name' => $request->fund_name, 'geographic_focus' => $request->geographic_focus, 'fund_type' => $request->fund_type, 'platform_partner' =>$request->companies_id, 'about_issuer' => $request->about_issuer, 'fund_description' => $request->description, 'sharpe_ratio' => $request->sharpe_ratio, 'annualized_volatility' => $request->annualized_volatility, 'max_dropdown' => $request->max_dropdown, 'isin' => $request->isin, 'inception_date' => $request->inception_date, 'fund_aum' => $request->fund_aum, 'expense_ratio' => $request->expense_ratio, 'nav_per_unit' => $request->nav_per_unit, 'minimum_investment' => $request->minimum_investment, 'ytd' => $request->ytd, 'year1_return' => $request->year1_return, 'year3_return' => $request->year3_return, ]); $product = Product::where('id', $request->product_fund_id)->first(); // dd($product); if ($request->has('presentation')) { if (\File::exists(public_path('/uploads/product/presentation/' . $product->presentation))) { \File::delete(public_path('/uploads/product/presentation/' . $product->presentation)); } $productpresentation = time() . '_presentation' . '.' . $request->presentation->extension(); $request->presentation->move(public_path('/uploads/product/presentation'), $productpresentation); $updatepresentation = Product::where('id', $request->product_fund_id)->update([ 'presentation' => $productpresentation, ]); } if ($request->has('fact_sheet')) { if (\File::exists(public_path('/uploads/product/fact_sheet/' . $product->fact_sheet))) { \File::delete(public_path('/uploads/product/fact_sheet' . $product->fact_sheet)); } $productfactsheet = time() . '_factsheet' . '.' . $request->fact_sheet->extension(); $request->fact_sheet->move(public_path('uploads/product/fact_sheet'), $productfactsheet); $updatefactsheet = Product::where('id', $request->product_fund_id)->update([ 'fact_sheet' => $productfactsheet, ]); } if ($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); $images = 'assets/uploads/fund_images/' . $filename; $fund = new ProductImage(); $fund->product_xid = $request->product_fund_id; $fund->images = $images; $fund->save(); } } $imagesToRemove = $request->input('images_to_remove')[0]; // dd($imagesToRemove); if (!empty($imagesToRemove)) { $imagesToRemoveJson = $request->input('images_to_remove')[0]; $imagesToRemove = json_decode($imagesToRemoveJson); foreach ($imagesToRemove as $imageId) { $userFile = ProductImage::find($imageId); if ($userFile) { $file_path = public_path($userFile->images); if (file_exists($file_path)) { unlink($file_path); } // Delete the record from the database $userFile->delete(); } } } $fund = Fund::find($request->fund_id); $type = Product::where('id', $fund->products_id)->update(['type' => $request->type,'description'=> $request->description]); return response()->json(['status' => 200, 'message' => 'Fund Updated Successfully']); } 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()); } public function uploadExchange() { $id = basename(request()->path()); $exchangeData = [ 1 => ['id' => Category::EquitiesId, 'file' => 'InternationalEquitiesTemplate'], 2 => ['id' => Category::ExchangeTradedFundsId, 'file' => 'ExchangeTradedFundsTemplate'], 3 => ['id' => Category::RealEstateInvestmentTrustsId, 'file' => 'RealEstateInvestmentTrustsTemplate'], ]; if (!array_key_exists($id, $exchangeData)) { abort(404); } $category = Category::find($exchangeData[$id]['id']); $category_id = $category->id; $text = $category->category_name; $excelName = $exchangeData[$id]['file']; return view('Admin.Pages.manage_freeu_investment.upload-product.exchange', compact('text', 'category_id', 'excelName')); } public function uploadExchangeFile(Request $request) { request()->validate([ 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' ]); $category_type = $request->category_id; Excel::import(new StockFundsRealEstateExchangeImport($category_type), $request->file('productFile')); return redirect()->route('manage.products')->with('success', 'Exchange Imported Successfully.'); } public function viewExchange($id) { // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $exchange = Product::with('category', 'exchanges')->exchanges()->find($id); // dd($exchange); return view('Admin.Pages.manage_freeu_investment.view-product.stock-fund-real-estate-exchange', compact('exchange')); } public function editExchangeProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $exchange = Product::with('category', 'exchanges')->exchanges()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.exchange', compact('exchange')); } public function updateExchangeProduct(Request $request) { // $request->validate([ // 'name' => 'required' // ]); $validate = Validator::make($request->all(), [ 'name' => 'required', 'presentation' => "mimes:pdf,zip,jpeg,jpg,png", 'fact_sheet' => "mimes:pdf,zip,jpeg,jpg,png", 'type' => 'required', 'geographic_focus' => 'required', ], [ 'required' => "This :attribute field is required", 'mimes' => "This :attribute field extension must be pdf,zip,jpeg,jpg,png" ]); $validationMessage = validationErrorMessage($validate); if ($validationMessage) { return response()->json( [ 'status' => 400, 'message' => $validationMessage ] ); } $count = StockFundsRealEstateExchange::where('name',$request->name)->count(); $exchange = StockFundsRealEstateExchange::where('id', $request->exchange_id)->update([ 'name' => $request->name, // 'companies_id' => $request->companies_id, 'slug' => $count < 2 ? Str::slug($request->name) : Str::slug($request->name).'-'.$count+1, 'ticker' => $request->ticker, 'geographic_focus' => $request->geographic_focus, 'exchange' => $request->exchange, 'about' => $request->about, 'industry' => $request->industry, 'market_cap' => $request->market_cap, 'pe_ratio' => $request->pe_ratio, 'dividend_yield' => $request->dividend_yield, 'beta' => $request->beta, 'provider' => $request->provider, 'category' => $request->category, 'expense_ratio' => $request->expense_ratio, 'month1_return' => $request->month1_return, 'month6_return' => $request->month6_return, 'year1_return' => $request->year1_return, 'year3_return' => $request->year3_return, ]); $product = Product::where('id', $request->product_exchange_id)->first(); // dd($product); if ($request->has('presentation')) { if (\File::exists(public_path('/uploads/product/presentation/' . $product->presentation))) { \File::delete(public_path('/uploads/product/presentation/' . $product->presentation)); } $productpresentation = time() . '_presentation' . '.' . $request->presentation->extension(); $request->presentation->move(public_path('/uploads/product/presentation'), $productpresentation); $updatepresentation = Product::where('id', $request->product_exchange_id)->update([ 'presentation' => $productpresentation, ]); } if ($request->has('fact_sheet')) { if (\File::exists(public_path('/uploads/product/fact_sheet/' . $product->fact_sheet))) { \File::delete(public_path('/uploads/product/fact_sheet' . $product->fact_sheet)); } $productfactsheet = time() . '_factsheet' . '.' . $request->fact_sheet->extension(); $request->fact_sheet->move(public_path('uploads/product/fact_sheet'), $productfactsheet); $updatefactsheet = Product::where('id', $request->product_exchange_id)->update([ 'fact_sheet' => $productfactsheet, ]); } $exchange = StockFundsRealEstateExchange::find($request->exchange_id); $type = Product::where('id', $exchange->products_id)->update(['type' => $request->type]); return response()->json(['status' => 200, 'message' => 'Exchange Details Updated Successfully']); } public function uploadRealEstate() { $id = basename(request()->path()); $realEstateData = [ 1 => ['id' => Category::IndianResidentialRealEstateID, 'file' => 'IndianResidentialRealEstateTemplate'], 2 => ['id' => Category::IndianCommercialRealEstateID, 'file' => 'IndianCommercialRealEstateTemplate'], 3 => ['id' => Category::IndianIndustrialRealEstateID, 'file' => 'IndianIndustrialRealEstateTemplate'], 4 => ['id' => Category::GlobalResidentialRealEstateID, 'file' => 'InternationalResidentialRealEstateTemplate'], 5 => ['id' => Category::GlobalCommercialRealEstateID, 'file' => 'InternationalCommercialRealEstateTemplate'], 6 => ['id' => Category::GlobalIndustrialRealEstateID, 'file' => 'InternationalIndustrialRealEstateTemplate'] ]; if (!array_key_exists($id, $realEstateData)) { abort(404); } $category = Category::find($realEstateData[$id]['id']); $category_id = $category->id; $text = $category->category_name; $excelName = $realEstateData[$id]['file']; // if ($id == 1) { // $text = 'Indian Residential Real Estate'; // $category_id = 17; // } else if ($id == 2) { // $text = 'Indian Commercial Real Estate'; // $category_id = 18; // } else if ($id == 3) { // $text = 'Indian Industrial Real Estate'; // $category_id = 19; // } else if ($id == 4) { // $text = 'Global Residential Real Estate'; // $category_id = 20; // } else if ($id == 5) { // $text = 'Global Commercial Real Estate'; // $category_id = 21; // } else if ($id == 6) { // $text = 'Global Industrial Real Estate'; // $category_id = 22; // } return view('Admin.Pages.manage_freeu_investment.upload-product.real-estate', compact('text', 'category_id', 'excelName')); } public function uploadRealEstateFile(Request $request) { request()->validate([ 'productFile' => 'required|mimes:xlx,xls,xlsx|max:2048' ]); $category_type = $request->category_id; Excel::import(new RealEstateImport($category_type), $request->file('productFile')); return redirect()->route('manage.products')->with('success', 'Real Estate Imported Successfully.'); } 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); // dd($products); return view('Admin.Pages.manage_freeu_investment.view-product.real-estate', compact('products')); } public function editRealEstateProduct($id) { $companies = Company::active()->pluck('company_name', 'id'); // dd($companies); $categories = Category::all(); $products = Product::with('category','realEstates', 'product_images')->realestates()->find($id); // dd($products); return view('Admin.Pages.manage_freeu_investment.edit-product.real-estate', compact('products', 'categories','companies')); } public function updateRealEstateProduct(Request $request) { // dd($request->all()); // $request->validate([ // 'property_name' => 'required' // ]); $validate = Validator::make($request->all(), [ 'property_name' => 'required', 'presentation' => "mimes:pdf,zip", 'fact_sheet' => "mimes:pdf,zip", 'type' => 'required', 'geographic_focus' => 'required', ], [ 'required' => "This :attribute field is required", 'mimes' => "This :attribute field extension must be pdf,zip,jpeg,jpg,png" ]); $validationMessage = validationErrorMessage($validate); if ($validationMessage) { return response()->json( [ 'status' => 400, 'message' => $validationMessage ] ); } $count = RealEstate::where('property_name',$request->property_name)->count(); $realEstate = RealEstate::where('id', $request->realEstates)->update([ 'property_name' => $request->property_name, 'slug' => $count < 2 ? Str::slug($request->property_name) : Str::slug($request->property_name).'-'.$count+1, 'platform_partner' => $request->companies_id, 'geographic_focus' => $request->geographic_focus, 'price_per_sq_ft' => $request->price_per_sq_ft, 'property_location' => $request->property_location, 'project_type' => $request->project_type, 'current_status' => $request->current_status, 'booking_amount' => $request->booking_amount, 'price_range' => $request->price_range, 'total_price' => $request->total_price, 'transaction_type' => $request->transaction_type, 'project_code_or_rera_id' => $request->project_code_or_rera_id, 'built_up_area' => $request->built_up_area, 'carpet_area' => $request->carpet_area, 'area_in_sq_ft' => $request->area_in_sq_ft, 'construction_status' => $request->construction_status, 'launch_date' => $request->launch_date, 'completed_in' => $request->completed_in, 'total_units' => $request->total_units, 'unit_type' => $request->unit_type, 'no_of_bedrooms' => $request->no_of_bedrooms, 'no_of_restrooms' => $request->no_of_restrooms, 'no_of_floors' => $request->no_of_floors, 'furnished_status' => $request->furnished_status, 'commencement_certificate' => $request->commencement_certificate, 'occupancy_certificate' => $request->occupancy_certificate, 'total_towers' => $request->total_towers, 'builder_details' => $request->builder_details, 'landmarks' => $request->landmarks, 'amenities' => $request->amenities, 'elevators' => $request->elevators, 'car_parking' => $request->car_parking, 'electricity_status' => $request->electricity_status, 'fire_safety_measures' => $request->fire_safety_measures, 'water_facility' => $request->water_facility, 'price_negotiable' => $request->price_negotiable, 'maintenance_fees' => $request->maintenance_fees, 'nearest_railway_metro_station' => $request->nearest_railway_metro_station, 'pre_leased' => $request->pre_leased, 'tenant_details' => $request->tenant_details, 'facilities_features' => $request->facilities_features, 'construction_age' => $request->construction_age, 'country' => $request->country, 'location' => $request->location, 'remarks' => $request->remarks, ]); $estate = RealEstate::find($request->realEstates); $type = Product::where('id', $estate->products_id)->update(['type' => $request->type, 'description'=>$request->description]); $photos = $request->photos; $documents = $request->documents; if ($photos) { $this->uploadPhotosDocuments($photos, $request->realEstates, ProductPhotoDocuments::Photos); } if ($documents) { $this->uploadPhotosDocuments($documents, $request->realEstates, ProductPhotoDocuments::Documents); } $product = Product::where('id', $request->product_realestate_id)->first(); // dd($product); if ($request->has('presentation')) { if (\File::exists(public_path('/uploads/product/presentation/' . $product->presentation))) { \File::delete(public_path('/uploads/product/presentation/' . $product->presentation)); } $productpresentation = time() . '_presentation' . '.' . $request->presentation->extension(); $request->presentation->move(public_path('/uploads/product/presentation'), $productpresentation); $updatepresentation = Product::where('id', $request->product_realestate_id)->update([ 'presentation' => $productpresentation, ]); } if ($request->has('fact_sheet')) { if (\File::exists(public_path('/uploads/product/fact_sheet/' . $product->fact_sheet))) { \File::delete(public_path('/uploads/product/fact_sheet' . $product->fact_sheet)); } $productfactsheet = time() . '_factsheet' . '.' . $request->fact_sheet->extension(); $request->fact_sheet->move(public_path('uploads/product/fact_sheet'), $productfactsheet); $updatefactsheet = Product::where('id', $request->product_realestate_id)->update([ 'fact_sheet' => $productfactsheet, ]); } if ($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/real-estate_images'), $filename); $images = 'assets/uploads/real-estate_images/' . $filename; $realEstate = new ProductImage(); $realEstate->product_xid = $request->product_realestate_id; $realEstate->images = $images; $realEstate->save(); } } return response()->json(['status' => 200, 'message' => 'Real Estate Updated Successfully']); } public function uploadPhotosDocuments($documents, $realEstateID, $type) { $folder = $type == 0 ? 'photos' : 'documents'; if ($documents) { $photosDocuments = ProductPhotoDocuments::where([ 'type' => $type, 'real_estates_id' => $realEstateID ])->get(); if ($photosDocuments) { foreach ($photosDocuments as $delete) { if (\File::exists(public_path("/uploads/real_estate/$folder/" . $delete->file_name . ""))) { \File::delete(public_path("/uploads/real_estate/$folder/" . $delete->file_name . "")); } ProductPhotoDocuments::find($delete->id)->delete(); } }; $no = 1; foreach ($documents as $document) { $photosDocumentsStorageName = time() . '.' . $folder . $no . $document->extension(); $document->move(public_path("/uploads/real_estate/$folder"), $photosDocumentsStorageName); $addPhotosDocuments = ProductPhotoDocuments::create([ 'type' => $type, 'real_estates_id' => $realEstateID, 'file_name' => $photosDocumentsStorageName, ]); $no++; } } } public function uploadIFA() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.indian-financial-assets', compact('text', 'category_id')); } public function uploadIFAFile(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 IndianFinancialAssetsImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewIndianFinancialAssets($id) { // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $ifa = Product::with('category', 'indianFinancialAssets')->indianFinancialAssets()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.indian-financial-assets', compact('ifa')); } public function editIndianFinancialAssetsProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $ifa = Product::with('category', 'indianFinancialAssets')->indianFinancialAssets()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.indian-financial-assets', compact('ifa')); } public function updateIndianFinancialAssetsProduct(Request $request) { $request->validate([ 'product_name' => 'required' ]); $ifa = IndianFinancialAssets::where('id', $request->ifa_id)->update([ 'product_name' => $request->product_name, // 'companies_id' => $request->companies_id, 'investment_platform' => $request->investment_platform, 'counter_party' => $request->counter_party, 'investment_date' => $request->investment_date, 'amount_invested' => $request->amount_invested, 'total_gross_repaid_amount' => $request->total_gross_repaid_amount, 'tenure' => $request->tenure, 'principal_payment_frequency' => $request->principal_payment_frequency, 'interest_payment_frequency' => $request->interest_payment_frequency, 'next_repayment_due_date' => $request->next_repayment_due_date, 'maturity_date' => $request->maturity_date, 'next_repayment_amount' => $request->next_repayment_amount, 'expected_irr' => $request->expected_irr, ]); return response()->json(['status' => 200, 'message' => 'Indian Financial Assets Details Updated Successfully']); } public function uploadPeerToPeer() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.peer-to-peer-lending', compact('text', 'category_id')); } public function uploadPeerToPeerFile(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 PeerToPeerLendingImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewPeerToPeerAssets($id) { $p2p = Product::with('category', 'peerToPeers')->peerToPeers()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.peer-to-peer-lending', compact('p2p')); } public function editPeerToPeerProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $p2p = Product::with('category', 'peerToPeers')->peerToPeers()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.peer-to-peer-lending', compact('p2p')); } public function updatePeerToPeerLendingProduct(Request $request) { $request->validate([ 'scheme' => 'required' ]); $p2p = PeerToPeerLending::where('id', $request->p2p_id)->update([ 'scheme' => $request->scheme, 'slug' => Str::slug($request->scheme), 'tenure' => $request->tenure, 'minimum_investment' => $request->minimum_investment, 'maximum_investment' => $request->maximum_investment, 'returns' => $request->returns, ]); return response()->json(['status' => 200, 'message' => 'Peer To Peer Details Updated Successfully']); } public function uploadSecuritizedDebtInstrument() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.securitized-debt-instrument', compact('text', 'category_id')); } public function uploadSecuritizedDebtInstrumentFile(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 SecuritizedDebtInstrumentImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewSecuritizedDebtInstrumentAssets($id) { $securitizedDebtInstrument = Product::with('category', 'securitizedDebtInstruments')->securitizedDebtInstruments()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.securitized-debt-instrument', compact('securitizedDebtInstrument')); } public function editSecuritizedDebtInstrumentProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $securitizedDebtInstrument = Product::with('category', 'securitizedDebtInstruments')->securitizedDebtInstruments()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.securitized-debt-instrument', compact('securitizedDebtInstrument')); } public function updateSecuritizedDebtInstrumentProduct(Request $request) { $request->validate([ 'product_name' => 'required' ]); $securitizedDebtInstrument = SecuritizedDebtInstrument::where('id', $request->sdi_id)->update([ 'product_name' => $request->product_name, 'slug' => Str::slug($request->product_name), 'total_deal_size' => $request->total_deal_size, 'minimum_investment' => $request->minimum_investment, 'credit_rating' => $request->credit_rating, 'deal_tenure' => $request->deal_tenure, 'target_irr' => $request->target_irr, 'target_multiple' => $request->target_multiple, 'payout_frequency' => $request->payout_frequency, 'principal_returned_in' => $request->principal_returned_in, 'average_annual_payback' => $request->average_annual_payback, 'security_enhancement' => $request->security_enhancement, 'listing_details' => $request->listing_details, ]); return response()->json(['status' => 200, 'message' => 'Securitized Debt Instrument Details Updated Successfully']); } public function uploadHighYieldFinance() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.high-yield-finance', compact('text', 'category_id')); } public function uploadHighYieldFinanceFile(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 HighYieldFinanceImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewHighYieldFinanceAssets($id) { $highYieldFinance = Product::with('category', 'highYieldFinances')->highYieldFinances()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.high-yield-finance', compact('highYieldFinance')); } public function editHighYieldFinanceProduct($id) { // $categories = Category::all(); // $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id); $highYieldFinance = Product::with('category', 'highYieldFinances')->highYieldFinances()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.high-yield-finance', compact('highYieldFinance')); } public function updateHighYieldFinanceProduct(Request $request) { $request->validate([ 'security_name' => 'required' ]); $highYieldFinance = HighYieldFinance::where('id', $request->hyf_id)->update([ 'security_name' => $request->security_name, 'security_type' => $request->security_type, 'isin' => $request->isin, 'issuer_company' => $request->issuer_company, 'issue_size' => $request->issue_size, 'issue_type' => $request->issue_type, 'listing_details' => $request->listing_details, 'rating_category' => $request->rating_category, 'minimum_investment' => $request->minimum_investment, 'coupon_rate' => $request->coupon_rate, 'yield_to_maturity' => $request->yield_to_maturity, 'interest_payment_frequency' => $request->interest_payment_frequency, 'allotment_date' => $request->allotment_date, 'maturity_date' => $request->maturity_date, ]); return response()->json(['status' => 200, 'message' => 'High Yield Finance Details Updated Successfully']); } public function uploadFractionalRealEstate() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.fractional-real-estate', compact('text', 'category_id')); } public function uploadFractionalRealEstateFile(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 FractionalRealEstateImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewFractionalRealEstateAssets($id) { $fractionalRealEstate = Product::with('category', 'fractional_real_estate')->fractionalrealestate()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.fractional-real-estate', compact('fractionalRealEstate')); } public function editFractionalRealEstateProduct($id) { // $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); return view('Admin.Pages.manage_freeu_investment.edit-product.fractional-real-estate', compact('fractionalRealEstate')); } public function updateFractionalRealEstateProduct(Request $request, $id) { $request->validate([ 'property_name_and_location' => 'required' ]); $fractionalRealEstate = FractionalRealEstate::where('id', $request->fre_id)->update([ 'slug' => Str::slug($request->property_name_and_location), 'property_name_and_location' => $request->property_name_and_location, 'property_description' => $request->property_description, 'property_grade' => $request->property_grade, 'asset_type' => $request->asset_type, 'tenant' => $request->tenant, 'deal_size_in_crore' => $request->deal_size_in_crore, 'coupon_rate_on_ccd' => $request->coupon_rate_on_ccd, 'rental_escalation' => $request->rental_escalation, 'capital_appreciation' => $request->capital_appreciation, 'expected_irr' => $request->expected_irr, 'cagr' => $request->cagr, 'minimum_investment' => $request->minimum_investment, 'minimum_investment_lockin' => $request->minimum_investment_lockin, 'tenant_lease_term' => $request->tenant_lease_term, 'tenant_lock_in' => $request->tenant_lock_in, 'tenant_security_deposit' => $request->tenant_security_deposit, 'annual_management_fee' => $request->annual_management_fee, 'performance_fees' => $request->performance_fees, 'hurdle_rate' => $request->hurdle_rate, ]); return response()->json(['status' => 200, 'message' => 'Fractional Real Estate Details Updated Successfully']); } public function uploadCleanAndGreenAsset() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.clean-and-green-asset', compact('text', 'category_id')); } public function uploadCleanAndGreenAssetFile(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 CleanAndGreenAssetImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewCleanAndGreenAssets($id) { $cleanAndGreenAsset = Product::with('category', 'cleanAndGreenAssets')->cleanAndGreenAssets()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.clean-and-green-asset', compact('cleanAndGreenAsset')); } public function editCleanAndGreenProduct($id) { $cleanAndGreenAsset = Product::with('category', 'cleanAndGreenAssets')->cleanAndGreenAssets()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.clean-and-green-asset', compact('cleanAndGreenAsset')); } public function updateCleanAndGreenProduct(Request $request) { $request->validate([ 'project_name' => 'required' ]); $cleanAndGreenAsset = CleanAndGreenAsset::where('id', $request->caga_id)->update([ 'slug' => Str::slug($request->project_name), 'project_name' => $request->project_name, 'focus_area' => $request->focus_area, 'asset_value' => $request->asset_value, 'asset_life' => $request->asset_life, 'entry_load' => $request->entry_load, 'lockin_period' => $request->lockin_period, 'minimum_investment' => $request->minimum_investment, 'maximum_investment' => $request->maximum_investment, 'expected_returns_irr' => $request->expected_returns_irr, 'payouts' => $request->payouts, ]); return response()->json(['status' => 200, 'message' => 'Clean And Green Asset Details Updated Successfully']); } public function uploadLeaseBasedFinancing() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.lease-based-financing', compact('text', 'category_id')); } public function uploadLeaseBasedFinancingFile(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 LeaseBasedFinancingImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewLeaseBasedFinancingAssets($id) { $leaseBasedFinancing = Product::with('category', 'leaseBasedFinancing')->leaseBasedFinancing()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.lease-based-financing', compact('leaseBasedFinancing')); } public function editLeaseBasedFinancingProduct($id) { $leaseBasedFinancing = Product::with('category', 'leaseBasedFinancing')->leaseBasedFinancing()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.lease-based-financing', compact('leaseBasedFinancing')); } public function updateLeaseBasedFinancingProduct(Request $request) { $request->validate([ 'company' => 'required' ]); $leaseBasedFinancing = LeaseBasedFinancing::where('id', $request->lbf_id)->update([ 'slug' => Str::slug($request->company), 'company' => $request->company, 'asset_class' => $request->asset_class, 'underlying_asset' => $request->underlying_asset, 'sector' => $request->sector, 'mobility_platform' => $request->mobility_platform, 'total_deal_size' => $request->total_deal_size, 'minimum_investment' => $request->minimum_investment, 'tenure' => $request->tenure, 'payout_frequency' => $request->payout_frequency, 'pre_tax_return' => $request->pre_tax_return, ]); return response()->json(['status' => 200, 'message' => 'Lease Based Financing Details Updated Successfully']); } public function uploadInvoiceDiscounting() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.invoice-discounting', compact('text', 'category_id')); } public function uploadInvoiceDiscountingFile(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 InvoiceDiscountingImport($category_type), $request->file('productFile')); return back()->with('success', "$category->category_name Imported Successfully."); } public function viewInvoiceDiscountingAssets($id) { $invoiceDiscounting = Product::with('category', 'invoiceDiscounting')->invoiceDiscounting()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.invoice-discounting', compact('invoiceDiscounting')); } public function editInvoiceDiscountingProduct($id) { $invoiceDiscounting = Product::with('category', 'invoiceDiscounting')->invoiceDiscounting()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.invoice-discounting', compact('invoiceDiscounting')); } public function updateInvoiceDiscountingProduct(Request $request) { $request->validate([ 'company_name' => 'required' ]); $invoiceDiscounting = InvoiceDiscounting::where('id', $request->id)->update([ 'slug' => Str::slug($request->company_name), 'company_name' => $request->company_name, 'sector' => $request->sector, 'about_company' => $request->about_company, 'key_performance_metrics' => $request->key_performance_metrics, 'minimum_investment' => $request->minimum_investment, 'total_deal_size' => $request->total_deal_size, 'tenure' => $request->tenure, 'pre_tax_irr' => $request->pre_tax_irr, 'coupon_rate' => $request->coupon_rate, 'vendor' => $request->vendor, 'recourse_on' => $request->recourse_on, 'settlement_date' => $request->settlement_date, 'payout_frequency' => $request->payout_frequency, 'payment_obligor' => $request->payment_obligor, 'security_structure' => $request->security_structure, ]); return response()->json(['status' => 200, 'message' => 'Invoice Discounting Details Updated Successfully']); } public function uploadAIF() { $slug = basename(request()->path()); $category = Category::where('slug', $slug)->first(); $text = $category->category_name; $category_id = $category->id; return view('Admin.Pages.manage_freeu_investment.upload-product.alternative-investment-fund', compact('text', 'category_id')); } public function uploadAIFFile(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."); } public function viewAIFAssets($id) { $alternativeInvestmentFund = Product::with('category', 'alternativeInvestmentFund')->alternativeInvestmentFund()->find($id); return view('Admin.Pages.manage_freeu_investment.view-product.alternative-investment-fund', compact('alternativeInvestmentFund')); } public function editAIFProduct($id) { $alternativeInvestmentFund = Product::with('category', 'alternativeInvestmentFund')->alternativeInvestmentFund()->find($id); return view('Admin.Pages.manage_freeu_investment.edit-product.alternative-investment-fund', compact('alternativeInvestmentFund')); } public function updateAIFProduct(Request $request) { // dd($request->all()); $request->validate([ 'fund_name' => 'required' ]); $alternativeInvestmentFund = AlternativeInvestmentFund::where('id', $request->id)->update([ 'slug' => Str::slug($request->fund_name), 'fund_name' => $request->fund_name, 'registration_number' => $request->registration_number, 'fund_category' => $request->fund_category, 'fund_structure' => $request->fund_structure, 'fund_strategy' => $request->fund_strategy, 'fund_domicile' => $request->fund_domicile, 'fund_manager_name' => $request->fund_manager_name, 'website_of_the_fund' => $request->website_of_the_fund, 'fund_manager_experience' => $request->fund_manager_experience, 'sponsor' => $request->sponsor, 'manager' => $request->manager, 'trustee' => $request->trustee, 'auditor' => $request->auditor, 'valuer_tax_advisor' => $request->valuer_tax_advisor, 'credit_rating' => $request->credit_rating, 'open_date' => $request->open_date, 'first_close_date' => $request->first_close_date, 'final_close_date' => $request->final_close_date, 'tenure_from_final_date' => $request->tenure_from_final_date, 'commitment_period' => $request->commitment_period, 'native_currency' => $request->native_currency, 'target_corpus' => $request->target_corpus, 'investment_manager_contribution' => $request->investment_manager_contribution, 'minimum_capital_commitment' => $request->minimum_capital_commitment, 'intial_drawdown' => $request->intial_drawdown, 'accepting_overseas_investment' => $request->accepting_overseas_investment, 'target_irr' => $request->target_irr, 'management_fees_and_carry' => $request->management_fees_and_carry, 'hurdle_rate' => $request->hurdle_rate, 'other_expenses' => $request->other_expenses, 'focused_sectors_industries' => $request->focused_sectors_industries, 'regions_covered' => $request->regions_covered, 'isin_code' => $request->isin_code, 'focused_real_estate_sectors' => $request->focused_real_estate_sectors, 'rera_complied_property' => $request->rera_complied_property, 'return_on_investment' => $request->return_on_investment, 'valuation_per_sector' => $request->valuation_per_sector, 'focused_funds' => $request->focused_funds, 'trading_strategy' => $request->trading_strategy, 'involved_in_short_selling' => $request->involved_in_short_selling, 'minimum_investment'=> $request->min_investment, ]); return response()->json(['status' => 200, 'message' => 'Alternative Investment Fund Details Updated Successfully']); } }