2024-03-28 14:52:40 +05:30
< ? php
namespace App\Http\Controllers\Admin ;
use App\Http\Controllers\Controller ;
use App\Imports\AlternativeInvestmentFundImport ;
use App\Imports\BondImport ;
use App\Imports\CleanAndGreenAssetImport ;
use App\Imports\FundImport ;
use App\Imports\StockFundsRealEstateExchangeImport ;
2024-04-10 17:28:41 +05:30
use App\Models\VentureDebt ;
2024-03-28 14:52:40 +05:30
use Illuminate\Http\Request ;
use Illuminate\Support\Facades\DB ;
use Maatwebsite\Excel\Facades\Excel ;
use App\Imports\FractionalRealEstateImport ;
use App\Imports\HighYieldFinanceImport ;
use App\Imports\IndianFinancialAssetsImport ;
use App\Imports\InvoiceDiscountingImport ;
use App\Imports\LeaseBasedFinancingImport ;
use App\Imports\RealEstateImport ;
use App\Imports\PeerToPeerLendingImport ;
use App\Imports\SecuritizedDebtInstrumentImport ;
use App\Models\Product ;
use App\Models\Category ;
use App\Models\FractionalRealEstate ;
use App\Models\RealEstate ;
use App\Models\Fund ;
use App\Models\Bonds ;
2024-04-04 19:43:26 +05:30
use App\Models\ProductImage ;
2024-03-28 14:52:40 +05:30
use App\Models\CleanAndGreenAsset ;
use App\Models\IndianFinancialAssets ;
use App\Models\PeerToPeerLending ;
use App\Models\HighYieldFinance ;
use App\Models\InvoiceDiscounting ;
use App\Models\LeaseBasedFinancing ;
use App\Models\SecuritizedDebtInstrument ;
use App\Models\StockFundsRealEstateExchange ;
use App\Models\AlternativeInvestmentFund ;
use Illuminate\Support\Str ;
use App\Models\ProductPhotoDocuments ;
use Illuminate\Support\Facades\Validator ;
class ManageFreeUInvestmentController extends Controller
{
public function index ()
{
2024-04-09 17:56:07 +05:30
$check = checkSidebarAccess ( 'manage-product' );
if ( ! $check ) {
abort ( 404 );
}
2024-03-28 14:52:40 +05:30
$products = Product :: query ()
2024-04-02 19:16:10 +05:30
-> 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' )
2024-03-28 14:52:40 +05:30
-> 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' )
2024-04-02 19:16:10 +05:30
-> leftJoin ( 'real_estates as re' , 'products.id' , 're.products_id' )
-> leftJoin ( 'funds' , 'products.id' , 'funds.products_id' )
2024-03-28 14:52:40 +05:30
-> 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());
$product = Product :: where ( 'id' , $request -> id ) -> delete ();
2024-04-10 17:28:41 +05:30
// $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 ();
}
2024-03-28 14:52:40 +05:30
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 back () -> 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' ,
2024-04-16 15:17:56 +05:30
'presentation' => " mimes:pdf,zip,jpeg,jpg,png " ,
'fact_sheet' => " mimes:pdf,zip,jpeg,jpg,png " ,
2024-03-28 14:52:40 +05:30
'type' => 'required' ,
'geographic_focus' => 'required' ,
], [
'required' => " This :attribute field is required " ,
'mimes' => " This :attribute field extension must be pdf or zip " ,
]);
$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' ],
2024-04-11 16:35:06 +05:30
6 => [ 'id' => Category :: GlobalPrivateCreditFundId , 'file' => 'InternationalPrivateCreditFundTemplate' ],
2024-03-28 14:52:40 +05:30
];
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 back () -> with ( 'success' , 'Funds Imported Successfully.' );
}
public function viewFund ( $id )
{
2024-04-05 19:30:15 +05:30
$fund = Product :: with ( 'category' , 'funds.returns' , 'product_images' ) -> funds () -> find ( $id );
2024-03-28 14:52:40 +05:30
// dd($fund);
return view ( 'Admin.Pages.manage_freeu_investment.view-product.funds' , compact ( 'fund' ));
}
public function editFundProduct ( $id )
{
// $categories = Category::all();
// $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id);
2024-04-05 19:30:15 +05:30
$fund = Product :: with ( 'category' , 'funds.returns' , 'product_images' ) -> funds () -> find ( $id );
2024-04-04 19:43:26 +05:30
// dd($fund);
2024-03-28 14:52:40 +05:30
return view ( 'Admin.Pages.manage_freeu_investment.edit-product.funds' , compact ( 'fund' ));
}
public function updateFundProduct ( Request $request )
{
// dd($request->all());
// $request->validate([
// 'issuer' => 'required'
// ]);
$validate = Validator :: make ( $request -> all (), [
'issuer' => 'required' ,
2024-04-16 15:17:56 +05:30
'presentation' => " mimes:pdf,zip,jpeg,jpg,png " ,
'fact_sheet' => " mimes:pdf,zip,jpeg,jpg,png " ,
2024-03-28 14:52:40 +05:30
'type' => 'required' ,
'geographic_focus' => 'required' ,
], [
'required' => " This :attribute field is required " ,
'mimes' => " This :attribute field extension must be pdf or zip " ,
]);
$validationMessage = validationErrorMessage ( $validate );
if ( $validationMessage ) {
return response () -> json (
[
'status' => 400 ,
'message' => $validationMessage
]
);
}
2024-04-12 17:47:47 +05:30
$count = Fund :: where ( 'issuer' , $request -> issuer ) -> count ();
2024-03-28 14:52:40 +05:30
$fund = Fund :: where ( 'id' , $request -> fund_id ) -> update ([
'issuer' => $request -> issuer ,
2024-04-12 17:47:47 +05:30
'slug' => $count < 2 ? Str :: slug ( $request -> issuer ) : Str :: slug ( $request -> issuer ) . '-' . $count + 1 ,
2024-03-28 14:52:40 +05:30
'fund_name' => $request -> fund_name ,
'geographic_focus' => $request -> geographic_focus ,
'fund_type' => $request -> fund_type ,
'about_issuer' => $request -> about_issuer ,
'fund_description' => $request -> fund_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 ,
]);
}
2024-04-04 19:43:26 +05:30
if ( $request -> hasFile ( 'images' )) {
2024-04-05 19:30:15 +05:30
// dd($request->hasFile('images'));
2024-04-04 19:43:26 +05:30
// $edit_program_images = ProgramImage::where('programs_xid', $program_id)->delete();
2024-04-05 19:30:15 +05:30
2024-04-04 19:43:26 +05:30
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 ();
}
}
}
2024-03-28 14:52:40 +05:30
$fund = Fund :: find ( $request -> fund_id );
$type = Product :: where ( 'id' , $fund -> products_id ) -> update ([ 'type' => $request -> type ]);
return response () -> json ([ 'status' => 200 , 'message' => 'Fund Updated Successfully' ]);
}
2024-04-05 19:30:15 +05:30
public function delete_fund_image ( Request $request )
{
2024-04-04 19:43:26 +05:30
$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 ]);
2024-04-05 19:30:15 +05:30
// dd("requ",$request->all());
2024-04-04 19:43:26 +05:30
}
2024-03-28 14:52:40 +05:30
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 back () -> 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' ,
2024-04-16 15:17:56 +05:30
'presentation' => " mimes:pdf,zip,jpeg,jpg,png " ,
'fact_sheet' => " mimes:pdf,zip,jpeg,jpg,png " ,
2024-03-28 14:52:40 +05:30
'type' => 'required' ,
'geographic_focus' => 'required' ,
], [
'required' => " This :attribute field is required " ,
'mimes' => " This :attribute field extension must be pdf or zip " ,
]);
$validationMessage = validationErrorMessage ( $validate );
if ( $validationMessage ) {
return response () -> json (
[
'status' => 400 ,
'message' => $validationMessage
]
);
}
2024-04-12 17:47:47 +05:30
$count = StockFundsRealEstateExchange :: where ( 'name' , $request -> name ) -> count ();
2024-03-28 14:52:40 +05:30
$exchange = StockFundsRealEstateExchange :: where ( 'id' , $request -> exchange_id ) -> update ([
'name' => $request -> name ,
// 'companies_id' => $request->companies_id,
2024-04-12 17:47:47 +05:30
'slug' => $count < 2 ? Str :: slug ( $request -> name ) : Str :: slug ( $request -> name ) . '-' . $count + 1 ,
2024-03-28 14:52:40 +05:30
'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 back () -> with ( 'success' , 'Real Estate Imported Successfully.' );
}
public function viewRealEstate ( $id )
{
// $products = Product::with('category', 'fractional_real_estate.companies')->fractionalrealestate()->find($id);
2024-04-05 19:30:15 +05:30
$products = Product :: with ( 'category' , 'realEstates' , 'product_images' ) -> realestates () -> find ( $id );
2024-03-28 14:52:40 +05:30
// dd($products);
return view ( 'Admin.Pages.manage_freeu_investment.view-product.real-estate' , compact ( 'products' ));
}
public function editRealEstateProduct ( $id )
{
$categories = Category :: all ();
2024-04-05 19:30:15 +05:30
$products = Product :: with ( 'category' , 'realEstates' , 'product_images' ) -> realestates () -> find ( $id );
2024-03-28 14:52:40 +05:30
return view ( 'Admin.Pages.manage_freeu_investment.edit-product.real-estate' , compact ( 'products' , 'categories' ));
}
public function updateRealEstateProduct ( Request $request )
{
// dd($request->all());
// $request->validate([
// 'property_name' => 'required'
// ]);
$validate = Validator :: make ( $request -> all (), [
'property_name' => 'required' ,
2024-04-16 15:17:56 +05:30
'presentation' => " mimes:pdf,zip " ,
'fact_sheet' => " mimes:pdf,zip " ,
2024-03-28 14:52:40 +05:30
'type' => 'required' ,
'geographic_focus' => 'required' ,
], [
'required' => " This :attribute field is required " ,
'mimes' => " This :attribute field extension must be pdf or zip " ,
]);
$validationMessage = validationErrorMessage ( $validate );
if ( $validationMessage ) {
return response () -> json (
[
'status' => 400 ,
'message' => $validationMessage
]
);
}
2024-04-12 17:47:47 +05:30
$count = RealEstate :: where ( 'property_name' , $request -> property_name ) -> count ();
2024-03-28 14:52:40 +05:30
$realEstate = RealEstate :: where ( 'id' , $request -> realEstates ) -> update ([
'property_name' => $request -> property_name ,
2024-04-12 17:47:47 +05:30
'slug' => $count < 2 ? Str :: slug ( $request -> property_name ) : Str :: slug ( $request -> property_name ) . '-' . $count + 1 ,
2024-03-28 14:52:40 +05:30
// 'companies_id' => $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 ,
'remarks' => $request -> remarks ,
]);
$estate = RealEstate :: find ( $request -> realEstates );
$type = Product :: where ( 'id' , $estate -> products_id ) -> update ([ 'type' => $request -> type ]);
$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 ,
]);
}
2024-04-04 19:43:26 +05:30
if ( $request -> hasFile ( 'images' )) {
// dd($request->hasFile('images'));
2024-04-05 19:30:15 +05:30
// $edit_program_images = ProgramImage::where('programs_xid', $program_id)->delete();
2024-04-04 19:43:26 +05:30
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 ();
}
}
2024-03-28 14:52:40 +05:30
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);
2024-04-05 19:30:15 +05:30
$fractionalRealEstate = Product :: with ( 'category' , 'fractional_real_estate' , 'product_images' ) -> fractionalrealestate () -> find ( $id );
2024-03-28 14:52:40 +05:30
return view ( 'Admin.Pages.manage_freeu_investment.edit-product.fractional-real-estate' , compact ( 'fractionalRealEstate' ));
}
2024-04-05 19:30:15 +05:30
public function updateFractionalRealEstateProduct ( Request $request , $id )
2024-03-28 14:52:40 +05:30
{
$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 ,
2024-04-04 19:43:26 +05:30
2024-03-28 14:52:40 +05:30
]);
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 )
{
$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 ,
]);
return response () -> json ([ 'status' => 200 , 'message' => 'Alternative Investment Fund Details Updated Successfully' ]);
}
}